jueves, 18 de noviembre de 2010

Punteros (Lab)

Los punteros son variables de tipo dinámico que apuntan a una dirección de memoria de otra variable, por lo cual tenemos acceso a ella.
Declaración de un puntero
tipo de variable *nombre-puntero;


int *rober;
double *ramon;
char *cecy;


Cuando ponemos estas declaraciones decimos al compilador que le "haga espacio" a la dirección de una variables según su tipo, con la cual lo tendrá el nombre que le pusimos al puntero.


por ejemplo
int rober; //declaro y hago memoria a una variable entera
int *puntero_de_rober;  //puntero
puntero_de_rober = &rober;  // se escribe la direccion de 
//memoria donde esta la variable rober


por si no lo sabían :P cuando ponemos &rober; implica que es la dirección de la variable.


Podemos decir esquemáticamente que cada variable tiene esto:


rober
  • Dirección de rober XXXX
  • posicion de memoria ocupada por puntero_de_rober YYYY
  • valor contenido de rober
  • posicion de memoria ocupada por rober XXXX
  • implicitamente tambien el tamaño en bytes de la variable
El símbolo & dirección, puede aplicarse en variables, funciones, menos en constantes o expresiones porque estas no tienen una posición asignada.


La operación inversa de la asignación de un puntero, se puede utilizar para saber cual es el valor de la variable apuntada ejemplo:


x = rober;
x = *puntero_de_rober;

printf("%d", rober );
printf("%d", *puntero_de_rober);


Otro ejemplo


#include < stdio.h >
int main(int argc, char** args){
    char hola; //variable caracter
    char *phola; //puntero a variable
    phola = &hola; //se asigna al puntero la direccion

    for(hola ='a'; hola <='z'; hola++)
       printf("%c", *phola); //imprime el valor de la 
                            //variable apuntada
    
    return 0;
}


El for incrementa el valor de la variable, después para imprimir utilizamos el puntero, el programa imprimiría lo mismo (el abecedario) si lo escribiéramos printf("%c", hola);


Link de donde saque esta información aqui
Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.

Tipos de Datos (Lab)

Un dato en programación contiene diferentes atributos entre ellos la ubicación en la memoria, el nombre, su valor, podemos decir que es la expresión que describe las particularidades de las entidades en las que opera un algoritmo, ya sea procesamiento de calculos o decisiones.


Un tipo de dato es un atributo el cual indica a la computadora sobre la clase de dato que se procesa, por lo tanto se le asignan restricciones sobre los valores y operaciones que puede tomar.


Tipos de datos primitivos
Hacen una referencia a el tipo de informacion que se trabaja, la unidad minima de almacenamiento es el dato.


Se subdivide en 3


Caracter:
  • digito individual pueden ser del 0 al 9, de la a a la z o simbolos.
  • regularmente se declara como char
  • rango 0 a 65536 16 bits


Numerico
Este a su ves se subdivide en 2


  1. Entero:
  • no tienen punto decimal
  • pueden ser positivos negativos y cero
  • se declaran como
  • byte - 8 bits
  • short - 16 bits
  • int - 32 bits
  • long - 64 bits
  1. Flotantes
  • Numeros reales
  • sistema de representacion coma flotante
  • se declara como
  • float - 4 bytes
  • double - 8 bytes


Logico
  • Tambien llamado booleanos
  • datos comparativos
  • se declara como boolean puede ser true o false
Tipos Dinámicos
Se encuentra los datos de tipo puntero que permite tener un control sobre la memoria en los programas ya que hace referencia a una direccion de memoria.


Tipos Compuestos o estructurados
Son las variables que hacen referencia a colecciones de elementos, entre ellas colecciones ordenadas tipo array, sin orden tipo conjunto, contienen otros tipos llamados registros.


Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.



Formato Backus-Naur (Lab)

 El formato Backus-Naur (BNF) es un sistema notacional para especificar tipos de datos o categorías sintácticas, también especifica la sintaxis de los lenguajes de programacion mediante reglas de producción o de re-escritura.






