Bienvenidos a un nuevo curso. Ahora estoy en el ciclo de grado superior: Desarrollo de aplicaciones multiplataforma. Y voy a ser parte del experimento de la formación dual. Estaré haciendo practicas durante un año, y a la vez finalizando la formación.

Deseadme suerte.

lunes, 20 de octubre de 2014

Programación

0

He llegado al punto de creer entender los bucles for y while. De aprender a posicionar y llamar funciones, pero necesito más, mucho más. Ya no basta con hacer los ejercicios, mirando el uso de C. Necesito estudiar, para avanzar, porque no se hacer ya muchos ejercicios. Por ello, voy a reunir apuntes, imprimir ... y en los ratitos minis de descanso en el curro o en la noche a estudiar :( Ahora estamos en tiempo para la hoja de problemas 2.

Estaba compilando los temas puestos en el blog, y me ha pillado el toro , pero Inazio me cubre :)

Evitando errores: invariante del bucle

El invariante es una condición (relación matemática entre las variables involucradas) que se tiene que cumplir
- Antes de empezar a ejecutarse el bucle
- Después de cada vez que se ejecuta el bucle
- Una vez que se ha terminado la ejecución del bucle
Si obtengo el invariante del bucle puedo comprobar si se va a cumplir en todas esas situaciones

Ejemplo:

i:=1;
s:=1;

mientras que i<n hacer
            i:=i+1;
            s:=s+i;
fmq

El invariante es s=1+...+i;
            Antes del bucle: i=1, s=1
            Tras la primera ejecución: i=2, s=1+2=3
            Tras la segunda ejecución i=3, s=1+2+3=6
            tras la segunda ejecución i=4, s=1+2+3+4=10
            al terminar el mientras que: i=n, s=1+2+...+n

Otro ejemplo:

i:=1;
s:=1;

mientras que i<n hacer
            s:=s+i;           
            i:=i+1;
           
fmq

El invariante es: s=1+,,,+(i-):
            Antes del bucle i=2, s=1
            Tras la primera ejecución: i=3, s=1+2=3
            Tras la segunda ejecución: i=4, s=1+2+3=6
            …
            Al terminar el mientras que i=n+1, s=1+...+n

Tema 5. 

Tipos escalares definidos por enumeración
Hasta ahora hemos utilizado tipos primitivos que estaban totalmente definidos, tanto en estructura como en el dominio de valores que podian tomar.
Existe la posibilidad de definirse tipos en C, de manera que podemos establecer cuál es tanto la estructura como el dominio de valores.
Alterar la estructura lo dejamos para más adelante. De momento vamos a ver el caso más sencillo: establecer el dominio de valores. Para ello usamos tipos definidos por enumeración.
Esto en C se hace utilizando la palabra reservada "enum".
Ejemplos:
- enum DIA (lunes, martes, miercoles, jueves, viernes, sabado, domingo);
- enum COLORES_SEMAFORO (rojo, amarillo, verde);
- enum COLORES (blanco, amarillo, naranja, rojo, verde, azul, marron, negro);
Me puedo definir junto con el tipo una variable que es de ese tipo (en el ejemplo, la variable estado);
- enum COLORES_SEMAFORO (rojo, ambar, verde) estado;
C internmente lo que hace es asignarte un valor entero a cada uno de esos valores por orden y giuarda ese valor.
Lo normal, ya que me he definido el tipo, es usar los valores que yo he puesto, pero podría usar su correspondencia entera, ya que se asocia un 0 con el primer elemento, un 1 con el segundo y así sucesivamente hasta el último.
Se puede alterar la asociación de números, pero siempre manteniendo el orden para evitar problemas. Incluso se le puede asociar un mismo valor entero a dos valores de tipo:
- enum DAY ( saturday, sunday=0, monday, tusday, wednesdy, thursday, finday) workday;
- En este ejemplo, Saturday tiene el valor  porque se asocia implicamente. Sunday tiene el mismo valor 0 porque se asocia explicitamente, y el resto de los días, consecutivamente, los valores 1-5.

