Estructurado

36
Programaci´onestructurada Lenguaje estructurado C Ejemplos de estructuras Programaci´ on estructurada Programaci´ on estructurada y lenguaje estructurado Oscar Alvarado Nava [email protected] Departamento de Electr´ onica Divisi´on de Ciencias B´ asicas e Ingenier´ ıa Universidad Aut´onoma Metropolitana, Unidad Azcapotzalco 13O, septiembre de 2013 Oscar Alvarado Nava UAM Azcapotzalco Programaci´ on estructurada y lenguaje estructurado 1/36

description

estructura

Transcript of Estructurado

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Programacion estructuradaProgramacion estructurada y lenguaje estructurado

    Oscar Alvarado Nava

    [email protected]

    Departamento de ElectronicaDivision de Ciencias Basicas e Ingeniera

    Universidad Autonoma Metropolitana, Unidad Azcapotzalco

    13O, septiembre de 2013

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 1/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Contenido

    1 Programacion estructuradaDefinicionesEstructuras

    2 Lenguaje estructurado CLenguaje de alto nivelANSI CLenguaje estructurado

    3 Ejemplos de estructurasEjemplos de estructuras

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 2/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Definiciones

    Paradigma de programacion

    Reglas u organizacion incuestionables que son adoptadas poruna comunidad de programadores para implementaralgortimos como soluciones a problemas utilizando sistemas decomputo

    Son delimitados en el tiempo en cuanto a aceptacion y usoNuevos paradigmas pueden aportan nuevas o mejoressoluciones, sustituyendo parcial o totalmente al anterior

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 3/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Definiciones

    Paradigmas de programacion y lenguajes

    Paradigma Lenguajes

    Estructurado C, Fortran

    Funcional Haskell

    Logico Prolog

    Orientado a objetosC++,C#,JavaPerl,Python,PHP

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 4/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Definiciones

    Programacion estructurada

    El teorema del programa estructurado es un resultado en lateora de lenguajes de programacion (1966. Corrado Bohm,Giuseppe Jacopini y Stephen Kleene)

    El teorema establece que toda funcion computable puede serimplementada en un lenguaje de programacion que combinesolo tres estructuras (tambien llamadas estructuras decontrol)

    Secuencia:ejecucion de una sentencias tras otraSeleccion:seleccion de conjuntos de sentencias de acuerdo aun criterioIteracion:repeticion de conjuntos de sentencias mientras secumpla un criterio

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 5/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Definiciones

    Implementacion en lenguajes programacion

    Si bien los lenguajes de programacion tienen un mayorrepertorio de estructuras de control, estas pueden serconstruidas mediante las tres basicas citadas.

    Siendo innecesario el uso de la sentencia de transferenciaincondicional goto

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 6/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Estructuras

    Secuencia

    La estructura de programa es secuencial si las sentencias seejecutan una tras otra

    No se bifurca el flujo del programa

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 7/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Estructuras

    Diagrama de flujo de una secuencia

    bloquedesentencias

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 8/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Estructuras

    Seleccion

    La estructura selectiva permite que el flujo de ejecucion delprograma se bifurque

    Seleccionando una sentencia (o conjunto de sentencias) uotra/s, segun un criterio o condicion logica establecidaSolamente uno de los flujos sera seleccionado para ejecutarse

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 9/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Estructuras

    Diagrama de flujo de una seleccion

    expresin

    verdadero

    falso

    sentenciao

    bloquedesentencias

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 10/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Estructuras

    Diagrama de flujo de una seleccion (2)

    expresinverdadero falso

    sentenciao

    bloquedesentencias

    sentenciao

    bloquedesentencias

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 11/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Estructuras

    Iteraccion

    Una iteracion es la repeticion de la ejecucion de una sentenciao bloque de sentencias

    La iteracion se llevara a cabo mientras se cumpla una condicionLas condiciones se cumplen con resultados verdaderos deexpresiones relacionales

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 12/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Estructuras

    Diagrama de flujo de una iteracion, condicion inicial

    expresin

    verdadero

    falso

    sentenciao

    bloquedesentencias

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 13/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Estructuras

    Diagrama de flujo de una iteracion, condicion posterior

    expresinverdadero

    falso

    sentenciao

    bloquedesentencias

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 14/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Estructuras

    Anidamiento

    El cuerpo de cualquier estructura puede ser

    Una sentencias o un conjunto de sentenciasOtra estructura

    Cuando una estructura contiene otra estructura, se le llamaanidamiento (nesting)

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 15/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Lenguaje de alto nivel

    El lenguaje C

    Creado en 1972 por Dennis M. Ritchie en los LaboratoriosBell como evolucion del lenguaje B, basado en BCPL (1967)

    Uno de sus objetivos iniciales fue la implementacion delsistema operativo UNIX, desarrollado Ken Thompson

    Las primeras versiones de UNIX fueron desarrolladas enlenguaje ensamblador de una computadora GE-645 de GeneralElectric (1969)

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 16/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Lenguaje de alto nivel

    GE-645 de General Electric 1969

    Mainframe con palabras de 36 bits y 18 bits dedireccionamiento

    Podia direccionar maximo 256k palabras

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 17/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Lenguaje de alto nivel

    Desarrollo de software

    C es el lenguaje de programacion mas popular para desarrollarsoftware de sistemas

    Editores, ensambladores, compiladores, enlazadores, sistemasoperativos, controladores y drivers de dispositivosPrincipalmente por que es considerado un lenguaje de medianonivel

    Tambien se utiliza para crear aplicaciones de usuario y juegos,de no muy grande complejidad

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 18/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Lenguaje de alto nivel

    Alto o mediano nivel?

    El lenguaje C cuenta con estructuras tpicas de los lenguajesde alto nivel

    Estructuras condicionales (if, switch, etc.), estructurasrepetitivas (for, while, etc.), secuencias de sentencias, etc.

    C tambien dispone de construcciones que permiten un controla bajo nivel

    Para la manipulacion de direcciones de memoria, registros,bytes y bits

    Los compiladores modernos suelen ofrecer extensiones allenguaje que posibilitan mezclar codigo en ensamblador concodigo C

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 19/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Lenguaje de alto nivel

    Lenguaje C y lenguaje ensamblador para x86

    1 /* Copyright (C) 1992, 1998 Linus Torvalds , Ingo Molnar2 * This file contains the lowest level x86 -specific interrupt ...3 * Fragmento del archivo: linux -3.2.2/ arch/x86/kernel/irq_32.c4 */5 #include 6 #include 7 #include 8 ...9 /* Debugging check for stack overflow: is there less than 1KB free? */

    10 static int check_stack_overflow(void)11 {12 long sp;13 __asm__ __volatile__("andl % %esp , %0" :14 "=r" (sp) : "0" (THREAD_SIZE - 1));15 return sp < (sizeof(struct thread_info) + STACK_WARN);16 }17 ...18 static void call_on_stack(void *func , void *stack)19 {20 asm volatile("xchgl % %ebx, % %esp \n"21 "call * % %edi \n"22 "movl % %ebx, % %esp \n"23 : "=b" (stack)24 : "0" (stack),25 "D"(func)26 : "memory", "cc", "edx", "ecx", "eax");27 }28 ...

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 20/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Lenguaje de alto nivel

    Entornos de desarrollo

    Muchas companias ofrecieran un IDE (IntegratedDevelopment Environment) de desarrollo

    Editor, compilador, ensamblador, enlazador, depurador,conjunto de bibliotecas

    Cada compania agregaba algunas caractersticas que hacanque las aplicaciones fueran incompatibles

    Compilador especficoFunciones de bibliotecaTipos de datos, estructuras, pragmas, etc.

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 21/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Lenguaje de alto nivel

    IDE Turbo C, 1987

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 22/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    ANSI C

    Estandarizacion

    Para lograr la portabilidad de codigo fuente, fue necesaria unaestandarizacion

    En 1989, la American National Standards Institute (ANSI),ratifico la ANSI X3.159-1989 Programming Language C,tambien conocido como C89

    Cualquier programa que cumpla con el estandar ANSI C, sindependencia alguna del hardware, se compila de formacorrecta en cualquier plataforma

    http://flash-gordon.me.uk/ansi.c.txt

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 23/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    ANSI C

    El rgido ANSI C

    Muchos implementaciones modernas del lenguaje C y suscompiladores, han adoptado algunas caractersticas de otroslenguajes que estan fuera del estandar ANSI

    El estandar ANSI C muestra en su seccion 3.1.9, como debenser los comentarios

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 24/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Lenguaje estructurado

    Lenguaje estructurado

    Una caracterstica importante de los lenguajes estructuradoses la compartimentacion de codigo y datos

    Es la habilidad del lenguaje de seccionar el programa enbloques o modulos de sentenciasCada bloque de sentencias lleva a cabo una tarea especficaLos bloques son utilizados y escondidos del resto delprograma cuando es necesario

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 25/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Lenguaje estructurado

    Programa estruturado

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 26/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Lenguaje estructurado

    El lenguaje estructurado C

    El lenguaje C logra la compartimentacion de codigo y datospor medio de de uso de funciones, las cuales son compuestaspor un conjunto de sentencias y utilizan variables temporalesque no afectan a las variables de otros bloques del programa

    Esta caracterstica permite compartir o reutilizar facilmentesecciones de codigo de un programa

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 27/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Lenguaje estructurado

    Funciones en C

    Las funciones son bloques en donde se lleva a cabo toda laactividad del programa

    Las funciones permiten al programador definir tareasespecficas, permitiendo que el programa sea modular

    Crear un programa en modulos (funciones) tiene grandesventajas

    Enfocarse en el desarrollo de tareas especficasLa verificacion de un modulo no afecta a todo el programaVarios programadores puden participar en el desarrollo

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 28/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Ejemplos de estructuras

    Comentario no estadarizado, estandarANSI.c

    1 /* Programacion estructurada 13O,2 Oscar Alvarado Nava , Ing. Electronica3 Comentarios bajo el estandar ANSI4 */5 #include 6 int main()7 {8 // formato de comentario fuera del estandar de ANSI9 int x=15;

    10 int y=9;11 int z=0;1213 z = x + y;1415 /* funcion de biblioteca */16 printf("La suma fue: %d\n",z);1718 return 0;19 }

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 29/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Ejemplos de estructuras

    Directorio y edicion

    < tss-1-01@ce >< /users/tss/1/tss-1-01 >$ mkdir p4 progEstructurada

    < tss-1-01@ce >< /users/tss/1/tss-1-01 >$ cd p4 progEstructurada

    < tss-1-01@ce >< /users/tss/1/tss-1-01/p4 progEstructurada >$ pico estandarANSI.c

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 30/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Ejemplos de estructuras

    Compilacion y error

    < tss-1-01@ce >< /users/tss/1/tss-1-01/p4 progEstructurada >$ gcc -ansi estandarANSI.c -o estandarANSIestandarANSI.c:In function main:

    estandarANSI.c:8: error: expected expression before / token

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 31/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Ejemplos de estructuras

    Secuencia de sentencias, secuencia.c

    1 /* Programacion estructurada , 13O2 Oscar Alvarado Nava , Ing. Electronica3 Intercambio de valores entre 2 variables4 */5 #include 6 int main()7 {8 float var1 , var2 , aux;9

    10 // asignacion de valores11 var1 = 1.1;12 var2 = 2.2;13 printf("var1: %f, var2: %f\n",var1 ,var2);1415 // intercambio16 aux = var1;17 var1 = var2;18 var2 = aux;19 printf("var1: %f, var2: %f\n",var1 ,var2);2021 return 0;22 }

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 32/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Ejemplos de estructuras

    Seleccion de sentencias, seleccion.c

    1 /* Programacion estructurada , 13O2 Oscar Alvarado Nava , Ing Electronica3 Bajo una condicion , se ejecuta una de dos sentencias4 */5 #include 6 int main()7 {8 int var1 , var2;9

    10 // asignacion de valores11 var1 = 1;12 var2 = 2;1314 // prueba y seleccion15 if( var1 > var2 )16 printf(" %d es mayor que %d\n",var1 ,var2);17 else18 printf(" %d es menor que %d\n",var1 ,var2);192021 return 0;22 }

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 33/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Ejemplos de estructuras

    Iteracion de sentencias, iteracion.c

    1 /* Programacion estructurada , 13O2 Oscar Alvarado Nava , Ing Electronica3 Repite el bloque mientras la condicion sea verdadera4 */5 #include 6 int main()7 {8 int var1 , var2;9

    10 // asignacion de valores11 var1 = 0;12 var2 = 10;1314 // iteracion15 while( var1 < var2 )16 {17 printf("hola! numero %d\n",var1);18 var1 = var1 + 1;19 }20 printf("Fin de programa\n");2122 return 0;23 }

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 34/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Ejemplos de estructuras

    Anidamiento de sentencias, anidamiento.c

    1 /* Programacion estructurada , 13O, incluir toda la informacion */2 #include 3 int main()4 {5 int var1 , var2 , aux;6 // solicita valores7 printf("Valor entero para var1: ");8 scanf(" %d" ,&var1);9 printf("Valor entero para var2: ");

    10 scanf(" %d" ,&var2);11 printf("var1: %d var2: %d\n",var1 ,var2);12 if( var1 > var2 )13 {14 aux = var1;15 var1 = var2;16 var2 = aux;17 }18 printf("var1: %d var2: %d\n",var1 ,var2);19 while( var1 < var2 )20 {21 printf("hola! numero %d\n",var1);22 var1 = var1 + 1;23 if(var1 >= 10)24 break;25 }26 printf("Fin de programa\n");27 return 0;28 }

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 35/36

  • Programacion estructurada Lenguaje estructurado C Ejemplos de estructuras

    Ejemplos de estructuras

    Funciones funciones.c

    1 #include 2 // Declaracion de las funciones3 void funcionInicio ();4 void funcionFin ();5 // Definicion de las funciones6 void funcionInicio ()7 {8 printf("Programacion estructurada\n");9 printf("Oscar Alvarado Nava\n");

    10 }11 void funcionFin(int var)12 {13 printf("Resultado %d\n",var);14 printf("Fin del programa\n");15 }16 int main()17 {18 int x=15, y=9, z=0;1920 // llamada a la funcion21 funcionInicio ();22 z = x + y;23 // llamada a la funcion24 funcionFin( z );2526 return 0;27 }

    Oscar Alvarado Nava UAM Azcapotzalco Programacion estructurada y lenguaje estructurado 36/36

    Programacin estructuradaDefinicionesEstructuras

    Lenguaje estructurado CLenguaje de alto nivelANSI CLenguaje estructurado

    Ejemplos de estructurasEjemplos de estructuras