Una manera alternativa para establecer la producción de una gramática es usar esta forma, los símbolos no terminales suele comenzar con "<" y terminar con ">". La producción S->T se escribe S::=T


Las producciones de la forma
S::=T1, S::=T2, ..., S ::=Tn

se pueden combinar como
S::=T1|T2|...|Tn.

La barra "|" se lee como "o".


En esta entrada les pondré un ejemplo que encontré en el libro de matemáticas discretas en la pagina 519


una gramática para enteros.


Un entero se define como una cadena consistente en un signo opcional(+ o -) seguido de una cadena de dígito (0 al 9). La siguiente gramática genera todos los enteros.


< dígito > ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
< entero > ::= < enero con signo > | < enero sin signo >
< enero con signo > ::= + < enero sin signo > |- < enero sin signo >
< entero sin signo > ::= < dígito > | < digito > < enero sin signo >


El símbolo de inicio es < entero >.


Ejemplo la derivación del enero -901 es


< enero > -> < dígito con signo >
                       -> - < entero sin signo >
                       -> - < dígito > < entero sin signo >
                       -> - < dígito > < digito > < entero sin signo >
                       -> - < dígito > < digito > < digito >
                       -> - 9 < dígito > < digito >
                       -> - 90 < dígito >
                       -> - 901




Desglosando la gramática de estructura de frases, este lenguaje consiste en:



  1. El conjunto N = {< dígito > < entero > <enero con signo> <entero sin signo>} de símbolos no terminales
  2. El conjunto T = {0 1 2 3 4 5 6 7 8 9 + -}
  3. Las producciones
  4. < dígito > -> 0 .... < dígito > -> 9
    < entero > -> < entero con signo >
    < enero > -> < entero sin signo >
    < entero con signo > -> + < entero sin signo>
    < entero con signo > -> - < entero sin signo>
    < entero sin signo > -> < digito >
    < entero sin signo > -> < digito > < entero sin signo >
  5. El símbolo de inicio < entero >



Este ejemplo me demuestra claramente como funciona la forma regular de backus, encontré que es típico que los lenguajes de programacion como fortran, pascal y C++ utiliza esta gramática. podemos ver como se especifica en BNF una constante entera en un lenguaje de programación.


Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.

Control de flujo (Lab)

El objetivo de esta entrada es diferencial entre los distintos tipos de controles de flujo en un programa.


Para empezar, el control de flujo lo que hace es determinar el orden en el que se va a ejecutar las instrucciones de un programa, por lo tanto estas pueden ser ascendente, descendente o muchas a la vez, calculando valores, modificandolos en repeticiones, por lo tanto podemos decir que es el orden del que depende el algoritmo que se hace en un programa.


Estructuras básicas
Cualquier programa puede resolverse con tres tipos de controles de flujo. Estos son:

  • Secuencial
  • Alternativa
  • iterativa



Secuencial
Ejecuta las acciones sucesivamente una después de otra sin omitir ninguna, naturalmente sin saltos de subrutinas (también llamados bifurcaciones). Todas estas tendrán una salida por medio de una entrada.




Alternativa
Depende del valor de una condición, llamadas algunas veces por lo mismo condicionales, se subdividen en 3.


Alternativa simple: 
cuando se cumple la condición se rompe la secuencia y la ejecución de la acción.






Alternativa doble: 
Nos da la elección de dos acciones para que se cumpla una condición.






Alternativa múltiples: 
la condición puede tomar valores enteros distintos, según se elija se realiza una acción.




iterativa
Esta es cuando se repite las acciones un numero de veces, dependen de un valor o cumplimiento de algo. Un bucle es el conjunto de acciones a repetir. Otra ves se subdividen en tres:


Estructura While
Bucle que hace la repetición de instrucciones mientras la condición se cumpla.






Estructura Do-While
Se ejecuta una o varias veces hasta que la condición no se cumpla, se ejecuta al menos una vez.




