Post on 21-Oct-2015
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: rrk@correo.azc.uam.mx 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:
rrk@correo.azc.uam.mx 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:
rrk@correo.azc.uam.mx 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:
rrk@correo.azc.uam.mx 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: rrk@correo.azc.uam.mx 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: rrk@correo.azc.uam.mx 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:
rrk@correo.azc.uam.mx 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: rrk@correo.azc.uam.mx 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:
buzon01.rrk@hotmail.com (grupo matutino)
buzon02.rrk@hotmail.com (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