Tipos definidos por enumeración: Ejemplo
#include <stdio.h>
int main()
{
    enum Days(sunday, mondey, tuesday, wednesday, thusday, friday, saturday)Theday;
    int j=0;
    printf("Please enter the day of the week ( 0 to 6)\n");
    scanf("%d", &j);
    The Day=(enum Days) j; /* según compiladores se puede poner tambien Days (j) o deirectamente j*/
     if/(TheDay==Sunday || TheDay==Saturday)
     printf("Hurray it is the weekend\n");
     else
     printf("Curses still al work\n");
     return 0;
}

Related Posts:

  • validación de una fecha int fecha_correcta (int día, int mes, int agno)      return (día_correcta(día, mes, agno) && mes_correc… Read More
  • ProgramaciónHe llegado al punto de creer entender los bucles for y while. De aprender a posicionar y llamar funciones, pero necesito más, mucho más. Ya no basta c… Read More
  • Registros Continuación tema 6 Ejemplo: números complejos  Aqui voy a ser mala y cuando Inazio lo suba al blog lo copio y pego, porque muero de dolor d… Read More
  • Lenguaje C Caracteres C hace normalmente un tratamiento muy sucio de los datos que almacena, mezclando representación interna y externa. Una variable de tipo … Read More
  • ProgramaciónSolución: traspuesta de una matriz procedimiento trasponer (E/S m: matriz, E n: entero) {Traspone la matriz m de dimensión nxn} variables    … Read More

0 comentarios:

Publicar un comentario

Etiquetas actuales

BD (67) DEF (64) PROG (64) SQL (44) Java (29) PRACTICAS (20) php (18) DI (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) HTML (13) SGE (12) ERP (9) CONSULTAS (8) css (8) Linux (5) XML (5) Android (4) PDM (4) C (3) NetBeans (3) PSP (3) SMARTY (3) comandos (3) HOOK (2) POST (2) XSD (2) cURL (2) JS (1) MEDIA-QUERYS (1) PDO (1) RESPONSIVE (1) TPL (1) TRADUCCIÓN (1) app_inventor (1)

Todas las etiquetas

EJER (78) BD (67) DEF (64) PROG (64) SQL (44) c# (40) Programación (39) Ficheros (36) Java (29) bases de datos (21) PRACTICAS (20) lenguajes de marcas (19) AD (18) Entorno de desarrollo (18) php (18) PROCEDIMIENTOS (17) DI (16) FORM (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) lenguaje C (16) E/R (14) HTML (13) SGE (12) Sistemas informáticos (10) ERP (9) CONSULTAS (8) TRANSACCIONES (8) TRIGGER (8) VISUAL BASIC (8) css (8) FUNCIONES (7) html5 (6) Ada (5) EXAMEN (5) Linux (5) XML (5) estructuras (5) Android (4) DISEÑO (4) INTERFAZ (4) LOG (4) OpenBravo (4) PDM (4) ACTUALIZAR (3) C (3) DIAGRAMA (3) Directorios (3) NEW (3) NOR (3) NetBeans (3) OLD (3) PSP (3) SMARTY (3) comandos (3) css3 (3) AISLAMIENTOS (2) C++ (2) CONTROLERRORES (2) ELIMINAR (2) HOOK (2) INSERTAR (2) INST (2) MULTITABLA (2) POST (2) RECURSIVIDAD (2) SUBCONSULTAS (2) VISTAS (2) XSD (2) cURL (2) punteros (2) AJENA (1) BLOQUEOS (1) Byte (1) CREACION (1) CRM (1) Configuración (1) Controles (1) Datos (1) GOTFOCUS (1) IMAGENES (1) INDICES (1) JS (1) Lenght (1) MEDIA-QUERYS (1) Mingw (1) MonoDeveloped (1) OPTIMISTA (1) PDO (1) PESIMISTA (1) RESPONSIVE (1) SPEAK (1) Scanner (1) Serializacion (1) Streams (1) System (1) TPL (1) TRADUCCIÓN (1) USUARIOS (1) UseSystemPasswordChar (1) app_inventor (1) char (1) examenes (1) libreoffice (1) make (1) redes (1)