Estructura For:
Se inicializa con un valor, la variable de control de ciclo y se va verificando una condición, si se cumple se ejecutan las instrucciones, se va incrementando el control hasta que la condición no se cumpla.


Las gráficas e información las obtuve de este pdf
http://dcb.fi-c.unam.mx/users/alejandromra/Secuencial.pdf
La información de aqui.
http://maxus.fis.usal.es/FICHAS_C.WEB/00xx_PAGS/0006.html

Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error. 

Conceptos de programación lógica (Lab)

Esta entrada es con el objetivo de ver los conceptos de lógica computacional para si desarrollar aplicaciones como de planeación o compatibilidad.


Torres de hanoi :)


Podemos decir que la lógica es una herramienta para el análisis de la veracidad de argumentos solo en base a su estructura, y el significado de los elementos no es tomado en cuenta.
Por ejemplo.


Todos los Pakistaníes son de Pakistan
Mohammed es Pakistani
En consecuencia, Mohammed es de Pakistan


Por lo tanto tenemos 2 premisas y una conclusión, entonces esto es valido ya que las premisas la sigue la conclusión. Pero este es otro ejemplo


Argentina esta en África o Argentina esta en Asia
Argentina no esta en Asia
En consecuencia Argentina esta en África


Ahora este argumento es verdadero desde la lógica pero la conclusión nosotros sabemos que es falsa, por lo tanto la lógica no verifica el significado de estas premisas (He aquí algunos errores que tenemos al programar y que no nos salga el resultado, ya que algunas veces no ponemos las premisas suficientes.)


Por lo tanto debemos de saber cuales son proposiciones verdaderas y cuales son lógicamente verdaderas, en consecuencia las premisas del segundo ejemplo es verdadera la primera premisa y la segunda derivada lógicamente de la otra premisa.


Podemos decir que las proposiciones son expresiones que son o falsas o verdaderas.


En los idiomas, las preposiciones son solo declarativas pero nunca imperativas o interrogativas.


Por ejemplo
Ramón nunca hace la tarea
Cecy canta feo
Todos los hombres de FIME son solteros
Juan puede volar


Pero las siguientes no son proposiciones porque no pueden ser ni falsas ni verdaderas


¿Que horas son?
¡Tengo que estudiar!
Teclea exit


Entonces en esta entrada hablare de los principios para determinar la validez de argumentos conformados con preposiciones.


Los átomos o también llamados preposiciones simples(que vienen siendo las variables que utilizaríamos en un lenguaje lógico) son aquellas que ya no tienen otras proposiciones, y las compuestas pues tienen varias con conectores lógicos que en este caso serian los operadores y, o, implica, equivalencia.


Ejemplos de proposiciones son:
Ramón nunca hace tarea y Cecy canta feo
Juan puede volar o Ramón nunca hace tarea


Conectivas lógicas
también llamadas operadores son de dos tipos:


Operadores unarios:
Negación: not


Operadores binarios:
Conjunción: and
Disyunción: or
Condicional: if...
Bicondicional: si y solo si..


Formulas Bien formadas


Las proposiciones simples o átomos son representadas por símbolos, generalmente por letras.
Una formula bien formada es una expresión que representa una proposición simple o compuesta, la cual esta bien escrita de acuerdo con alguna sintaxis del calculo proposicional.


Las reglas de sintaxis del calculo proposicional son:


Un átomo es una formula bien formada

  1. Si G es una formula bien formada entonces not-G también lo es.
  2. Si G y H son formulas bien formadas, entonces también son:  G and H  G or H
  3. Todas las FBF's se obtienen aplicando a, b y c



Cabe recalcar que en la tercera regla se pueden utilizar otras conectivas pero siempre son reducibles y llegan a las mostradas.


Interpretación
Asignación de valores de verdad para proposiciones de una expresión
w: prop -> {verdadero, falso}


La función w satisface:






Si w es una interpretación que asigna a una formula, el valor es verdadero, entonces es un modelo de F.


