Programacin Estructurada Ver 2.0 RRK

271
PROGRAMACIÓN ESTRUCTURADA … Y ALGO MÁS Risto Rangel Kuoppa Doctor en Ciencias de la Computación © Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 1 Última actualización: Septiembre 2011

Transcript of Programacin Estructurada Ver 2.0 RRK

  • PROGRAMACIN

    ESTRUCTURADA

    Y ALGO MS

    Risto Rangel Kuoppa

    Doctor en Ciencias de la Computacin

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 1

    ltima actualizacin:

    Septiembre 2011

  • ndice 1. Declaracin de derechos de autor

    2. Descripcin del curso

    1. Descripcin

    2. Evaluacin

    3. Calendario

    4. Recursos

    5. Dinmica de clase

    6. Comentarios adicionales

    7. Bibliografa

    3. Contenido del temario

    1. Algoritmos y programas

    2. Diseo de programas estructurados

    3. Ambiente de desarrollo Unix

    4. Programacin modular

    5. Elementos bsicos de un programa en lenguaje c

    6. Estructuras de decisin

    7. Estructuras de repeticin

    8. Arreglos y estructuras

    9. Cadenas de caracteres

    10. Archivos

    4. Contenido adicional al temario

    1. Ejemplos integradores

    2. Apuntadores, referencias, y asignacin

    dinmica de memoria.

    3. Desarrollo de programas en Windows

    con Visual Studio

    4. Introduccin a la Programacin

    Orientada a Objetos y C++

    5. Ejemplos integradores en C++

    6. Introduccin a la Programacin Visual

    Orientada a Eventos

    7. Introduccin al Procesamiento Digital de

    Imgenes

    5. Conclusiones

    4. Limitaciones al curso (explicar/justificar lo

    que se va a ver en el siguiente curso

    como apuntadores, asignacin

    dinmica de memoria, y estructuras de

    datos, y ordenamientos, y bsquedas)

    6. ndice de contenidos

    4. ndice de imgenes

    5. ndice de videos

    6. ndice de prcticas

    7. ndice de ???

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 2

    ltima actualizacin:

    Septiembre 2011

  • 1. DECLARACIN DE

    DERECHOS DE AUTOR

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 3

    ltima actualizacin:

    Septiembre 2011

  • 1. Declaracin de derechos de autor

    parte 1

    Todas las marcas, logotipos y nombres registrados que aparecen en estas diapositivas son propiedad

    de sus respectivos dueos y se reproducen aqu

    con el nico objetivo de formacin acadmica.

    Por ninguna razn se sugiere implcita o

    explcitamente que la autora de dichas marcas,

    logotipos, o nombres pertenece a alguien ms. Si

    usted es dueo de alguna de estas marcas,

    logotipos, o nombres y desea que no se

    reproduzcan en estos documentos puede

    solicitarlo a: [email protected] y reciba una

    disculpa de antemano por haberlas usado.

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 4

    ltima actualizacin:

    Septiembre 2011

  • 1. Declaracin de derechos de autor

    parte 2

    Las imgenes capturadas de los programas usados se reproducen aqu tambin por

    cuestiones de formacin acadmica. La autora y

    propiedad de dichos programas se reconoce

    como la de sus legtimos dueos y de ninguna

    manera se sugiere de otra forma ya sea implcita

    explcitamente. Si usted es dueo de alguno de

    estos programas y desea que no sean usados en

    estos documentos puede solicitarlo a:

    [email protected] y reciba una disculpa de

    antemano por haberlas usado.

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 5

    ltima actualizacin:

    Septiembre 2011

  • 1. Declaracin de derechos de autor

    parte 3

    Las siguientes son marcas registradas de Microsoft Corporation: Win32, Windows, Windows Vista,

    Direct3D, DirectPlay, DirectInput, DirectDraw,

    DirectMusic, DirectShow, DirectSound, DirectX,

    Visual Studio, Visual C++, Visual Basic, Visual C#,

    Internet Explorer, MSN, .NET. Estas marcas y sus

    logotipos son mencionadas en estas diapositivas

    con el nico fin de formacin acadmica. Si

    usted es dueo de alguna de estas marcas y

    desea que no se reproduzcan en estos

    documentos puede solicitarlo a:

    [email protected] y reciba una disculpa de

    antemano por haberlas usado.

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 6

    ltima actualizacin:

    Septiembre 2011

  • 1. Declaracin de derechos de autor

    parte 4

    Las siguientes son marcas registradas de The Mathworks, Inc.: MATLAB. Estas marcas y sus

    logotipos son mencionadas en estas diapositivas

    con el nico fin de formacin acadmica. Si

    usted es dueo de alguna de estas marcas y

    desea que no se reproduzcan en estos

    documentos puede solicitarlo a:

    [email protected] y reciba una disculpa de

    antemano por haberlas usado.

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 7

    ltima actualizacin:

    Septiembre 2011

  • 1. Declaracin de derechos de autor

    parte 5

    Las siguientes son marcas registradas de Sun Microsystems: Java. Estas marcas y sus logotipos

    son mencionadas en estas diapositivas con el

    nico fin de formacin acadmica. Si usted es

    dueo de alguna de estas marcas y desea que no

    se reproduzcan en estos documentos puede

    solicitarlo a: [email protected] y reciba una

    disculpa de antemano por haberlas usado.

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 8

    ltima actualizacin:

    Septiembre 2011

  • 1. Declaracin de derechos de autor

    parte 6

    Las siguientes son marcas registradas de Foxit Software Company (FOXIT): Foxit PDF Editor Software. Estas marcas y sus logotipos son

    mencionadas en estas diapositivas con el nico fin

    de formacin acadmica. Si usted es dueo de

    alguna de estas marcas y desea que no se

    reproduzcan en estos documentos puede

    solicitarlo a: [email protected] y reciba una

    disculpa de antemano por haberlas usado.

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 9

    ltima actualizacin:

    Septiembre 2011

  • 1. Declaracin de derechos de autor

    parte 7

    KDevelop es un IDE distribuido bajo la licencia GNU GPL por KDevelop-Project.

    MonoDevelop es un IDE distribuido bajo la licencia GNU GPL por Novell y la comunidad Mono.

    Dev-C++ es un IDE distribuido bajo la licencia GNU GPL actualmente distribuido por SourceForge y

    originalmente creado por Colin Laplace.

    Code::Blocks es distribuido bajo la licencia GPL v3.0 por la organizacin Code::Blocks

    UNIX es una marca registrada por The Open Group

    GNU/Linux es un sistema operativo distribuido bajo la licencia GNU GPL, fue creado inicialmente por Linus

    Torvalds y actualmente existen varias distribuciones

    disponibles por distintas organizaciones.

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 10

    ltima actualizacin:

    Septiembre 2011

  • 1. Declaracin de derechos de autor

    parte 8

    Las siguientes son marcas registradas de Mozilla Foundation: Mozilla, mozilla.org, Firefox,

    Thunderbird, Bugzilla, Camino, Sunbird,

    Seamonkey, Foxkeh, XUL. Estas marcas y sus

    logotipos son mencionadas en estas diapositivas

    con el nico fin de formacin acadmica. Si

    usted es dueo de alguna de estas marcas y

    desea que no se reproduzcan en estos

    documentos puede solicitarlo a:

    [email protected] y reciba una disculpa de

    antemano por haberlas usado.

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 11

    ltima actualizacin:

    Septiembre 2011

  • 1. Declaracin de derechos de autor

    parte 9

    Las siguientes son marcas registradas de Yahoo!: Yahoo Messenger. Estas marcas y sus logotipos son

    mencionadas en estas diapositivas con el nico fin

    de formacin acadmica. Si usted es dueo de

    alguna de estas marcas y desea que no se

    reproduzcan en estos documentos puede

    solicitarlo a: [email protected] y reciba una

    disculpa de antemano por haberlas usado.

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 12

    ltima actualizacin:

    Septiembre 2011

  • 2. DESCRIPCIN DEL CURSO

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 13

    ltima actualizacin:

    Septiembre 2011

  • Contenido

    1. Descripcin

    2. Evaluacin

    3. Calendario

    4. Recursos

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 14

    ltima actualizacin:

    Septiembre 2011

  • 2.1. DESCRIPCIN

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 15

    ltima actualizacin:

    Septiembre 2011

  • 2.1. Descripcin

    Segn el programa de estudios oficial (Septiembre 2011).

    UEA de 7 crditos (2.5 teora y 2.0 prctica)

    Objetivos:

    Describir los conceptos de algoritmo y de programa.

    Explicar el paradigma de programacin estructurada.

    Explicar, elaborar y representar algoritmos.

    Implementar programas escritos en lenguaje c, usando el paradigma de programacin estructurada.

    Desarrollar los programas usando el ambiente Unix.

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 16

    ltima actualizacin:

    Septiembre 2011

  • 2.2. EVALUACIN

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 17

    ltima actualizacin:

    Septiembre 2011

  • 2.2. Evaluacin

    Evaluacin (tienen dos oportunidades para aprobar este curso en este trimestre)

    Tres evaluaciones parciales (en el lugar y hora de clase)

    Participaciones 10%

    Examen 70%

    Programas 30%

    Total 110%

    Examen global (fecha, lugar, y duracin son los mismos que los oficiales)

    Examen 100%

    Total 100%

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 18

    ltima actualizacin:

    Septiembre 2011

  • 2.2. Evaluacin

    Calificacin final:

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 19

    3

    )(321 ParcialParcialParcial

    Final

    CCCC

    global del parte la presenta SI alumn@ el/la si

    global,examen del parte la den Calificaci

    global del parte la presenta NO alumn@ el/la si

    , Parcial del Evaluacin

    i

    i

    i

    i

    CiParcial

    0.60.0 si NA

    5.76.0 si S

    5.85.7 si B

    5.8 si MB

    CActa

    Final

    Final

    Final

    Final

    C

    C

    C

    C

  • 2.2. Evaluacin

    Programas

    Buzones electrnicos:

    [email protected] (grupo matutino)

    [email protected] (grupo vespertino)

    Entrega: slo se enva el cdigo fuente al buzn electrnico (no se acepta ninguna otra forma de entrega).

    La ayudante les puede confirmar de recibido el correo.

    Formato:

    Tema del correo: Programa #, ejemplos: Programa 1, Programa 2

    Cuerpo del correo: ,

    Anexo del correo: Un solo archivo que es su programa (si son varios archivos entonces empaquetarlos en un archivo .zip o .rar).

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 20

    Enven un correo al buzn para darlos de alta en

    la lista de contactos y darles su usuario y

    contrasea de Unix. Formato:

    Tema: Alta Programacin Estructurada

    Cuerpo: , ,

  • 2.2. Evaluacin

    Programas

    El programa deber cumplir con una lista de requisitos la calificacin del programa ser proporcional al nmero de

    requisitos cumplidos.

    La hora lmite para la entrega de sus programa ser hasta la media noche de la fecha de entrega.

    Los programas que se van a entregar deben cumplir con el estndar ANSI c.

    Las soluciones a los programas se les harn disponibles despus de la fecha de entrega.

    Las soluciones a los programas se analizarn en clase.

    Es responsabilidad del(a) alumn@ el comparar sus programas con las soluciones.

    Nota: Hay muchas formas de hacer un programa para que resuelva un mismo problema. El programa solucin puede diferir del programa que ustedes hagan.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 21

  • 2.2. Evaluacin

    Examen global

    Examen escrito para intentar mejorar la calificacin de uno o ms parciales.

    Nota: El examen global es notoriamente ms difcil que el examen escrito de cualquier parcial ya

    que tiene que reflejar el trabajo de tareas y programas.

    Consta de tres partes (una por parcial) de las cuales el/la alumn@ escoge 1, 2, o 3 partes a presentar.

    Una vez que el/la alumn@ decide qu partes va a presentar entonces renuncia automticamente a la calificacin que

    tena en el parcial correspondiente. Esto aplica an si el/la

    alumn@ no se presenta al examen global.

    Requisitos para tener derecho a examen global Presentarse el ltimo da de clases (Lunes 5 de Diciembre 2011) en el lugar y hora de la clase para

    especificar qu partes del global van a presentar. Si no lo hacen, no tienen derecho a presentar el

    global.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 22

  • 2.2. Evaluacin

    La siguiente tabla muestra el caso de varios estudiantes hipotticos y sus calificaciones en el

    acta tras presentar o no alguna(s) parte(s) del

    examen global.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 23

  • 2.2. Evaluacin

    Correcciones a las calificaciones:

    Reclamos a calificaciones del examen slo se atienden durante la clase en la que se les entrega el examen.

    No se harn correcciones de calificaciones en ningn otro momento.

    Renuncia de calificaciones:

    Si quieren renunciar a su calificacin (NA en el acta) lo tienen que especificar POR ESCRITO en el examen del tercer parcial en el examen global.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 24

  • 2.2. Evaluacin

    Asistencias

    La asistencia al curso es a responsabilidad y criterio de cada alumn@.

    La asistencia es voluntaria pero NO se repiten clases en asesora.

    Participaciones

    Una participacin es una contribucin de parte del(a) alumn@ a la clase y que enriquece el proceso de enseanza-aprendizaje a criterio del profesor; el criterio no es debatible.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 25

  • 2.3. CALENDARIO

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 26

    ltima actualizacin:

    Septiembre 2011

  • 2.3. Calendario TENTATIVO

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 27

  • 2.4. RECURSOS

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 28

    ltima actualizacin:

    Septiembre 2011

  • 2.4 Recursos

    Asesora

    Con el profesor: Lunes, Mircoles, y Viernes de 11:30 a 13:00 hrs.

    Lugar: Cubculo H-286-B (edificio H 2 piso)

    Con la ayudante (Elizabeth): Lunes, Martes, Mircoles, Jueves, y Viernes de 10:00 a 14:00 hrs

    Lugar: Laboratorio de Base de Datos (H-299, edificio H 2 piso)

    Laboratorio de Base de Datos (H-299)

    Para acceder al laboratorio, soliciten su clave de ingreso al Responsable de Laboratorio de Cmputo en el HP-14 (edificio HP

    segundo piso)

    Computadoras del Edificio T

    Cuentas de UNIX

    Existen cuentas de UNIX que pueden usar para programar; si requieren de una, por favor solictenla al profesor.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 29

  • 2.4. Recursos

    URL (No es una hoja web)

    http://ce.azc.uam.mx/profesores/rrk/11-O/Programacion Estructurada/

    Seminotas (stas y otras diapositivas) y cdigos.

    Son SEMI-NOTAS, NO son notas completas y NO sustituyen al libro de texto. Es responsabilidad del(a) alumn@ complementar las semi-notas

    con sus propios apuntes.

    Es obligacin del(a) alumn@ el mantener sus propios apuntes ya que algunas preguntas del examen pueden ser de los visto/discutido en

    clase y no slo del contenido de las diapositivas.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 30

  • 2.4. Recursos

    Bloque de ejercicios

    Cada parcial cuenta con un bloque de 30 ejercicios diseados para repasar los conceptos de

    programacin.

    Se recomienda que el/la alumn@ realice estos ejercicios a conciencia ya que algunos ejercicios

    similares pueden venir en el examen.

    Las soluciones de los bloques de ejercicios estn disponibles desde el primer da de clases para que

    el/la alumn@ pueda comparar sus resultados.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 31

  • 2.5. DINMICA DE CLASE

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 32

  • 2.5 Dinmica de clase

    Exposicin de conceptos.

    Ejemplos de los conceptos.

    Ejercicios relacionados a los conceptos.

    Asesora en el desarrollo de sus programas durante la clase (sesiones prcticas) y en horario de

    asesora.

    Si tienen que salir/entrar del saln a deshora pueden hacerlo sin pedir permiso pero sin

    interrumpir la clase.

    Todo comentario que enriquezca la clase es bienvenido.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 33

  • 2.6 COMENTARIOS

    ADICIONALES

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 34

  • 2.6 Comentarios adicionales

    Un solo curso de un trimestre NO es suficiente para aprender a programar.

    Aprender a programar requiere:

    Desarrollar habilidades cognitivas y de abstraccin mental que slo se obtienen por el entrenamiento constante.

    Estas habilidades slo se pueden desarrollar por un@ mism@ al intentar hacer los programas un@ mism@.

    Compromiso y trabajo sincero.

    Sentarse en un saln y escuchar a alguien hablar de programar no sirve para aprender a programar.

    Copiar programas de otros no sirve para aprender a programar.

    Paciencia (hacer las cosas a ltima hora no sirve para nada).

    Hay que equivocarse muchas veces al principio para refinar las habilidades de programacin.

    El equivocarse requiere tiempo para corregir los errores. ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 35

  • 2.6 Comentarios adicionales

    Aprender a programar requiere:

    Leer y entender.

    La programacin es un mundo descomunal y no hay libro de texto que lo abarque en su totalidad.

    Hay que leer e interpretar correctamente mucha informacin para poder hacer un programa uno mismo.

    Pensar.

    Un buen programador entiende el concepto bsico y sabe aplicarlo al problema en particular.

    Uno no aprende a programar copiando y pegando cdigos de otros.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 36

  • 2.6 Comentarios adicionales

    En la programacin hay al menos dos conjuntos de conceptos:

    Conceptos bsicos Conceptos muy sencillos (hasta aburridos) pero que al combinarlos son sumamente poderosos.

    Conceptos derivados Conceptos elaborados a partir de los conceptos bsicos que pueden ser MUY difciles de entender si no

    se entienden por completo los conceptos bsicos.

    Para aprender a programar uno debe entender sin lugar a dudas los conceptos bsicos.

    Nota: Por muy aburrido u obvio que les parezca algo, de todos modos pongan atencin ya que el poco tiempo tedioso pero necesario para

    entender lo bsico les ahorrar das (si no es que semanas) ms

    adelante.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 37

  • 2.7. Bibliografa

    Del temario

    1. B.W. Kernighan y D.M. Ritchie, El lenguaje

    de programacin C, 2da. Edicin,

    Mxico: Prentice-Hall Hispanoamericana,

    1995.

    2. B.W. Kernighan y R. Pike, El entorno de

    programacin UNIX, Mxico: Prentice-Hall

    Hispanoamericana, 1987.

    3. C. Gregorio Rodrguez et al., Ejercicios de

    programacin creativos y recreativos en

    C++, Espaa: Prentice-Hall, 2002.

    4. F.J. Zaragoza Martnez, 64 ejercicios de

    proggramacin, Mxico: UAM

    Azcapotzalco, 2011.

    5. G.J. Bronson, C++ para ingeniera y

    ciencias, Mxico: International Thomson

    Editores, 2000.

    6. Oram y M. Loukides, Programming With

    GNU software, EUA: OReilly Media, 1996.

    Recomendada adicional.

    1. Cualquier libro de la serie de

    Cmo programar de Deitel y Deitel

    2. Langsam, Estructuras de Datos con C y C++, Prentice Hall

    3. Goodrich, Data Structures and Algorithms in C++, Ed. Wiley

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 38

  • 3. CONTENIDO DEL TEMARIO

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 39

    ltima actualizacin:

    Septiembre 2011

  • 3.1. ALGORITMOS Y

    PROGRAMAS

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 40

    ltima actualizacin:

    Septiembre 2011

  • Diagramas de flujo y pseudo-cdigo

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 41

    ltima actualizacin:

    Septiembre 2011

  • 3.1. Algoritmos y programas

    Qu es programar?

    Hacer un programa

    Qu es un programa?

    Un programa es un conjunto de instrucciones que una computadora ejecuta

    Cmo se especifican las instrucciones?

    Segn un lenguaje de programacin

    Por lo tanto, programar es hablarle a la computadora y decirle qu hacer

    Es fcil hablarle a una computadora?

    NO!

    Las computadoras son herramientas increblemente poderosas pero increblemente estpidas

    Las computadoras requieren que un humano les diga qu hacer con lujo de detalle.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 42

  • 3.1. Algoritmos y programas

    Hablar con otra persona es fcil por que muchas cosas se pueden dejar al aire ya que la otra persona intenta entender

    lo que uno le dice.

    Una computadora no intenta entender lo que uno le dice.

    Si uno le dice mal las cosas, la computadora hace mal las cosas.

    Hablar con una computadora requiere ser exacto, preciso, claro, puntual, exhaustivo.

    Tal vez por esto a algunas personas les resulta muy difcil aprender a programar.

    Una computadora no hace mal las cosas, ms bien, un programador no le dijo bien cmo hacer las cosas bien.

    A veces los programadores le dicen bien a las computadores cmo hacer las cosas mal.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 43

  • 3.1. Algoritmos y programas

    A una persona le pueden decir: Viste la cosa que pas junto a eso?.

    A una computadora no.

    A una computadora le tienen que decir: Notaste en grado W la diferencia de posicin entre el objeto

    nmero X del escenario Y cuyo centro de masa se

    encuentra a Z unidades lgicas del centro de masa

    del objeto Alfa?

    Y adems, decirle ANTES: Qu es un objeto? Cmo calculo el centro de masa? Dnde est el origen? Qu

    objetos componen al escenario? Qu es un escenario?

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 44

  • 3.1. Algoritmos y programas

    Cosas como:

    Computadora, ejecuta una simulacin del asteroide chocando contra la base espacial Alfa

    Computadora, busca una anomala en las seales de vida de la nave

    Computadora, compensa los escudos para que la radiacin proteja la nueva forma de vida

    Weapons at maximum!

    Todo lo anterior es pura ciencia ficcin (actualmente)

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 45

  • 3.1. Algoritmos y programas

    Qu necesito para poder crear un programa?

    Papel y lpiz.

    Editor de texto y Compilador aparte de lo obvio.

    Qu necesito saber para usar estas herramientas?

    Un lenguaje, saber hacer programas y manejo bsico de un sistema operativo.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 46

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 47

    Herramientas Conocimientos Programa

    Editor de Texto

    Compilador

    Sistema Operativo

    Computadora (HW)

    Lenguaje de

    Programacin

    Tcnicas de

    Programacin

    Uso de Sistema

    Operativo

    Solucin a

    un problema

    (por lo que se le

    paga a l@s ingenier@s)

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 48

    Editor de Texto

    Compilador

    Sistema Operativo

    Computadora (HW)

    Algoritmo

    Uso

    elemental

    Creacin /

    modificacin

    Resolucin

    errores

    Lo trataremos

    en este curso

    No se ve en

    este curso

  • 3.1. Algoritmos y programas

    Qu es lo que hago al programar?

    Traduzco un algoritmo a un lenguaje de programacin

    Algoritmo Secuencia de pasos ordenados que se ejecutan uno tras de otro para llevar a cabo una tarea en especfico.

    Ejemplo de algoritmo:

    Objetivo: Ir a clase a las 7:00 a.m.

    Algoritmo: Despertar Quitarse la pijama Baarse Vestirse Desayunar Tomar el camin.

    El resultado de este algoritmo sera el mismo si se ejecutaran los pasos en orden distinto?

    ltima actualizacin: Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 49

  • 3.1. Algoritmos y programas

    Lenguaje de programacin Gramtica que define las reglas que una computadora entiende

    para darle instrucciones. Igual que con los

    humanos, es importante saber las reglas de gramtica para saber darnos a entender bien

    Ejemplos de lenguajes de programacin: Fortran, Pascal, Cobol, Basic, Java, C, C++, C#, etc.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 50

  • 3.1. Algoritmos y programas

    Programar es UN ARTE! as como hablar bien es un arte.

    Y como todo buen arte, ste se debe practicar para poder ser hbil en el mismo.

    Sean proactivos! es SU futuro! an cuando no vayan para Ing. en Computacin. Adems, la programacin est presente

    de una u otra forma en muchos mbitos de la ingeniera.

    Sugerencia: Csense con un lenguaje y sean polgamos!

    Por qu? Otras herramientas y plataformas tienen prcticamente lo mismo, pero no sabrn acceder a esas caractersticas si no las

    conocen en al menos una herramienta/plataforma

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 51

  • 3.1. Algoritmos y programas

    Hasta el momento hemos visto que un algoritmo es una secuencia lgica de pasos ordenados para llevar a cabo una

    tarea.

    Lgica Tiene una razn de ser que responde a una necesidad para resolver el problema.

    Orden El paso del algoritmo depende del estado actual de la informacin disponible; ejecutar pasos en distintos

    momentos generalmente provoca resultados distintos del

    algoritmo.

    Para poder implementar un algoritmo ste tiene que ser bosquejado|diseado previamente.

    Existen herramientas en la programacin para bosquejar algoritmos.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 52

  • 3.1. Algoritmos y programas

    Las herramientas ms comunes para bosquejar algoritmos son:

    Pseudocdigo Descripcin escrita de los pasos del algoritmo; la escritura se hace en lenguaje natural con

    el objetivo de que cualquier persona pueda entender

    los pasos sin requerir de conocimientos avanzados de

    programacin.

    Diagramas de flujo Representacin grfica de un algoritmo.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 53

  • 3.1. Algoritmos y programas

    En el pseudocdigo y los diagramas de flujo se describen los pasos en trminos de:

    1. Instrucciones de entrada/salida Instrucciones que denotan el recibir o transferir datos a entidades externas al

    algoritmo (p.e., leer del usuario, escribir a base de datos,

    leer de hoja web, etc.)

    2. Instrucciones aritmtico-lgicas Instrucciones que ejecutan operaciones aritmticas (+, -, *, /, %, ^, etc.) y

    operaciones lgicas (y, o, no, etc.)

    3. Instrucciones condicionales Instrucciones que evalan si una condicin se cumple (si condicin entonces )

    4. Instrucciones cclicas Instrucciones que permiten repetir una o ms instrucciones varias veces (mientras condicin hacer )

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 54

  • 3.1. Algoritmos y programas

    Ejemplo de pseudocdigo para controlar el acceso a un sistema de informacin:

    1. Repetir tres veces

    1. Escribir en pantalla: Introduzca su Nombre:

    2. Leer del usuario Nombre.

    3. Escribir en pantalla: Introduzca su contrasea:

    4. Leer del usuario Contrasea.

    5. Si Nombre es Administrador y Contrasea es Hola entonces

    1. Escribir en pantalla: Bienvenido Administrador

    2. Iniciar programa de conexin a base de datos

    3. Terminar.

    6. De lo contrario

    1. Escribir en pantalla: Nombre o contrasea incorrecta, vuelva a intentar.

    2. Apagar computadora.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 55

    * La identacin refleja

    cdigo dependiente

  • 3.1. Algoritmos y programas

    Diagramas de flujo

    Los diagramas de flujo describen los pasos de un algoritmo en los mismos trminos que el

    pseudocdigo (Instrucciones de

    entrada/salida, aritmtico/lgicas,

    condicionales, y cclicas), pero con una

    representacin grfica de los mismos.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 56

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 57

    NO

    SI

    Terminal: Indica comienzo

    , fin, o suspensin de la

    ejecucin de un algoritmo.

    Entrada/Salida

    Proceso

    Evaluacin de una condicin;

    la flecha indica el flujo de

    procesamiento si la condicin

    es verdadera (SI) o falsa (NO)

    Condicin mltiple

    Lnea de flujo; indica la

    direccin del flujo de

    procesamiento

    Lnea conectora; indica

    una unin entre smbolos

    Conector; indica la conexin

    de diagramas en hojas distintas

    Llamada a subrutina; es decir,

    otro algoritmo que se representa

    con este bloque solamente.

  • ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 58

    Por lo tanto, el algoritmo para controlar el acceso a un sistema de informacin se vera de la siguiente manera en un

    diagrama de flujo. Inicio

    Pantalla: Introduzca su Nombre:

    Programa de conexin a

    Base de Datos

    1. Repetir tres veces

    1. Escribir en pantalla: Introduzca su Nombre:

    2. Leer del usuario Nombre.

    3. Escribir en pantalla: Introduzca su contrasea:

    4. Leer del usuario Contrasea.

    5. Si Nombre es Administrador y Contrasea es

    Hola entonces 1. Escribir en pantalla: Bienvenido Administrador

    2. Iniciar programa de conexin a base de datos

    3. Terminar.

    6. De lo contrario 1. Escribir en pantalla: Nombre o contrasea incorrecta,

    vuelva a intentar.

    2. Apagar computadora.

    Teclado: Nombre

    Pantalla: Introduzca su Contrasea:

    Teclado: Contrasea

    Nombre =

    Administrador Y

    Contrasea =

    Hola

    Fin

    Pantalla: Nombre o contrasea

    incorrecta, vuelva

    a intentar

    Pantalla: Bienvenido Administrador

    Apagar

    computador

    a

    SI

    NO

    Es la cuarta

    ejecucin?

    NO

    SI

  • 3.1. Algoritmos y programas

    En el bosquejo de un algoritmo:

    Casi siempre se usan contenedores temporales que NO son usados directamente para

    almacenar los datos de entrada o de salida.

    Estos contenedores se conocen en la programacin como variables.

    Hay contenedores de datos (valores) y contenedores de conjuntos de datos.

    Los contenedores de conjuntos de datos se conocen como estructuras de datos.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 59

  • 3.1. Algoritmos y programas

    En el bosquejo de un algoritmo:

    Siempre hay que marcar un punto de inicio y al menos un punto de trmino del algoritmo.

    La asignacin en las expresiones es del lado derecho de la igualdad hacia el lado izquierdo de

    la igualdad.

    a := b significa que el valor de la variable b se le asigna a la variable a

    i = 0 significa que la variable i toma el valor de cero

    Alfa 5 + a significa que la variable Alfa recibe el valor de 5 sumado al valor que tiene la variable a

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 60

  • 3.1. Algoritmos y programas

    A continuacin veremos una serie de ejemplos de algoritmos tanto en pseudocdigo como en diagramas de flujo y

    analizaremos la ejecucin de dichos algoritmos observando:

    La evolucin de los datos

    La informacin desplegada al usuario

    La informacin capturada del usuario

    Vale la pena preguntarse:

    Qu pasara si los pasos no tuvieran ese orden?

    Qu pasara si los valores iniciales no fuesen los especificados?

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 61

    NOTA: Los siguientes ejemplos han sido tomados de la bibliografa (Programacin en C++ - Algoritmos, estructuras

    de datos y objetos. Luis Joyanes Aguilar, Ed. McGrawHill) y

    son reproducidos en estas diapositivas con el nico

    objetivo de formacin acadmica.

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 62

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 63

    Nota: la condicin 4 est lreves

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 64

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 65

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 66

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 67

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 68

    Nota: Falla ya que acepta nmeros negativos; esto

    contradice el planteamiento del problema

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 69

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 70

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 71

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 72

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 73

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 74

  • 3.1. Algoritmos y programas

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 75

  • 3.2. DISEO DE PROGRAMAS

    ESTRUCTURADOS

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 76

    ltima actualizacin:

    Septiembre 2011

  • 3.2. Diseo de programas

    estructurados

    Qu es la programacin estructurada?

    Es un paradigma de programacin (una forma de hacer programas).

    Ejemplos paradigmas de programacin: Programacin Orientada a Objetos, Programacin Visual Orientada a Eventos, Programacin Funcional, etc.

    Sus caractersticas son:

    1. Un programa es una estructura compuesta de sub-estructuras similares.

    2. Las estructuras se construyen con instrucciones de: entrada/salida,

    aritmtico-lgicas, condicionales, y cclicas.

    3. Los programas se dividen en sub-programas con un nico punto de entrada

    pero con varios puntos de salida.

    Una de las ventajas de la programacin estructurada es que facilita la modularidad.

    Separar las sub-estructuras del programa en segmentos cuya funcionalidad no se intersecte.

    En otras palabras, hacer segmentos de cdigo que se dediquen a resolver una parte del problema global.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 77

  • 3.2. Diseo de programas

    estructurados

    Cmo disear programas estructurados?

    Para disear un programa estructurado se tiene que seguir una estrategia que definir cmo y cules estructuras y sub-estructuras

    deben de crearse para que un programa en particular resuelva un

    problema dado.

    Existen muchas estrategias; las dos ms comunes son: De arriba-hacia abajo, y De abajo-hacia arriba.

    De arriba-hacia abajo (top-down en ingls) tambin conocido como proceso de anlisis o descomposicin.

    De abajo-hacia arriba (bottom-up en ingls) tambin conocido como proceso de sntesis.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 78

  • 3.2. Diseo de programas

    estructurados

    Estrategia de arriba-hacia abajo

    Consiste en descomponer un sistema (la posible solucin al problema) en subsistemas con el objetivo de ir conociendo las

    necesidades (entradas, procesos, salidas) de cada subsistema.

    En esta estrategia, cada subsistema se modela sin gran detalle inicialmente para despus detallarlo con un proceso de anlisis.

    Cada vez que se define un subsistema ste se vuelve a descomponer hasta llegar a una definicin de un subsistema en

    nicamente elementos bsicos.

    Cules son los elementos bsicos en la programacin estructurada?: Instrucciones de entrada/salida, aritmtico-lgicas, condicionales, y

    ciclos.

    Nota: En algunas ocasiones nos encontraremos con subsistemas que resuelven problemas que alguien ya resolvi por lo que se puede

    retomar esa solucin sin tener que disear la solucin a detalle otra vez.

    Esto se conoce como reutilizacin de cdigo.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 79

  • 3.2. Diseo de programas

    estructurados

    Estrategia de abajo-hacia arriba

    Consiste en ensamblar sistemas existentes para crear un sistema ms grande. Por lo tanto, los sistemas existentes se convierten en

    sub-sistemas del sistema nuevo.

    En esta estrategia, cada subsistema est definido a gran detalle inicialmente y se acopla a otros subsistemas para crear el sistema

    que resuelve el problema.

    Esta estrategia implica el empezar con subsistemas sencillos que eventualmente crecen (al integrarse unos con otros),

    incrementando su complejidad y completitud (para resolver el

    problema).

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 80

  • 3.2. Diseo de programas

    estructurados

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 81

  • Comandos bsicos de la lnea de comandos.

    Para ver el ambiente de desarrollo de windows con Visual Studio y Codeblocks dirigirse a: 4.2.

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 82

    ltima actualizacin:

    Septiembre 2011

  • 3.3. AMBIENTE DE DESARROLLO

    UNIX

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 83

    ltima actualizacin:

    Septiembre 2011

  • Herramientas Conocimientos Programa

    Editor de Texto

    Compilador

    Sistema Operativo

    Computadora (HW)

    Lenguaje de

    Programacin

    Tcnicas de

    Programacin

    Uso de Sistema

    Operativo

    Solucin a

    un problema

    (por lo que se le

    paga a l@s ingenier@s) 3.3. Ambiente de desarrollo UNIX

    Qu es UNIX?

    UNIX es un sistema operativo cuya interfaz principal es de tipo lnea de comandos

    Linux (p.e. Ubuntu) es un sistema operativo derivado de Unix pero cuya interfaz principal es grfica.

    Para poder trabajar en UNIX generalmente se requiere de una cuenta de usuario y contrasea (la que recibieron al darse de alta

    en el buzn electrnico) y acceder a la computadora (o servidor)

    donde est instalado UNIX.

    Acceder a la computadora se puede hacer de dos formas:

    Local En la computadora en la que estn sentados.

    Remota Necesitan un cliente telnet para acceder remotamente al servidor como se muestra en la siguiente diapositiva.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 84

  • 3.3. Ambiente de desarrollo UNIX

    Ejemplo de conexin remota a UNIX

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 85

  • 3.3. Ambiente de desarrollo UNIX

    Los comandos bsicos de UNIX para manejo de archivos son:

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 86

    Herramientas Conocimientos Programa

    Editor de Texto

    Compilador

    Sistema Operativo

    Computadora (HW)

    Lenguaje de

    Programacin

    Tcnicas de

    Programacin

    Uso de Sistema

    Operativo

    Solucin a

    un problema

    (por lo que se le

    paga a l@s ingenier@s)

    Comando Funcin

    ls Hace una lista de archivos y directorios (carpetas)

    ls a Hace una lista de todos los archivos y directorios

    mkdir Crea un directorio de nombre

    rmdir Borra el directorio de nombre

    cd Cambia la posicin del cursor hacia dentro del

    cd Cambia la posicin del cursor al directorio home

    cd ~ Cambia la posicin del cursor al directorio home

    cd .. Cambia la posicin del cursor al directorio anterior en el rbol

    pwd Despliega la ruta del directorio actual

  • 3.3. Ambiente de desarrollo UNIX

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 87

    Ejemplo de comandos bsicos.

  • 3.3. Ambiente de desarrollo UNIX

    Prctica # 1

    Use los comandos bsicos de UNIX para crear una estructura de directorios como la mostrada en la siguiente figura.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 88

  • 3.3. Ambiente de desarrollo UNIX

    Solucin a la prctica # 1

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 89

  • 3.3. Ambiente de desarrollo UNIX

    Edicin de archivos de texto en UNIX

    Existen varios editores de texto en UNIX que varan en sus complejidad y capacidades.

    Ejemplos: vi, vim, emacs, pico, etc.

    Por su simplicidad usaremos pico en este curso.

    Para ver el contenido de un archivo en UNIX se puede usar el comando more .

    Si el archivo es de modo texto se ve el texto que contiene.

    Si el archivo es de modo binario se ven varios caracteres con distintos significados.

    Nota: para borrar un archivo de texto desde la lnea de comandos (terminal) pueden usar el comando rm

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 90

  • 3.3. Ambiente de desarrollo UNIX

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 91

    Ejemplo de edicin de un archivo de texto.

  • 3.3. Ambiente de desarrollo UNIX

    Adems estn los comandos man y -? para obtener ayuda

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 92

  • 3.5. ELEMENTOS BSICOS DE

    UN PROGRAMA EN LENGUAJE

    C Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 93

    ltima actualizacin:

    Septiembre 2011

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    Para empezar a comprender los elementos bsicos de un programa en lenguaje c crearemos un programa elemental que

    despliega en la terminal la cadena: Hola mundo de programas de lnea de comandos en UNIX :-)

    Requisitos

    Archivo de texto con cdigo fuente.

    Programa compilador (gcc)

    El siguiente vdeo muestra la creacin y ejecucin de este primer programa.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 94

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    Creacin y ejecucin del primer programa en c.

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 95

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    Qu acabamos de hacer?

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 96

    Editor de

    Texto Compilador Enlazador

    Archivo con

    el cdigo

    del programa

    Archivo con el

    cdigo objeto

    Otros archivos

    con cdigo

    objeto

    Compilador/Enlazador

    Archivo con el

    cdigo ejecutable

    Ordenes

    a ejecutar

    Herramientas Conocimientos Programa

    Editor de Texto

    Compilador

    Sistema Operativo

    Computadora (HW)

    Lenguaje de

    Programacin

    Tcnicas de

    Programacin

    Uso de Sistema

    Operativo

    Solucin a

    un problema

    (por lo que se le

    paga a l@s ingenier@s)

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    Qu acabamos de hacer?

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 97

    Editor de

    Texto Compilador Enlazador

    Archivo con

    el cdigo

    del programa

    Archivo con el

    cdigo objeto

    Otros archivos

    con cdigo

    objeto

    Compilador/Enlazador

    Archivo con el

    cdigo ejecutable

    Ordenes

    a ejecutar

    Herramientas Conocimientos Programa

    Editor de Texto

    Compilador

    Sistema Operativo

    Computadora (HW)

    Lenguaje de

    Programacin

    Tcnicas de

    Programacin

    Uso de Sistema

    Operativo

    Solucin a

    un problema

    (por lo que se le

    paga a l@s ingenier@s)

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 98

    Bibliotecas

    Cuerpo del programa

    Comentarios

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 99

    Comentarios

    Una forma de definir comentarios en-cdigo es a travs de ponerlos entre /* y */.

    Todo lo que quede entre estos dos delimitadores sern tomados como si fueran comentarios.

    Estos es vlido para una ms lneas.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 100

    El cuerpo del programa es donde est todo el cdigo que constituye a su

    programa.

    De momento, con lo que sabemos hasta ahorita, vamos a decir que el cuerpo del

    programa principal son todas las lneas de

    cdigo que se encuentra entre:

    int main()

    {

    y

    return 0;

    }

    Ms adelante veremos exactamente qu significa cada una de estas lneas de

    cdigo. De momento, tmenlo como

    una regla.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 101

    Dentro del cuerpo del programa tenemos varias lneas de cdigo

    que componen a nuestro

    programa.

    En general, una lnea de cdigo es una o ms expresiones que cumplen las reglas de la

    gramtica del lenguaje de

    programacin, es decir, la sintaxis.

    Una lnea de cdigo de un programa (en c y C++) termina

    con un ;

    Tal y como est definida la sintaxis del lenguaje c

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 102

    Todas las lneas de cdigo estn compuestas de operadores, operandos, y el fin de la expresin; por

    ejemplo la lnea de cdigo:

    Operadores

    (alguna operacin)

    Operandos

    (a lo que se

    le aplica una

    operacin) Fin de la

    expresin

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 103

    printf est definida como una funcin en una biblioteca (); esta

    funcin sirve para imprimir una cadena

    de caracteres en el dispositivo estndar

    de salida de la computadora (es decir,

    el monitor).

    Hola Mundo! est definido como una cadena de caracteres.

    () los parntesis se consideran como un operador

    Operadores

    (alguna operacin)

    Operandos

    (a lo que se

    le aplica una

    operacin)

    Fin de la

    expresin

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 104

    printf est definida como una funcin en una biblioteca (); esta

    funcin sirve para imprimir una cadena

    de caracteres en el dispositivo estndar

    de salida de la computadora (es decir,

    el monitor).

    Hola Mundo! est definido como una cadena de caracteres.

    () los parntesis se consideran como un operador

    Operadores

    (alguna operacin)

    Operandos

    (a lo que se

    le aplica una

    operacin)

    Fin de la

    expresin

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 105

    Por lo tanto, la siguiente lnea de cdigo:

    Le ordena a la computadora:

    La cadena Hola Mundo! despligala en el dispositivo estndar de salida FIN

    Y cual es el objeto de salida estndar en una computadora? El monitor!

    Un verdadero programador debe de ser capaz de leer de esta forma absolutamente cualquier lnea

    de cdigo.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 106

    Recordemos Un algoritmo se debe de expresar en trminos de:

    1. Instrucciones de entrada/salida

    2. Instrucciones aritmtico-lgicas

    3. Instrucciones condicionales

    4. Instrucciones cclicas

    Qu acabamos de aprender para c?

    Instrucciones de salida.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 107

    Cadenas En cdigo, una cadena es un conjunto de caracteres entre comillas. Sin embargo, los caracteres no siempre son imprimibles, hay otro tipo de caracteres que se conocen como caracteres de escape y ms que desplegar un arreglo de pixeles (un carcter), ejecutan una operacin sobre el cursor (en modo texto).

    Los caracteres de escape se definen con la combinacin de la diagonal invertida \ seguida de un carcter.

    Ejemplo: \n es el caracter de escape que le indica al cursor que se salte a una nueva lnea (\new line)

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 108

    Otros caracteres de escape:

    \n nueva lnea (mueve el cursor una lnea hacia abajo)

    Linux: Lo mueve en la misma posicin

    Windows: Lo mueve hacia abajo y lo enva hasta la izquierda

    \r retorno de carro (mueve el cursor hasta la izquierda de la pantalla)

    Windows: No hace nada; en windows \n ya incluye un retorno de carro.

    Linux: Generalmente \r va acompaado de un \n

    \b Backspace, se mueve un caracter a la izquierda

    \a Emite un pitido (beep) en la bocina de la computadora.

    Nota: La bocina de la computadora NO es la tarjeta de sonido, los mp3s y otros archivos de sonido se reproducen de otra forma (escribiendo en la tarjeta de sonido, NO en la bocina de la computadora).

    \t Da un tabulador cierta cantidad de espacios.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 109

    Otros caracteres de escape:

    \f Formfeed (cargar forma) se usa con impresoras

    \v Tabulador vertical se usa con impresoras

    \ Imprime comilla sencilla

    \ Imprime doble comilla

    \? Signo de interrogacin

    \\ Imprime diagonal invertida

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 110

    Una cadena se representa como un conjunto de caracteres (incluyendo los de escape) entre una apertura y un cierre de doble comillas, por ejemplo:

    Un caracter se representa entre comillas simples:

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 111

    Comentarios:

    Para un programador Hola\n son 6 caracteres (H, o, l, a, \, n)

    Para la computadora son 5 caracteres solamente (H, o, l, a, \n)

    Para la computadora cuando encuentra un \ lo junta con el siguiente caracter para convertirlos en un solo caracter (un caracter de escape).

    Cmo le hago para imprimir una \ si la computadora lo va a juntar con el siguiente?

    Pongo dos \ \ seguidos, por ejemplo: Hola \\ mundo imprime en pantalla: Hola \ mundo

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 112

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    Prctica # 2

    Cree un programa en lenguaje c que imprima cuatro estrofas de una cancin separadas por una lnea y que inicie cada prrafo con un

    tabulador.

    Ejemplo de la salida:

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 113

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    Solucin a la prctica # 2

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 114

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 115

    Este lnea de cdigo tambin es una expresin. De hecho, este tipo de expresin se conoce como invocacin de una funcin.

    Una funcin es un conjunto de cdigo encapsulado e identificado por un nombre.

    Lo que esta lnea de cdigo hace es invocar una comando de la lnea de comando del sistema; el comando que invoca es: Pause

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 116

    Recordemos podemos usar cdigo que alguien ms hizo

    Qu acabamos de aprender para c?

    Llamar a subrutinas (invocar una funcin).

    Llamada a subrutina; es decir,

    otro algoritmo que se representa

    con este bloque solamente.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 117

    Desplegar en la pantalla cadenas es bastante til, pero tambin es necesario ver los valores de resultados y esto no

    se puede satisfacer slo con cadenas.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 118

    Este programa si bien resuelven el problema, no es muy til.

    Por qu? Por que slo resuelven un mismo problema y para resolver el problema ms parecido posible (slo cambiando

    datos y con la misma operacin), el programador debe de

    volver a hacer el programa y PEOR AN: debe de volver a

    resolver el problema l/ella mism@.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 119

    Una mejor solucin a este problema sera un programa que calcula el cuadrado de la suma de dos nmeros

    que el usuario captura y no que el programador pone

    en el cdigo.

    Para hacer esto necesitamos ver cmo se implementan en c los repositorios de informacin

    (datos).

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 120

    Una computadora slo almacena 1s y 0s, esta forma de representar datos se le conoce como representacin binaria (nmeros en base 2).

    Un nmero binario (compuesto slo de 1s y 0s) tiene un valor equivalente en otras representaciones, como la: octal (base 8),

    decimal (base 10), y hexadecimal (base 16).

    Ejemplos:

    El nmero en binario 0010 es 2 en decimal, 2 en octal, y 2 en hexadecimal.

    El nmero en binario 1010 es 12 en octal, 10 en decimal, y A en hexadecimal.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 121

    Una computadora slo almacena 1s y 0s, esta forma de representar datos se le conoce como representacin binaria (nmeros en base 2).

    Un nmero binario (compuesto slo de 1s y 0s) tiene un valor equivalente en otras representaciones, como la: octal (base 8),

    decimal (base 10), y hexadecimal (base 16).

    Ejemplos:

    El nmero en binario 0010 es 2 en decimal, 2 en octal, y 2 en hexadecimal.

    El nmero en binario 1010 es 12 en octal, 10 en decimal, y A en hexadecimal.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 122

    Una computadora slo almacena 1s y 0s, esta forma de representar datos se le conoce como representacin binaria (nmeros en base 2).

    Un nmero binario (compuesto slo de 1s y 0s) tiene un valor equivalente en otras representaciones, como la: octal (base 8),

    decimal (base 10), y hexadecimal (base 16).

    En c no se acostumbra trabajar con los 1s y los 0s directamente (aunque se puede), sino con datos en decimal.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 123

    Los siguientes son conteos de 0 al valor 15 en:

    Binario: 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111

    Octal: 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017

    Decimal: 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, 0008, 0009, 0010, 0011, 0012, 0013, 0014, 0015

    Hexadecimal: 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, 0008, 0009, 000A, 000B, 000C, 000D, 000E, 000F

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 124

    Una computadora slo almacena 1s y 0s, pero stos se les puede interpretar de distinta forma, por ejemplo:

    010000002 es el carcter @ en ASCII

    010000002 es 64 como un nmero entero

    010000002 es 8.9683E-44 en IEEE 754

    010000002 es True como booleano

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 125

    Es importante especificarle a la computadora cmo debe de interpretar un conjunto de 1s y 0s almacenados en la memoria.

    Esto se logra a travs de especificar el tipo de datos.

    Cmo se especifican el tipo de datos?

    A travs de una palabra que indica el tipo.

    De hecho, el tipo no solo indica cmo interpretarlo sino cuntos bytes se utilizan para un dato de ese tipo en particular.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 126

    Palabra Tipo de datos # bytes Rango de valores

    char Caracter en cdigo ASCII 1 De 0 a 255

    bool Booleano (verdadero o falso) 1 {True, False}

    short Entero "corto" 2 De -32,768 a 32,767

    int Entero 4 De 2,147,483,648 a 2,147,483,647

    long Entero "largo" 4 De 2,147,483,648 a 2,147,483,647

    __intn Entero de n bytes n* Depende de n

    float Punto flotante (real) 4 De -3.4E38 a 3.4E38 (7 digitos)

    double Real largo 8 De -1.7E308 a 1.7E308 (15 dgitos)

    __wchar_t Caracter en UNICODE 2* De 0 a 65,535

    *Estos son exclusivos de Microsoft, los dems

    son especficos de Win32 y pueden cambiar en

    otras plataformas

    Por qu no de -32,768 a 32,768?

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 127

    Qu es el cdigo ASCII?

    ASCII (American Standard Code for Information Interchange)

    Es una lista donde caracteres (imprimibles, de escape, y otros) se les asocia un nmero para poder ser representados dentro de una computadora.

    Recordemos que una computadora slo guarda nmeros (1s y 0s), por lo tanto, necesitamos asociar caracteres a nmeros.

    Imagen tomada

    de Wikipedia

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 128

    Qu es UNICODE?

    Es un estndar similar al ASCII pero que abarca caracteres no estndar del alfabeto latino, por ejemplo, caracteres chinos, rabes, japoneses, rusos, etc.

    Utiliza ms bytes que el ASCII

    ASCII slo usa 1 bytes, por lo tanto slo puede representar 256 smbolos.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 129

    Algunos tipos de datos se les puede agregar modificadores (pinsenlo como un adjetivo) que varan la interpretacin del tipo de dato. Ejemplos:

    unsigned short va de 0 a 65,535

    unsigned int va de 0 a 4,294,967,295

    long long va de 9,223,372,036,854,775,808 a 9,223,372,036,854,775,807

    unsigned long long va de 0 a 18,446,744,073,709,551,615

    signed char va de -128 a 127

    Hay ms combinaciones, pero varan mucho de plataforma a plataforma (Linux vs. Mac vs. Microsoft).

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 130

    Hasta ahora hemos visto que los datos slo son 1s y 0s en memoria y que es necesario definir cmo se van a interpretar al

    especificar su tipo.

    En este punto vamos a ver cmo puedo reservar un pedazo de memoria y definir su tipo.

    A esta accin se le conoce como declarar una variable.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 131

    Lo que sucede al declarar una variable es que el programa le pide al S.O. tantos bytes como para

    almacenar en memoria ese tipo de datos.

    El S.O. verifica en sus tablas qu memoria est libre (no ocupada por otro programa, p.ej. Excel, Word). Y le dice

    al programa dnde (direccin de memoria) empieza la

    direccin de memoria donde el programa puede

    almacenar su variable.

    EL NOMBRE DE LA VARIABLE ES LA DIRECCIN DE MEMORIA DONDE EMPIEZA A ALMACENARSE EL DATO DE

    ESA VARIABLE.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 132

    Una variable es un espacio en memoria donde podemos almacenar un dato, qu tipo de dato? El que se le especifique en la declaracin.

    La sintaxis del lenguaje c para declarar variables es:

    ;

    Ejemplos: int i; // i es una variable de tipo entero

    char c; // c es una variable de tipo caracter

    float fFlotante; // fFlotante es un nmero real

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 133

    Las lneas de cdigo:

    int i; // i es una variable de tipo entero

    char c; // c es una variable de tipo caracter

    float fFlotante; // fFlotante es un nmero real

    Son ledas por un verdadera programador como:

    A partir de aqu existe un entero llamado i

    A partir de aqu existe un caracter llamado c

    A partir de aqu existe un real llamado fFlotante

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 134

    Adems de declarar variables stas tambin se pueden inicializar con un valor dado al momento de su creacin. La sintaxis para

    esto es:

    = ;

    Ejemplos:

    int i = 0;

    char c = a;

    float fFlotante = 0.0f;

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 135

    En c la impresin de variables requiere que pongan como un parmetro de printf la variable

    y adems cmo quieren que la imprima.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 136

    En c la impresin de variables requiere que pongan como un parmetro de printf la variable

    y adems cmo quieren que la imprima.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 137

    En c la impresin de variables requiere que pongan como un parmetro de printf la variable

    y adems cmo quieren que la imprima.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 138

    Qu pasa si en c no ponemos bien el tipo de datos a imprimir?

    Son las mismas variables pero se ven datos distintos! por que se mandan imprimir con interpretaciones incorrectas.

    Esto no sucede en C++ ya que no se pide el formato

    Este es un error lgico MUY difcil de encontrar

    Los errores lgicos no los detecta el compilador!

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 139

    Cmo saber los detalles de cmo imprimir nmeros en printf?

    Comando man

    Principales tipos de printf:

    d Decimal (nmeros enteros)

    f Flotante (nmeros con punto flotante)

    s Cadena de caracteres.

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 140

    Ya vimos que printf puede tener problemas para imprimir datos si stos se les dice que los interprete de manera

    equivocada.

    Puedo forzar que un dato la computadora lo interprete de otra forma?

    Si

    Este proceso se conoce como casting y para lograrlo hay que poner como prefijo a una variable el nuevo tipo de dato entre

    parntesis:

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 141

    Ejemplo de casting

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 142

    Recordemos

    En el bosquejo de un algoritmo:

    Casi siempre se usan contenedores temporales que NO son usados directamente para

    almacenar los datos de entrada o de salida.

    Hay contenedores de datos (valores) y contenedores de conjuntos de datos.

    Qu acabamos de aprender para c?

    Cmo crear contenedores de informacin (variables para almacenar datos).

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    Prctica # 3

    Cree un programa en lenguaje c que imprima las letras a, b, c, A, B, y C en minsculas y maysculas junto con sus valores ASCII como enteros y

    como flotantes.

    Ejemplo de la salida:

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 143

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    Solucin a la prctica # 3

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 144

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 145

    Entrada estndar en c

    Hasta el momento hemos visto cmo desplegar informacin en el dispositivo estndar de salida (monitor); ahora veremos cmo recibir informacin del dispositivo estndar de entrada (el teclado).

    El dispositivo estndar de entrada de una computadora es el teclado.

    La lectura de informacin del teclado se hace con otra entidad del conjunto estndar (std)

    scanf() para c

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 146

    ejemplo

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    Prctica # 4

    Cree un programa en c que lea 5 nmeros flotantes y calcule su promedio.

    Ejemplo de ejecucin:

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 147

  • 3.5. Elementos bsicos de un

    programa en lenguaje c

    Solucin a la prctica # 4

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 148

  • Variables

    Entrada y salida estndar

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 149

    ltima actualizacin:

    Septiembre 2011

  • 3.4. PROGRAMACIN

    MODULAR

    Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 150

    ltima actualizacin:

    Septiembre 2011

  • 3.4. Programacin modular

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 151

    Comentarios

    Bibliotecas

    Cuerpo del programa

    El siguiente ejemplo nos demuestra otro concepto: se recomienda siempre empezar cada funcin con la

    declaracin de variables que se van a usar.

  • 3.4. Programacin modular

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 152

    Comentarios

    Bibliotecas

    Inicio funcin principal

    Declaracin de variables

    Cdigo de la funcin principal

    Termina funcin principal Retorno de un valor

    Con lo que sabemos hasta ahorita podemos ya identificar cada componente de un

    programa y de una funcin. NOTA: Es altamente recomendado que absolutamente

    todo programa y funciones que ustedes creen siga esta estructura.

  • 3.4. Programacin modular

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 153

    Tipo_Retorno

    Nombre(parametros)

    {

    //lneas de cdigo

    } Tipo_Retorno Nombre(parametros)

    {

    /*********************************

    * Seccin de declaracin de *

    * variables *

    *********************************/

    /*********************************

    * Seccin cdigo *

    *********************************/

    // Retorno de un valor

    }

  • 3.4. Programacin modular

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 154

    Analicemos ahora la ltima lnea de cdigo

    Esta ltima lnea del programa elemental (Hola Mundo!) lo que hace es regresar a la entidad que invoca la funcin

    main el valor de 0 (cero) cuando termina de ejecutarse

    esta funcin.

    Quin es esta entidad?

    El Sistema Operativo.

  • 3.4. Programacin modular

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 155

    NOTA: Este programa es muy sencillo y bien se puede trabajar con l en su totalidad.

    Esto no es as en los programas normales. Un programa generalmente consta de varios mdulos y uno NO siempre puede ver el cdigo completo.

    Por lo tanto, vayan fijndose y aprendiendo bien los componentes bsicos de los programas ya que los

    programas que veremos ms adelante NO caben completos en las diapositivas

  • 3.4. Programacin modular

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 156

    Puede un programador definir sus propias subrutinas/funciones?

    Si

    Qu se necesita saber definir subrutinas/funciones?

    Las partes que las componen

  • 3.4. Programacin modular

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 157

    Las funciones tienen dos partes bsicas:

    Prototipo El prototipo es la declaracin de la funcin sin ningn cdigo, el formato es:

    Tipo_Retorno Nombre(parametros);

    Definicin La declaracin es el cdigo que encapsulado en la funcin, el formato es:

    Tipo_Retorno Nombre(parametros)

    {

    //lneas de cdigo

    }

    NOTA: Se repite el

    prototipo de la funcin

    pero sin el punto y

    coma al final!

  • 3.4. Programacin modular

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 158

    Las funciones tienen dos partes bsicas:

    Prototipo El prototipo le dice al compilador que una subrutina con esas caractersticas existe

    NOTA Los prototipos se deben de definir entre el main y los includes

    Definicin La definicin de la funcin le dice al compilador lo que hace esa subrutina

    NOTA Los cuerpos/definiciones de las funciones se pueden poner despus del main

    La capacidad de definir funciones en un lenguaje de programacin da un soporte directo a la programacin modular.

  • 3.4. Programacin modular

    Prctica # 5

    Modifique el programa de la prctica 2 para que las estrofas de la cancin se impriman al invocarse una funcin por cada una.

    Ejemplo de la salida:

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 159

  • 3.4. Programacin modular

    Solucin a la prctica # 5

    ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 160

  • ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 161

    Recordemos Un algoritmo se debe de expresar en trminos de:

    1. Instrucciones de entrada/salida

    2. Instrucciones aritmtico-lgicas

    3. Instrucciones condicionales

    4. Instrucciones cclicas

    Qu acabamos de aprender para c y C++?

    Instrucciones de entrada.

    Entrada/Salida

    3.4. Programacin modular

  • ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 162

    3.4. Programacin modular

    Recordemos: Una funcin es una subrutina, es decir, un conjunto de lneas de cdigo que se ejecutan en el momento

    en que se invoca la funcin.

    Una funcin tiene la sintaxis:

    ();

    Los parmetros son duplas separado por comas.

  • ltima actualizacin:

    Septiembre 2011 Copyright Risto Rangel Kuoppa 2011. Todos los derechos reservados. 163

    3.4. Programacin modular

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 164

    Prototipo de la funcin.

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 165

    Invocaciones (3) de la funcin.

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 166

    Implementacin, definicin, o

    cuerpo de la funcin.

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 167

    Prototipo de la funcin: Le indica al

    compilador (y cualquier otro programador)

    que existe una funcin con estas

    caractersticas en el programa.

    Qu caractersticas?

    Tipo de retorno: void. Es decir, nada, no tiene tipo de retorno

    Nombre: MiFuncin1 Parmetros: Ninguno

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 168

    Invocaciones (3) de la funcin: Son

    llamadas a subrutinas. En cada invocacin

    se ejecuta todo el cdigo que define a la

    funcin.

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 169

    Implementacin, definicin, o cuerpo de la

    funcin: Son todas las lneas de cdigo

    que se ejecutan cada vez que se invoca la

    funcin.

  • Ms sobre funciones

    Recordemos: Las funciones son segmentos de cdigo que se ejecutan cuando se invoca la

    funcin, por lo tanto, el programa anterior es

    equivalente a:

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 170

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 171

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 172

  • Si modificamos el contenido de una funcin, modificamos el comportamiento de la funcin para cada vez que se

    invoca, por ejemplo:

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 173

  • Lo cual es equivalente a:

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 174

  • Lo cual es equivalente a:

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 175

  • Ms sobre funciones

    Por lo tanto: Sugerencia, utilicen las funciones cada vez que tienen segmentos de cdigo que se repiten.

    Es ms fcil hacer un solo cambio en el cdigo a que tener que hacer varios cambios idnticos.

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 176

  • Ms sobre funciones otro ejemplo, ahora con parmetros

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 177

  • Ms sobre funciones

    Los variables que definen los parmetros de una funcin, toman los valores que se les asign a la hora de invocar la

    funcin.

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 178

  • Ms sobre funciones otro ejemplo, ahora con parmetros

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 179

  • Ms sobre funciones

    Los valores que se le pasan como parmetro a una funcin pueden ser de cualquier tipo: escritos en el

    cdigo, valores de otras variables, etc.

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 180

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 181

    Las funciones no solo reciben parmetros, sino que tambin pueden regresar valores. Los valores tienen que

    ser del tipo de retorno de la funcin.

    Una funcin regresa un valor con la palabra reservada return.

    Nota: Cualquier cdigo que est despus de la instruccin return NO ser ejecutado.

    El valor que regresa una funcin es el valor que se pone en el lugar donde se invoc la funcin.

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 182

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 183

    1 2

    1 2

    1 2

    1 2

    1 2

    1 2

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 184

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 185

    2 1

    2 1

    2 1

    2 1

    2 1

    2 1

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 186

  • Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 187

    Este cdigo es equivalente al

    de la siguiente diapositiva

  • Ms sobre funciones

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 188

  • Ms sobre funciones

    Resumiendo, una funcin:

    Es un segmento de cdigo / una subrutina / varias lneas de cdigo agrupadas.

    Tiene lneas de cdigo en su cuerpo y stas se ejecutan cada vez que se invoca la funcin.

    Tiene parmetros que toman los valores con los que se invoca la funcin.

    Puede regresar un valor que se sustituye / pone / aparece en el lugar donde se invoc la funcin.

    Puede requerir un prototipo para que el compilador la utilice.

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reservados. 189

  • Ms sobre funciones

    Cmo diferenciar entre prototipo, invocacin, y

    definicin de una funcin?

    Por la sintaxis!

    Copyright Risto Rangel Kuoppa 2008. Todos los derechos reserva