Una formula es valida si es verdadera bajo cualquier interpretación
Una formula es invalida si no es valida
Una formula es insatisfascible o inconsistente si es falsa bajo cualquier interpretación(contradiccion) , sino es satisfascible o consistente.


Ejemplo:


                                      Valida                            Inconsistente



Leyes de Equivalencia
Leyes de equivalencia son si los valores de verdad de F y G son iguales bajo cualquier interpretación




Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error. 

lunes, 15 de noviembre de 2010

Video: Presentación tipos de datos

Hola aqui les dejo mi video de la clase.




Investigando un poco encontre que en python podemos implementar una con Class, aqui les dejo un ejemplo con el caso que seleccione.


class Cliente(object):
         def __init__(self, nom=None, apelli=None, nucuenta=None, calle=None, num=None, colonia=None, ciudad=None,telefono=None,saldo=None):
        self.nom = nom
        self.apelli=apelli
        self.nucuenta = nucuenta
        self.calle = calle
        self.num = num
        self.colonia = colonia
        self.ciudad = ciudad
        self.telefono = telefono
        self.saldo = saldo




En Pascal seria algo como esto:


Type
   Cliente = record
   Nom: string[30];
   Apelli: string[30];
   nucuenta: longint;
   saldo: double;
   calle:string[20];
   colonia:string[35];
   numero:shortint;
   ciudad:string[15];
   telefono:longint;
end;

domingo, 14 de noviembre de 2010

Reporte lenguajes imperativos

En este reporte expongo 4 códigos utilizando lenguajes de programación imperativos.
Como les hable en la entrada anterior sobre los lenguajes imperativos son un tipo de lenguaje de programación que tiene como característica es que se basa en procedimientos, o sea, dar instrucciones para que realice algo, su característica es el uso de comandos y variables, inició entre los años 50's.

Las instrucciones se ejecutan una a una, de forma secuencial, aunque a veces sabemos que se encuentran estructuras de control condicionales o bucles.


Fortran
Se centra en la programación cientifica como la fisica y la química, por lo tanto realice este programa en donde te calcula la intensidad, voltaje o resistencia que lo pudiéramos necesitar en clase de fisica.
 program fisica

          real inten, volt, resis
          integer opcion

          write (*,*) 'Que quieres calcular:'
          write (*,*) '1. intensidad'
          write (*,*) '2. voltaje'
          write (*,*) '3. resistencia'

          read  (*,*) opcion

          select case (opcion)
             case (1)
                write (*,*) 'Dame un voltaje'
                read (*,*) volt
                write (*,*) 'Dame una resistencia'
                read (*,*) resis
                inten = volt / resis
              write (*,*) 'Tu resultado es', inten

             case (2)
                write (*,*) 'Dame una resistencia'
                read (*,*) resis
                write (*,*) 'Dame una intensidad'
                read (*,*) inten
                volt = resis * inten
               write (*,*) 'Tu resultado es', volt

             case (3)
                write (*,*) 'Dame un voltaje'
                read (*,*) volt
                write (*,*) 'Dame una intensidad'
                read (*,*) inten
                resis = volt / inten
              write (*,*) 'Tu resultado es', resis
             end select


          stop

          end

Simplemente lo que hace es que por medio de un select, te muestra un menu sobre la cantidad que deseas calcular, tu seleccionas, te pide los datos necesarios, realiza la operación, sale del select y termina el programa.


Es importante saber que como en lenguaje C, en el select (cuyo equivalente es "switch") no es posible obtener el la opción por medio de un numero "real", por lo tanto se utiliza un "integer".

C
Este programa es uno de logica que me gusta mucho en donde te dan la matriz de 20 x 20, con varios numeros y lo que te piden es ¿Cual es el producto mayor de cualesquiera cuatro numeros adyacentes en cualquier dirección ya sea hacia arriba, abajo, izquierda, derecha o diagonal?


Para resolver este problema el código que utilicé fue ir a cada numero desde la posición 3,3 hasta la posición 16, 16 que son en esa tabla en los lugares posibles donde puede encontrar los 4 números consecutivos, e ir checando las 8 veces, arriba, abajo, izquierda, derecha, y las diagonales, utilizando un arreglo bidimensional que contiene los números de esta tabla, en donde utilicé dos ciclos for que fueran modificando las filas y las columnas, para hacer las multiplicaciones correspondientes dado el número ir cambiando las columnas y cuando llegue a la 16, cambie la fila, y condicionales para checar si es mayor de la variable que se estará actualizando en cada producto, para así obtener el resultado.



#include <stdio.h>
int main(int argc, char** args){
int tabla[20][20] = {    { 8,  2, 22, 97, 38, 15,  0, 40,  0, 75,  4,  5,  7, 78, 52, 12, 50, 77, 91,  8},  //las unidades les quite el cero de la izquieda
                            {49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48,  4, 56, 62,  0},  //creamos una arreglo bidimensional de 20 x 20 con los numeros dados
                            {81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30,  3, 49, 13, 36, 65},
                            {52, 70, 95, 23,  4, 60, 11, 42, 69, 24, 68, 56,  1, 32, 56, 71, 37,  2, 36, 91},
                            {22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80},
                            {24, 47, 32, 60, 99,  3, 45,  2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50},
                            {32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70},
                            {67, 26, 20, 68,  2, 62, 12, 20, 95, 63, 94, 39, 63,  8, 40, 91, 66, 49, 94, 21},
                            {24, 55, 58,  5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72},
                            {21, 36, 23,  9, 75,  0, 76, 44, 20, 45, 35, 14,  0, 61, 33, 97, 34, 31, 33, 95},
                            {78, 17, 53, 28, 22, 75, 31, 67, 15, 94,  3, 80,  4, 62, 16, 14,  9, 53, 56, 92},
                            {16, 39,  5, 42, 96, 35, 31, 47, 55, 58, 88, 24,  0, 17, 54, 24, 36, 29, 85, 57},
                            {86, 56,  0, 48, 35, 71, 89,  7,  5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58},
                            {19, 80, 81, 68,  5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77,  4, 89, 55, 40},
                            { 4, 52,  8, 83, 97, 35, 99, 16,  7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66},
                            {88, 36, 68, 87, 57, 62, 20, 72,  3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69},
                            { 4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18,  8, 46, 29, 32, 40, 62, 76, 36},
                            {20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74,  4, 36, 16},
                            {20, 73, 35, 29, 78, 31, 90,  1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57,  5, 54},
                            { 1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52,  1, 89, 19, 67, 48}};
 
    int fila, colu;
    long int arriba, abajo, derecha, izquierda, diag1, diag2, diag3, diag4, respuesta = 0; 
       
     for(fila=3;fila<=16;fila++){ //cambia filas
        for(colu=3;colu<=16;colu++){ //cambia columnas
            arriba = tabla[fila][colu] * tabla[fila-1][colu] * tabla[fila-2][colu] * tabla[fila-3][colu];
            if(arriba > respuesta) 
                      respuesta = arriba;
            //printf("%d    %d,%d\n", respuesta, fila, colu);
            abajo = tabla[fila][colu] * tabla[fila+1][colu] * tabla[fila+2][colu] * tabla[fila+3][colu];
            if(abajo > respuesta) 
                     respuesta = abajo;
            //printf("%d    %d,%d\n", respuesta, fila, colu);
            izquierda = tabla[fila][colu] * tabla[fila][colu-1] * tabla[fila][colu-2] * tabla[fila][colu-3];
            if(izquierda > respuesta) 
                         respuesta = izquierda;
            //printf("%d    %d,%d\n", respuesta, fila, colu);
            derecha = tabla[fila][colu] * tabla[fila][colu+1] * tabla[fila][colu+2] * tabla[fila][colu+3];
            if(derecha > respuesta) 
                       respuesta = derecha;
            //printf("%d    %d,%d\n", respuesta, fila, colu);
            diag1 = tabla[fila][colu] * tabla[fila-1][colu-1] * tabla[fila-2][colu-2] * tabla[fila-3][colu-3];
            if(diag1 > respuesta) 
                     respuesta = diag1;
            //printf("%d    %d,%d\n", respuesta, fila, colu);
            diag2 = tabla[fila][colu] * tabla[fila-1][colu+1] * tabla[fila-2][colu+2] * tabla[fila-3][colu+3];
            if(diag2 > respuesta) 
                     respuesta = diag2;
            //printf("%d    %d,%d\n", respuesta, fila, colu);
            diag3 = tabla[fila][colu] * tabla[fila+1][colu-1] * tabla[fila+2][colu-2] * tabla[fila+3][colu-3];
            if(diag3 > respuesta) 
                     respuesta = diag3;
            //printf("%d    %d,%d\n", respuesta, fila, colu);
            
            diag4 = tabla[fila][colu] * tabla[fila+1][colu+1] * tabla[fila+2][colu+2] * tabla[fila+3][colu+3];
            if(diag4 > respuesta) 
                     respuesta = diag4;
            //printf("%d    %d,%d\n", respuesta, fila, colu);
            //system("pause");
        }
 
    }
    printf("Cual es el producto mayor de cualesquiera cuatro numeros adyacentes \n(en cualquier direccion, hacia: abajo, arriba, izquierda, derecha o diagonal)\nen la tabla de 20x20?"); 
    printf ("\n\n%d\n", respuesta); //resultado que siempre iba comparando y actualizando.
    system("pause");
    
} 

Una imagen de lo que realiza el programa y el resultado (ovalo naranja)
Haz clic para agrandar!

Por lo tanto el resultado es 87 x 94 x 97 x 87 = 70,600,674 que se ubica en la diagonal de 12, 6


Pascal
Lenguaje de programación cuyo objetivo es facilitar a los estudiantes el aprender programación.
En este caso, hice un programa que dada la formula:
Calcular el periodo, tiempo minimo al cabo del cual se repiten las condiciones del proceso, de un pendulo simple, sabiendo que a mayor longitud del pendulo mayor sea su periodo.


PROGRAM EJEMPLO;
        USES CRT;
        VAR longi:REAL;
        VAR periodo:REAL;
BEGIN
        

        WRITELN ('Dame solamente la longitud de tu pendulo, te dare su periodo:');
        WRITELN (' ');
        WRITE ('Escribe la longitud: ');     READLN (longi);
        WRITELN (' ');

        periodo:=2*3.1416*(sqrt(longi/9.8));

        WRITE ('Periodo de oscilacion (seg): ');  WRITE (periodo:5:2);
END.
Utilicé la función predeterminada para sacar la raiz cuadrada (sqrt).

Basic
Lenguaje de programación hecho específicamente para personas que se inician en la programación, es relativamente sencillo.
En este caso hice una calculadora para niños que solamente suma, resta, multiplica y divide con una interfaz grafica para ellos.


Este es el código


FMain.class
PUBLIC SUB Button1_Click()
TextBox2.text = TextBox1.text + TextBox3.Text
END

PUBLIC SUB Button3_Click()
TextBox2.text = TextBox1.text - TextBox3.Text
END

PUBLIC SUB Button4_Click()
TextBox2.text = TextBox1.text * TextBox3.Text
END

PUBLIC SUB Button2_Click()
TextBox2.text = TextBox1.text / TextBox3.Text
END

PUBLIC SUB Button5_Click()
TextBox1.Text = ""
TextBox2.text = ""
TextBox3.text = ""
TextBox1.SetFocus
END


Lo que hace simplemente suma, multiplica, divide o resta según el boton que se presione, en la caja de abajo obtendremos el resultado, se tiene un boton para borrar lo que ha hecho.
La interfaz grafica la hice solamente arrastrando los botones y pegando las cajitas de texto, por lo tanto es relativamente sencillo, aqui les dejo la captura de pantalla de la IDE creando lo que es FMain.form



Ahora el resultado en conjunto con el código y la interfaz grafica





Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error. 

Ejemplo Lenguaje C (Lab)

Hola compañeros, para laboratorio de lenguajes de programación, expongo un código en lenguaje C, que se realizo el semestre pasado que la idea es obtener el promedio en donde se recoge una serie de notas( por las letras A-B-C-D-F) para así realizar el promedio ya sea numéricamente o alfabéticamente, esta comentado parte por parte para entender lo que hace.


Recuerden que el EOF(End-of-file) indica que ya no hay información en un flujo de datos, en este caso, en ubuntu con las teclas Ctrl-D haces que te muestre el resultado del programa.


En este ejemplo, podemos ver los diferentes controles de programa como while, switch con case, e if's anidados en la parte final.


Para ver el código puedes mover con la barra de desplazamiento en la parte de abajo.

#include <stdio.h>  //incluimos libreria


int main(int argc, char** args)  //iniciamos funcion main
{
      int grade; //declaramos variable que leera la nota
      int aCount = 0, bCount = 0, cCount = 0, dCount = 0, fCount = 0; //iniciar los contadores en 0
      
      int promedio, multi, suma; //declaramos variables para realizar la operacion del promedio
      
      printf("Ingresa las notas del grupo.\n"); //imprime mensajes al usuario
      printf("Ingresa un caracter EOF para finalizar.\n");
      
      while( ( grade = getchar() ) != EOF) { //ciclo mientras grado sea diferente a EOF, que es end-of-file
             switch (grade) { //iniciamos swich que condicionara a grado
                    case 'A': case 'a': // si es letra a, la empieza a contar
                         ++aCount;
                         break;
                         
                    case 'B': case 'b':// si es letra b, la empieza a contar
                         ++bCount;
                         break;
                    
                    case 'C': case 'c':// si es letra c, la empieza a contar
                         ++cCount;
                         break;
                         
                    case 'D': case 'd':// si es letra d, la empieza a contar
                         ++dCount;
                         break;
                         
                    case 'F': case 'f':// si es letra f, la empieza a contar
                         ++fCount;
                         break;
                         
                    case '\n': case ' ':// si es espacio o salto de linea no hace nada
                         break;
                         
                    default: //si no cumple ninguna, se llama default
                       printf("Nota incorrecta, ingresa nueva nota\n"); // imprime mensaje al usuario
                       break;
             }//fin del switch
      }//fin del while
      
      printf("\nVeces que ingresaste la nota: \n"); //muestra resultados de las veces
      printf("A: %d\n", aCount);
      printf("B: %d\n", bCount);
      printf("C: %d\n", cCount);
      printf("D: %d\n", dCount);
      printf("F: %d\n", fCount);
      
      /* Para hacer el promedio yo hice una escala de la siguiente manera 
      A = 100
      B = 90
      C = 80
      D = 70
      F = 60 */
      
      multi=(aCount*100)+(bCount*90)+(cCount*80)+(dCount*70)+(fCount*60); //para hacer el promedio multiplicamos el numero de 
                                                                          //de veces por la escala antes realizada
      suma=aCount+bCount+cCount+dCount+fCount; //sumamos el numero notas ingresadas
      
      promedio=(multi)/(suma);  //Suma de todos los valores ya hechos numericos dividido entre el n˙mero de notas
       
      if (promedio == 100)  //Si es igual a 100 imprima mensaje
      printf("El promedio en nota es A\n");
      else if (promedio > 90) //Si es mayor que 90 imprima mensaje
      printf("El promedio en nota es B\n");
      else if (promedio > 80) //Si es mayor que 80 imprima mensaje
      printf("El promedio en nota es C\n");
      else if (promedio > 70) //Si es mayor que 70 imprima mensaje
      printf("El promedio en nota es D\n");
      else if (promedio > 60) //Si es mayor que 60 imprima mensaje
      printf("El promedio en nota es F\n");
      printf("El promedio en numeracion es de -> %d \n", promedio); //imprime el promedio en cantidad

      return 0; //finalizamos programa
}

Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.