Вы находитесь на странице: 1из 98

Instituto Tecnolgico del Istmo

Prototipo Didctico de Fundamentos de Programacin

Prototipo Didctico de Fundamentos de Programacin

Pgina 1

Instituto Tecnolgico del Istmo


Introduccin Introduccin de cada unidad... Objetivo del Prototipo Didctico...
5 6 7

Unidad I Conceptos bsicos


8

1.1 Clasificacin del software de: sistema y aplicacin. 1.2 Algoritmo.. 1.3 Lenguaje de programacin... 1.4 Programa.. 1.5 Programacin.. 1.6 Paradigmas de programacin.. 1.7 Editores de texto.. 1.8 Compiladores e Intrpretes... 1.9 Ejecutables.. 1.10 Consola de lnea de comandos.

8 10 11 13 14 14 15 15 17 17

Unidad 2 Algoritmos...
18

2.1 Anlisis del problema. 2.2 Representacin de algoritmos: grfica y pseudocdigo.. 2.3 Diseo de algoritmos aplicados a problemas.... 2.4 Diseo algortmico de funciones.
Prototipo Didctico de Fundamentos de Programacin

18 21 25 28

Pgina 2

Instituto Tecnolgico del Istmo


Unidad 3 Introduccin a la programacin..
38

3.1 Caractersticas del lenguaje de programacin.. 3.2 Estructura bsica de un programa... 3.3 Traduccin de un programa: compilacin, enlace de un programa, errores en tiempo de compilacin.. 3.4 Ejecucin de un programa.... 3.5 Elementos del lenguaje: datos, literales y constantes, identificadores, variables, parmetros, operadores, entrada y salida de datos.. 3.6 Errores en tiempo de ejecucin...

38 41

43 45

49 63

Unidad 4 Control de flujo...


65

4.1 Estructuras secuenciales.. 4.2 Estructuras selectivas: simple, doble, mltiple.. 4.3 Estructuras iterativas: repetir, mientras, hasta/desde... 4.4 Diseo e implementacin de funciones

65 68 75 85

Unidad 5 Arreglos............................................................................................................. 87

5.1 Unidimensionales: conceptos bsicos, operaciones y aplicaciones 5.2 Multidimensionales: conceptos bsicos, operaciones y aplicaciones.
Prototipo Didctico de Fundamentos de Programacin

87 92 Pgina 3

Instituto Tecnolgico del Istmo

Glosario de trminos.

93

Conclusiones.

96

Bibliografa..

97

Prototipo Didctico de Fundamentos de Programacin

Pgina 4

Instituto Tecnolgico del Istmo

Introduccin
El prototipo didctico que se presenta, expone la materia de fundamentos de programacin de la manera ms sencilla y prctica, para que el alumno o usuario tenga las herramientas bsicas que lo encaminen al mundo de la programacin. En este prototipo, se nos darn las herramientas para resolver problemas comunes y simples de la vida cotidiana y tambin algunas aplicaciones de la ingeniera no muy sofisticados. Recordando que, este prototipo fue creado para conocer lo bsico de laprogramacin, como, comprender los conceptos bsicos de la misma, aprender el diseo de algoritmos, poder escribir expresiones aritmticas y lgicas en un lenguaje de programacin y familiarizarnos con el manejo de consola. As tambin, conocer el uso y funcionamiento de las estructuras secuenciales, selectivas, iterativas, arreglos unidimensionales y multidimensionales en el desarrollo de aplicaciones. Dejaremos en claro, que los fundamentos de programacin es la base principal de la programacin, como lo es, el cimiento de una casa.

Prototipo Didctico de Fundamentos de Programacin

Pgina 5

Instituto Tecnolgico del Istmo

Introduccin de cada unidad

Introduccin de la unidad 1 En la unidad 1 conoceremos y comprenderemos los conceptos bsicos que son usados en la programacin. Introduccin de la unidad 2 En la unidad 2 explicaremos los conceptos bsicos para la formulacin de algoritmos, as como sus ventajas y desventajas, resolveremos y analizaremos problemas de la vida cotidiana e investigaremos los mtodos ms usuales para representar un algoritmo. Introduccin de la unidad 3 En la unidad 3 conoceremos las caractersticas del lenguaje de programacin, tambin la estructura bsica de un programa, analizaremos las fases de traduccin de un programa, veremos tambin, como ejecutar un programa, estudiaremos los distintos elementos de un lenguaje y veremos porque hay errores en tiempo de ejecucin. Introduccin de la unidad 4 En la unidad 4 estudiaremos el uso de las estructuras secuenciales, selectivas e iterativas y analizaremos ejemplos en las que aparecen estas estructuras; tambin veremos como disear e implementar las funciones. Introduccin de la unidad 5 En la unidad 5 conoceremos el uso y funcionamiento de arreglo unidimensionales y multidimensionales.

Prototipo Didctico de Fundamentos de Programacin

Pgina 6

Instituto Tecnolgico del Istmo

Objetivo del Prototipo Didctico


Introducir al estudiante en la programacin con la finalidad de obtener las bases conceptuales para abordar las siguientes unidades temticas. Dar solucin a problemas cotidianos utilizando el razonamiento lgico. Obtener y aplicar herramientas necesarias para disear e implementar soluciones en un lenguaje de programacin, utilizando los conceptos adquiridos. Identificar, comprender, seleccionar e implementar la estructura de control ms adecuada a un problema especfico, as como el diseo de bloques de cdigos reutilizables, dado que es comn encontrar en la prctica problemas cuyas operaciones estn condicionadas o deban ejecutarse un nmero repetido de veces Conocer arreglos para una gran variedad de propsitos que proporcionan un medio conveniente de agrupar variables relacionadas y organizar datos de una manera que puedan ser fcilmente procesados.

Prototipo Didctico de Fundamentos de Programacin

Pgina 7

Instituto Tecnolgico del Istmo UNIDAD I CONCEPTOS BASICOS

1.1 Clasificacin del software de: sistemas y aplicacin.

Se clasifican como veremos en el mapa conceptual de la pgina 9: Software de sistema Software de aplicacin

Software de Sistema: es el conjunto de programas indispensables para que la maquina funcione; se denominan tambin programas del sistema; (Luis Joyanes Aguilar). Esto programas son bsicamente: El sistema operativo: Windows Xp, Windows Vista, Windows 7, Linux, etc. Los editores de texto: Archivos de texto o texto plano. Los compiladores e intrpretes: Traductores de lenguajes de programacin. Programas de utilidad: Microsoft office.

Software de aplicacin: conjunto de instrucciones de computadora escritas con un lenguaje de programacin, las cuales dirigen al hardware para que efectu actividades especficas de procesamiento de datos y de informacin que proporcionan funcionalidad al usuario; (Luis Joyanes Aguilar).Estos programas bsicamente son: Una aplicacin de procesamiento de texto (Word). Una hoja de clculo (Excel). Una aplicacin para hacer diagramas o grficos, representaciones visuales (PowerPoint). Software que manipulan el hardware de la computadora como la resolucin de nuestra pantalla.

Prototipo Didctico de Fundamentos de Programacin

Pgina 8

Instituto Tecnolgico del Istmo


Clasificacin de software

Software de sistema

Software de aplicacin

Hacen funcionar a la maquina

Dirigen el hardware

El sistema operativo. Editores de texto. Compiladores e intrpretes. Programas de utilidad.

Una aplicacin de procesamiento de texto. Una hoja de clculo. Representaciones visuales. Software que manipulan la mquina.

Ejemplos Ejemplos

Sistema operativo Windows Xp Archivos de texto Traductores de lenguaje Microsoft office Word Excel PowerPoint

Prototipo Didctico de Fundamentos de Programacin

Pgina 9

Instituto Tecnolgico del Istmo


1.2 Algoritmo.

Concepto. Es una serie de pasos organizados o secuencias que nos describen el proceso que debemos seguir, para darle solucin a un problema especfico. (Luis J. A.).

Algoritmo

Describe cmo resolver un problema

Problema

De un Maneja Se pueden hacer Datos

Se construye usando

Tcnicas de resolucin de problemas

Graficas

Se utilizan en

Se escribe usando Lenguaje natural Lenguaje de programacin

Estn formados por

Pseudocdigo Programas

Instrucciones Escritos en

Prototipo Didctico de Fundamentos de Programacin

Pgina 10

Instituto Tecnolgico del Istmo


1.3 Lenguaje de Programacin.

Concepto. Lenguaje artificial que sirve para escribir programas que permitan la comunicacin usuario/maquina. (Luis Joyanes Aguilar). Son estructuras simblicas que nos permiten disponer de los dispositivos de una computadora. (Felipe Ramrez). Los principales tipos de lenguaje utilizados son: Leguaje mquina. Lenguaje de bajo nivel (ensamblador). Lenguaje de alto nivel.

Instrucciones a la computadora El trmino instruccin (operacin realizable) se suele referir al lenguajemquinay bajo nivel, reservando el trmino sentencia o proposicin para los lenguajes de alto nivel, las instrucciones bsicas y comunes de los lenguajes de programacin son las siguientes: o Instrucciones de entrada / salida:instrucciones de transferencia de informacin y datos entre dispositivos perifricos (teclado, impresora, unidad de disco, etc.) y la memoria central. o Instrucciones aritmtico / lgicas: instrucciones que ejecutan operacionesaritmticas (suma, resta, multiplicacin, divisin, potenciacin) y lgicas (and, or, not, etc.). o Instrucciones selectivas: instrucciones que permiten la seleccin de tareas alternativas en funcin de los resultados de diferentes expresiones condicionales. o Instrucciones repetitivas: instrucciones que permiten la repeticin de secuencias de instrucciones un nmero determinado o indeterminado de veces.

Lenguaje mquina. Son aquellos que estn escritos en lenguaje directamente comprensible por la mquina, ya que sus instrucciones son cadenas binarias (0 y 1).
Prototipo Didctico de Fundamentos de Programacin Pgina 11

Instituto Tecnolgico del Istmo


Ventaja: no necesita ser traducido Desventaja: casi no lo recomiendan, dificultad y lentitud en la codificacin, poca fiabilidad, y solo se pueden ejecutar en el mismo procesador.

Lenguaje de bajo nivel. Conocidotambin como ensamblador, las instrucciones en este lenguaje se conocen como nemotcnicos (abreviaturas) y requieren una fase de traduccin al lenguaje mquina. Ventajas: es ms fcil que el lenguaje mquina en la codificacin y la velocidad de clculo. Desventajas: cada mquina tiene su propio lenguaje lo que lo hace dependiente de la mquina y no se puede ejecutar en otra; se necesita un proceso de traduccin para el programa escrito originalmente en ensamblador llamado programa fuentey el programa que se obtiene al traducirlo se llama lenguaje objeto.

Lenguaje de alto nivel. Es independiente de la mquina, las instrucciones del programa de la computadora no depende del diseo del hardware, lo que hace que estos programas sean transportables. Ventajas: El tiempo de preparacin de los programadores es ms rpida que con los otros lenguajes de programacin. La escritura del programa se basan en reglas sintcticas similares a los lenguajes humanos (pueden ser READ, WRITE, OPEN, etc.). Las modificaciones y puestas a punto de los programas son ms fciles. Son ms econmicos los programas. Transportabilidad. Desventajas: El proceso de traduccin es muy largo y ocupan ms recursos. aprovecha menos los recursos internos de la mquina. Aumento de ocupacin de la memoria.
Prototipo Didctico de Fundamentos de Programacin Pgina 12

Instituto Tecnolgico del Istmo


El tiempo de ejecucin de los programas es mucho mayor.

1.4 Programa.

Concepto. Conjunto de instrucciones que controlan (dirigen) a una computadora, formalmente programa de computadora es un conjunto de instrucciones internas utilizadas para ejecutarse en una computadora y que produzcan un resultado concret. (Luis Joyanes Aguilar). Un programa tiene 3 partes: Entrada de datos: normalmente se ejecuta a travs de instrucciones de lectura, y en lo que se le pide al usuario la informacin que el programa va a necesitar para ejecutarse y se hace a travs de lectura. Accin de un algoritmo: parte en la que se resuelve el problema usando los datos de entrada. Salida: muestra el resultado deseado. En la parte de las acciones a ejecutar se distinguirn 2 partes: Declaracin de variables. Instrucciones del programa.

Instrucciones y tipos: Para que una instruccin se ejecute tiene que ser llevada a la memoria. En cuanto al orden de ejecucin, el programa puede ser de dos tipos: Programas lineales: las instrucciones se ejecutan consecutivamente igual al orden de escritura. Programas no lineales: las instrucciones no se ejecutan en el mismo orden en las que aparecen escritas si no que realizan saltos que nos mandan de una instruccin a otra. Nunca se deben hacer saltos no lineales.

Prototipo Didctico de Fundamentos de Programacin

Pgina 13

Instituto Tecnolgico del Istmo


Tipos de instrucciones: Inicio y fin. Asignacin (dar un valor a una variable). Lectura/escritura (introducir o sacar informacin por dispositivos E/S). Instrucciones de bifurcacin (alternan el orden de ejecucin del programa, salto a otra instruccin que no es la siguiente). Bifurcacin incondicional (el salto se produce siempre y cuando el programa vaya a esa instruccin, GOTO (ir a)). Bifurcacin condicional (se ejecutan un conjunto de instrucciones u otras dependiendo del valor devuelto al evaluar una condicin).

1.5 Programacin.

Concepto. Se refiere al proceso en el cual se desarrolla o escribe un programa, esto se refiere a expresar el algoritmo en un lenguaje de programacin. (Luis Joyanes Aguilar). Es la habilidad de pensar de manera razonada, sistemtica y ordenada, que nos hace capaces de inferir algoritmos abstractos y soluciones a problemas de negocios, que fcilmente puedan ser implementados a travs de cdigos escritos en un lenguaje de programacin determinado. (Felipe Ramrez).

1.6 Paradigmas de programacin.

Qu es paradigma? Es la manera como percibimos el mundo: (agua para el pez); el paradigma nos explica el mundo y nos ayuda a predecir su comportamiento.

Prototipo Didctico de Fundamentos de Programacin

Pgina 14

Instituto Tecnolgico del Istmo


Concepto. Conjunto de patrones conceptuales que moldean la forma de resolver y pensar un problema, disear un algoritmo y estructurar un programa. Es decir, va a ser tenido en cuenta el armado del programa. Se le puede entender como un estilo de programacin marcado como un conjunto de criterios para manejar el programa.

1.7 Editores de texto.

Concepto. Programa que permita crear y modificar archivos digitales compuestos nicamente por texto sin formato, conocidos comnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes ledos segn el cdigo de caracteres que usa el editor. Los editores de texto son incluidos en el sistema operativo o en algn paquete de software instalado y se usan cuando se deben crear o modificar archivos de texto como archivos de configuracin, scripts o el cdigo fuente de un programa.

1.8 Compiladores e Intrpretes.

Compilador: Proceso de traduccin que convierte un programa fuente escrito en un lenguaje de alto nivel a un programa objeto en cdigo mquina y listo por tanto para ejecutarse en el ordenador. Los programas escritos en lenguaje de alto nivel se llaman programa fuente y el programa traducido programa objeto. El compilador traduce sentencia a sentencia al programa fuente.

Prototipo Didctico de Fundamentos de Programacin

Pgina 15

Instituto Tecnolgico del Istmo


La compilacin y sus fases:

Programa fuente

Compilador

Programa objeto

Para poder traducir el programa objeto a cdigo maquina debemos usar un programa llamado montador o enlazador (linker). El proceso de montaje nos conduce a un programa en lenguaje maquina directamente ejecutable.

Programa fuente

Compilador (traductor)

Programa objeto

Enlazador

Programa ejecutable en lenguaje maquina

Prototipo Didctico de Fundamentos de Programacin

Pgina 16

Instituto Tecnolgico del Istmo


Interprete: Es un traductor que toma un programa fuente, lo traduce y a continuacin lo ejecuta.

Programa fuenta

Interprete

Traduccin y ejecucin lnea a lnea

1.9 Ejecutables.

Concepto. Es tradicionalmente un archivo binario cuyo contenido se interpreta por el ordenar como un programa. Generalmente, contiene instrucciones en cdigo mquina de un procesador en concreto, pero tambin pueden contener bytecodes que requieren un intrprete para ejecutarlo. Adems suele contener llamadas a funciones especficas de un sistema operativo. Los ejecutables pueden ser portable (se pueden ejecutar en varias computadoras) o no portables (destinadas a una computadora especifica).

1.10 Consola de comandos.

Concepto. Es un mtodo que permite a las personas dar instrucciones a algn programa informtico por medio de una lnea de texto simple. Su acrnimo en ingls es CLI (Command line Interface),encontradasen las interfaces graficas de diversos sistemas operativos, para ejecutar aplicaciones a travs de un intrprete de comandos.
Prototipo Didctico de Fundamentos de Programacin Pgina 17

Instituto Tecnolgico del Istmo UNIDAD 2 ALGORITMOS

2.1 Anlisis de problemas

La principal razn para que las personas aprendan a programar en general y los lenguajes de programacin en particular es utilizar la computadora como una herramienta principal para resolver problemas.La resolucin de un problema se divide en las siguientes fases: Anlisis de sistema. Diseo de algoritmo. Codificacin. Compilacin y ejecucin. Verificacin. Depuracin. Mantenimiento. Documentacin.

Constituyen el ciclo de vida del software y las faces o etapas son: Anlisis. El problema se analizas teniendo presente la especificacin de los requisitos dados por la persona que encargo el programa. Diseo.Una vez analizado el problema, se disea una solucin que conducir a un algoritmo que resuelva el problema. Codificacin (implementacin). La solucin se escribe en la sintaxis de lenguaje de alto nivel (por ejemplo C) y se obtiene un programa. Compilacin, ejecucin y verificacin. El programa se ejecuta, se comprueba rigurosamente y se elimina todo los errores (denominados busg en ingls) que puedan aparecer. Depuracin y mantenimiento. El programa se actualiza y modifica cada vez que sea necesario, de modo que se cumplan todas las necesidades de cambio de sus usuarios. Documentacin. Escritura de las diferentes fases de ciclo de vida del software, esencialmente el anlisis, diseo y codificacin, unidos a manuales de usuarios y de referencias, as como normas para el mantenimiento.
Pgina 18

Prototipo Didctico de Fundamentos de Programacin

Instituto Tecnolgico del Istmo


Caractersticas de un algoritmo: Un algoritmo debe ser Preciso e indicar el orden que debe seguir cada paso. Un algoritmo debe ser Definido, es decir, si se sigue un algoritmo dos veces, se debe obtener el mismo resultado. Un algoritmo debe ser Finito, es decir, si se sigue el algoritmo se debe de terminar en algn momento. La primera fase de la resolucin de un problema con computadora, esta fase requiere una clara solucin, donde entendamos exactamente lo que debe hacer el programa, el cual nos d el resultado deseado.

Anlisis de problema

Definir y entender el problema

Identificar los datos de entrada

Identificar los datos de salida (resultado)

Los elementos que conforman un algoritmo son: Entrada: los datos iniciales que posee el algoritmo antes de ejecutarse. Proceso: accin que lleva acabo el algoritmo. Salida: resultado final que obtiene el problema.

Ejemplo de los elementos (entrada, proceso y salida). El clculo del rea de un rectngulo se puede dividir en: Entrada de datos (altura, base).
Prototipo Didctico de Fundamentos de Programacin Pgina 19

Instituto Tecnolgico del Istmo


Proceso: clculo del rea (= base x altura). Salida de datos (base, altura, rea).

A=b*a
b

Diseo de un algoritmo. La solucin de un problema complejo puede requerir muchos pasos, esto hace necesariamente que dividamos el problema en subproblemas para que as sea ms sencillo resolverlo. Este mtodo se denomina divide y vencers y es aplicable a la resolucin de problemas complejos dividindolo en subproblemas y a continuacin dividir estos subproblemas en otros de nivel ms bajo. Este mtodo se conoce tcnicamente como diseo descendente (topdown) o modular. El proceso de romper el problema en cada etapa y expresar cada paso en forma ms detallada se denomina refinamiento sucesivo. Cada subprograma es resuelto mediante un mdulo (subprogramas) que tiene un solo punto de entrada y un solo punto de salida. Un programa principal tambin se le puede llamar (mdulo de nivel ms alto) y los subprogramas (mdulo de nivel ms bajo). Los programas estructurados tienen un diseo modular. Al mtodo de romper el programa enmdulos ms pequeos se llama programacin modular. Los mdulos pueden ser planeados, codificados, comprobados y depurados independientemente (incluso por diferentes programadores). El proceso que convierte los resultados del anlisis de problema en un diseo modular con refinamientos sucesivos que permitan una posterior traduccin a un lenguaje, se denomina diseo de algoritmo.
Pgina 20

Prototipo Didctico de Fundamentos de Programacin

Instituto Tecnolgico del Istmo

Ejemplo de diseo descendente y refinamiento paso a paso, basndonos en el problema de calcular el rea de un rectngulo.

Problema de clculo de rea de un rectngulo

Entrada de datos

Calculo del rea

Salida de resultados

AREA = Entrada ALTURA Entrada BASE BASE x ALTURA Salida ALTURA

Salida BASE

Salida AREA

2.2 Representacin de algoritmos: grficas y pseudocdigos.

Para representar un algoritmo se debe utilizar algn mtodo que permitan independizar dicho algoritmo del lenguaje de programacin elegido. Esto permitir que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje de programacin. Los mtodos ms usuales para representar de un algoritmo son: Diagrama de flujo. Diagrama N-S(Nassi-Schneiderman) Lenguaje de especificacin de algoritmo: Pseudocdigo. Lenguaje espaol.
Pgina 21

Prototipo Didctico de Fundamentos de Programacin

Instituto Tecnolgico del Istmo


Formulas.

Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin se puede decir que es la representacin detallada en forma grfica de cmo debe realizarse los pasos en la computadora para producir un resultado. Esta representacin grfica se da cuando varios smbolos se relacionan entre s mediante lneas que indican el orden en que se deben ejecutar los procesos o pasos; los pasos que se utilizan han sido normalizados por el instituto norteamericano de normalizacin (ANSI). SMBOLODESCRIPCIN

Indica el inicio y el final de nuestro diagrama de flujo.

Indica la entrada y salida de datos.

Smbolo de proceso y nos indica la asignacin de un valor en la memoria y/o la ejecucin de una operacin aritmtica.

Smbolo de decisin indica la realizacin de una comparacin de valores.

Se utiliza para representar los subprogramas.

Conector dentro de pgina, representa la continuidad del diagrama dentro de la misma pgina y sirve para enlazar dos partes cualesquiera de un ordinograma.

Prototipo Didctico de Fundamentos de Programacin

Pgina 22

Instituto Tecnolgico del Istmo


Conector fuera de pgina, representa la continuidad del diagrama en otra pgina.

Indica la salida de informacin por impresora.

Indica la salida de informacin en la pantalla o monitor.

Decisin mltiple, dependiendo del resultado de la comparacin se seguir uno de los diferentes caminos.

Lneas de flujo o direccin, indica la secuencia en que se realizan las operaciones.

Lnea conectora, sirve de unin entre dos smbolos.

Teclado, se utiliza en ocasiones en lugar del smbolo E/S.

Comentarios, se utilizan para aadir comentarios clasificadores a otros smbolos de diagrama de flujo.

Prototipo Didctico de Fundamentos de Programacin

Pgina 23

Instituto Tecnolgico del Istmo


El Pseudocdigo describe un algoritmo utilizando una mezcla de frases en lenguaje comn, instrucciones de programacin y palabras claves que definen las estructuras bsicas. Su objetivo es permitir que el programador se centre en los aspectos lgicos de la solucin de un problema. En otras palabras un pseudocdigo es aquel que sigue un proceso de ejecucin comn y lgico describiendo textualmente paso a paso cada una de las tareas a realizar dentro de una actividad determinada. Ejemplo de un pseudocdigo comn para asistir a clases. 1. Levantarse. 2. Baarse. 3. Vestirse. 4. Desayunar. 5. Cepillarse los dientes. 6. Salir de casa. 7. Tomar el autobs. 8. Llegar a la Universidad. 9. Buscar el aula. 10. Ubicarse en un asiento.

El Diagrama N-S (Nassi-Schneiderman) tambin conocido como diagrama de Chapin, es como un diagrama de flujo en las que se omiten las flechas de unin y las cajas (rectngulos) son contiguas (cercanos o prximos); las acciones se escriben en las cajas, que se leern siempre de arriba abajo al igual que los diagramas de flujos, tambin se pueden escribir diferentes acciones en una caja. Ejemplo de diagrama N-S.

leer nombre, hora, precio Calcular salario hora * precio calcular impuesto 0.25 * salario calcular neto salario impuestos escribir nombre, salario, impuestos, neto
Prototipo Didctico de Fundamentos de Programacin Pgina 24

Instituto Tecnolgico del Istmo

nombre del algoritmo accin 1 accin 2 accion3 fin Otro ejemplo es la representacin de la estructura condicional como vemos a continuacin.

Los mtodos de lenguaje en espaol y las formular no suelen ser fciles de transformar en programas, ya que el mtodo de lenguaje en espaol es muy extenso y confuso, y en el mtodo de las formulas no es frecuente que un algoritmo pueda ser expresado por una simple formula.

2.3 Diseo de algoritmos aplicados a problemas.

Ejemplos de algoritmos aplicados a problemas. Ejemplo. Leer el sueldo de tres empleados y aplicarles un aumento del 10,12 y 15 % respectivamente. Desplegar el resultado.

Prototipo Didctico de Fundamentos de Programacin

Pgina 25

Instituto Tecnolgico del Istmo


Entradas: salarios de los empleados Salidas: sueldos finales. Datos adicionales: aumentos del 10, 12 y 15 %. Clculos: Sueldo final = sueldo inicial + aumento Aumento = sueldo inicial * porcentaje/100 Definicin de variables: Sf1, Sf2, Sf3 = los sueldos finales S1, S2, S3 = salarios de los empleados Aum1, Aum2, Aum3 = aumentos

Algoritmo en pseudocdigo. Inicio Leer (S1, S2, S3) Aum1 S1 * 0.10 Aum2 S2 * 0.12 Aum3 S3 * 0.15 Sf1 S1 + Aum1 Sf2 S2 + Aum2 Sf3 S3 + Aum3 Escribir (SF1, SF2, SF3) Fin

Prototipo Didctico de Fundamentos de Programacin

Pgina 26

Instituto Tecnolgico del Istmo


Algoritmo en diagrama de flujo.

Inicio

S1, S2, S3

Aum1 S1 * 0.10

Aum2 S2 * 0.12

Aum3 S3 * 0.15

Sf1 S1 + Aum1

Sf2 S2 + Aum2

Sf3 S3 + Aum3

Escribir (SF1, SF2, SF3)

Fin

Algoritmo Diagrama N-S.

Inicio Leer S1, S2, S3 Aum1 S1 * 0.10 Aum2 S2 * 0.12 Aum3 S3 * 0.15 Sf1 S1 + Aum1 Sf2 S2 + Aum2
Prototipo Didctico de Fundamentos de Programacin Pgina 27

Instituto Tecnolgico del Istmo


Sf3 S3 + Aum3 Escribir (SF1, SF2, SF3) Fin

2.4 Diseo algortmico de funciones.

La programacin modular es uno de los mtodos de diseo ms flexible y potente para mejora la productividad de un programa. Esto quiere decir que el programa se divide en mdulos (partes independientes) las cuales ejecutan una nica actividad o tarea y se codifican independientemente de otros mdulos. Cada mdulo se analiza, se codifica y se pone a un punto por separado. Cada programa tiene un mdulo que es el programa principal que controla todo, se pasa el control a los submdulos (subprogramas) para que ellos puedan ejecutar sus funciones. Cada submdulo devuelve el control al mdulo principal cuando haya completado su tarea. Si la tarea asignada a cada submdulo es muy difcil, esta deber romperse en otros mdulos ms pequeos. El proceso sucesivo de subdivisin de mdulos continua hasta que cada mdulo tenga solamente una tarea especfica que realizar, estas tareas pueden ser entradas, salidas, manipulacin de datos, control de otros mdulos o alguna combinacin de datos. Un mdulo puede transferir temporalmente (bifurcacin) el control a otro modulo, sin embargo, cada mdulo debe devolver el control al mdulo del cual se recibi originalmente el control.

Los mdulos son independientes y no pueden tener acceso a cualquier otro modulo, con excepcin al mdulo al que llama y sus propios submodulos; sin embargo los resultados producidos por un mdulo pueden ser utilizados por cualquier otro modulo cuando se transfiera a ellos el control.

Prototipo Didctico de Fundamentos de Programacin

Pgina 28

Instituto Tecnolgico del Istmo


Programa principal Algoritmo principal

Subprograma 1

Subprograma 2

Subprograma 3

Subalgoritmo 1

Subalgoritmo2

Subalgoritmo 3

Se dice que el programa principal invoca al subprograma, el subprograma realiza la tarea y luego devuelve el control (resultado) al programa principal.

Programa Llamada 1 Retorno1 Llamada 2 Retorno 2

Subprograma

Algoritmo

Subalgoritmo

Un subprograma puede llamar a su vez a sus propios subprogramas.

Prototipo Didctico de Fundamentos de Programacin

Pgina 29

Instituto Tecnolgico del Istmo


Programa o programa principal Subprograma 1 Subprograma 1.1

Subprograma 2

Funciones. La funcin en una estructura que no depende de nadie similar a los mdulos, la diferencia radica en que la funcin se usa para devolver un solo valor de un tipo de datos simple a punto de referencia. La funcin se relaciona en detallar su nombre en una expresin, como si fuera una variable ordinaria de tipo simple. Las funciones se dividen en estndares y definidas por el usuario: Estndares: Son funciones proporcionadas por cualquier lenguaje de programacin de alto nivel, y se dividen el alfabticas y aritmticas. Definido por el usuario: son funciones establecidas por el programador con el objetivo de realizar alguna funcin especfica, por lo general se usa cuando se trata de hacer algn clculoque se valla ocupar en varias ocasiones en la parte principal de un algoritmo. Declaracin de funciones. Consta de una cabecera que comenzara con el tipo de valor devuelto por la funcin, seguido de la palabra funciny del nombre y argumento de la funcin, seguido del cuerpo de la funcin que es una serie de instrucciones, cuya ejecucin (accin) har que se asigne un valor al nombre de la funcin; esto determina el resultado que se ha de devolver al programa. La declaracin de la funcin ser:

Prototipo Didctico de Fundamentos de Programacin

Pgina 30

Instituto Tecnolgico del Istmo

Otro ejemplo puede ser la definicin de la funcin trigonomtrica, cuyo valor es:

dondesen(x) y cos(x) son las funciones seno coseno (normalmente funciones internas). La declaracin de la funcin es:

Observe que se incluye un comentario para describir la funcin. Es buena prctica incluir documentacin que describa brevemente lo que hace la funcin, lo que representa sus parmetros o cualquier otra informacin que explique la definicin de la funcin.
Prototipo Didctico de Fundamentos de Programacin Pgina 31

Instituto Tecnolgico del Istmo


Invocacin a las funciones. Una funcin puede ser llamada de la siguiente forma:

Cada vez que se llama a una funcin desde el algoritmo principal se establece automticamente una correspondencia entre los parmetros formales y los actuales. Debe haber el mismo nmero de parmetros actale como formales en la declaracin de la funcin, anticipando una correspondencia (relacin) uno a uno de izquierda a derecha. Una llamada a la funcin implica los siguientes pasos: 1. A cada parmetro formal se le asigna el valor real de su correspondencia parmetro actual. 2. Se ejecuta el cuerpo de acciones de la funcin. 3. Se devuelve el valor de la funcin al nombre de la funcin y se retorna al punto de llamada. Aqu un ejemplo de los pasos de una llamada a la funcin. Definicin de la funcin: y = (potencia n de x).

Prototipo Didctico de Fundamentos de Programacin

Pgina 32

Instituto Tecnolgico del Istmo


abs (n) es la funcin valor absoluto de n a fin de considerar exponentes positivos y negativos.

Procedimientos (subrutinas). Un procedimiento o subrutina es un subprograma que ejecuta un proceso especfico. Ningn valor est asociado con el nombre del procedimiento; por consiguiente, no puede ocurrir en una expresin. Un procedimiento se llama escribiendo su nombre, por ejemplo, SORT, para indicar que un procedimiento denominado SORT se va usar. Cuando se invoca el procedimiento, los pasos que lo definen se ejecutan y a continuacin se devuelve el control al programa que llamo. La declaracin de un procedimiento es similar a la de funciones.

El procedimiento se llama mediante la instruccin:

Prototipo Didctico de Fundamentos de Programacin

Pgina 33

Instituto Tecnolgico del Istmo


La palabra llamar_a (call) es opcional y su existencia depende del lenguaje de programacin.

mbito: Variables Locales y Globales. Las variables utilizadas en los programas principales y sub programas se clasifican en dos tipos: Variable local: las variables permanecen activas durante todo el programa. Se crean al iniciarse este y se destruye o desaparece de la memoria al finalizar. Variable global: las variables son creadas cuando el programa llega a la funcin o procedimiento en la que est definida. Al finalizar la funcin o procedimiento, desaparece de la memoria. Si dos variables, una global y una local, tiene el mismo nombre, la local prevalecer sobre la global dentro del mduloen que ha sido declarada. Dos variables locales pueden tener el mismo nombre, siempre y cuando estn declaradas en funciones o procedimientos diferentes.

Comunicacin con Subprogramas: paso de parmetros. Cuando un programa llama a un subprograma, la informacin se comunica a travs de la lista de parmetros y se establece una correspondencia automtica entre los parmetros formales y actuales. Los parmetros actuales son sustituidos o utilizados en lugar de los parmetros formales. La declaracin del subprograma se hace con:

Prototipo Didctico de Fundamentos de Programacin

Pgina 34

Instituto Tecnolgico del Istmo


Y la llamada al subprograma con: llamar_a nombre (A1, A2, , An) donde F1,F2, .., Fn son los parmetros y A1,A2, , An los parmetros actuales o reales. La clase de parmetro es: (E) Entrada (S) Salida (E/S) Entrada/Salida Existen 2 mtodos para establecer la correspondencia de parmetros: 1. Correspondencia posicional. La correspondencia se establece aparejando los parmetros reales y formales segn su posicin en la lista: as, Fi se corresponde con Ai, donde i = 1, 2, , n.. Este mtodo tiene algunas desventajas de legibilidad cuando el nmero de parmetros es grande. 2. Correspondencia por el nombre explcito. Tambin llamado mtodo de paso de parmetros por nombre, en este mtodo, en las llamadas se indican explcitamente la correspondencia entre los parmetros reales y formales; este mtodo se utiliza en Ada. Un ejemplo seria: SUB (Y = B, X = 30) ; Que hace corresponder el parmetro actual B con el formal Y, y el parmetro actual 30 con el formal X durante la llamada de SUB.

Paso o Parmetro por Valor. Son los parmetros que pueden recibir valores pero que no pueden devolverlos. Es una variable global que se conecta con una variable local mediante el envo de su valor, despus de lo cual ya no hay relacin. Lo que le sucede a la variable local no afectar a la global. Cuando un parmetro actual se pasa por valor, el subprograma hace una copia del valor de ste en una posicin de memoria idntica en tamao pero distinta en ubicacin a la del parmetro actual y la asigna al parmetro formal correspondiente. Como el subprograma trabaja a partir de sus parmetros formales, si durante la ejecucin se modifica el valor de un parmetro formal correspondiente a un paso por valor, el contenido de la posicin de memoria del parmetro actual no se ver alterado.

Prototipo Didctico de Fundamentos de Programacin

Pgina 35

Instituto Tecnolgico del Istmo


Ejempl de paso por valor: El mecanismo de paso se resume as: Valor primer parmetro: A = 5. Valor segundo parmetro: constante = 18. Valor tercer parmetro: expresin B * 3 + 4 = 25. Los valores 5, 18, 25 se transforman en los parmetros X, Y, Z, respectivamente, cuando se ejecuta el procedimiento. La llamada por valor no devuelve informacin al programa que llama.

Paso o Parmetro por Referencia. Son los que pueden recibir y devolver valores. Son variables globales que se conectan con una local a travs de su contenido; al establecerse dicha conexin las variables se convierten en sinnimos, lo que afecte a la variable local le suceder a la variable global.

Prototipo Didctico de Fundamentos de Programacin

Pgina 36

Instituto Tecnolgico del Istmo


Ejemplo:

La primera llamada en (1) produce que los parmetros a y c sean sustituidos por x e y si los valores de x e y se modificaran dentro de a y c en el algoritmo principal. De igual modo, b y d son sustituidos por x e y, y cualquier modificacin de x o y en el procedimiento afectar tambin al programa principal.

Prototipo Didctico de Fundamentos de Programacin

Pgina 37

Instituto Tecnolgico del Istmo UNIDAD 3 INTRODUCCIN A LA PROGRAMACIN

3.1 Caractersticas del lenguaje de programacin.

Una vez que se has visto cmo tratar un problema y como escribir un algoritmo que lo modelase se ver a continuacin las herramientas que se dispone, los lenguajes de programacin para programar un algoritmo, como construir un programa, y como programarlo utilizando un pseudocdigo. Cul es el propsito de un lenguaje de programacin? Los lenguajes de programacin pueden ser de propsito general o especficos. Lenguajes de programacin especficos: C, C++, Java, visual Basic, Pascal, etc. Los lenguajes de programacin especficos: SQL, PROMELA, etc.

POR QU LA DIVERSIDAD DE LENGUAJES DE PROGRAMACIN? En primer lugar existen distintos tipos de lenguajes de programacin, porque cada uno de ellos est especificado para resolver un grupo de problemas con caractersticas similares. En segundo lugar, los lenguajes de programacin han ido evolucionando hacia una mayor facilidad, flexibilidad y potencia. Por esto, han ido apareciendo distintos tipos de lenguajes que ofrecen una funcionalidad mayor y generalmente una filosofa de programacin novedosa. Por ltimo, las compaas que disean software estn muy interesadas en tener muchos lenguajes de programacin en el mercado porque esto les reportar ms beneficios econmicos.

POR QU ES IMPORTANTE EL ESTUDIO DE DIFERENTES LENGUAJES O PARADIGMAS CUANDO AL FINAL SLO TRABAJAS CON UNOS POCOS?
Prototipo Didctico de Fundamentos de Programacin Pgina 38

Instituto Tecnolgico del Istmo


Hay muchas razones que justifican su estudio, entre las cuales las ms importantes son: Mejora el uso de lenguaje de programacin: si se conoce como estn implementadas las caractersticas en un lenguaje de programacin, se mejorar la habilidad para escribir programas eficientes. Incrementa el vocabulario de los elementos de programacin. Permite una mejor eleccin del lenguaje de programacin: el conocimiento de diversos lenguajes de programacin facilitan la eleccin del lenguaje ms adecuado para un proyecto determinado. Mejora la habilidad para desarrollar programas efectivos y eficientes: muchos lenguajes proporcionan caractersticas que, cuando se utilizan correctamente, aporta grandes beneficios a la programacin, cuando se utiliza de una manera incorrecta, puede ocasionar un gran costo computacional. Facilita el aprendizaje de un nuevo lenguaje de programacin: cuando se conoce las estructuras, tcnicas de implementacin y construccin de un lenguaje, es ms sencillo aprender otros lenguajes de programacin que tengan estructuras similares. Facilita el diseo de nuevos lenguajes de programacin: es posible que en el futuro tengamos que disear un lenguaje que se adapte a nuestras necesidades. Mientras ms lenguajes y paradigmas conozcamos, ms simple resultara el diseo y la implementacin.

CARACTERSTICAS COMUNES DE LOS LENGUAJES DE PROGRAMACIN. Tienen una sintaxis, un conjunto de reglas que definen qu expresiones de texto son correctas. Por ejemplo, en C todas las sentencias deben terminar en ';'. Los lenguajes de programacin se ejecutan en un computador y tienen una determinada semntica que define cul ser el resultado de la ejecucin de un programa. Definen un conjunto de tipos de datos primitivos que representan los posibles valores que pueden devolver las expresiones del lenguaje. Tienen mecanismos de abstraccin para definir nuevos tipos de datos a partir de los primitivos o nuevas funciones y procedimientos.

Prototipo Didctico de Fundamentos de Programacin

Pgina 39

Instituto Tecnolgico del Istmo


TODOS LOS LENGUAJES DE PROGRAMACIN PERMITEN COMBINAR IDEAS SIMPLES EN IDEAS MS COMPLEJAS MEDIANTE LOS SIGUIENTES TRES MECANISMOS: Expresiones primitivas, que representan las entidades ms simples del lenguaje. Mecanismos de combinacin,con los que se construyen elementos compuestos a partir de elementos ms simples. Mecanismos de abstraccin, con los que dar nombre a los elementos compuestos y manipularlos como unidades.

OTRAS CARACTERSTICAS. Implementacin. La implementacin de un lenguaje es la que provee una manera de que se ejecute un programa para una determinada combinacin de software y hardware. Existen bsicamente dos maneras de implementar un lenguaje: Compilacin e Interpretacin. Compilacin: es el proceso que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz interpretar. Los programas traductores que pueden realizar esta operacin se llaman compiladores. stos, como los programas ensambladores avanzados, pueden generar muchas lneas de cdigo de mquina por cada proposicin del programa fuente. Interpretacin: es una asignacin de significados a las frmulas bien formadas de un lenguaje formal. Como los lenguajes formales pueden definirse en trminos puramente sintcticos, sus frmulas bien formadas pueden no ser ms que cadenas de smbolos sin ningn significado. Una interpretacin otorga significado a esas frmulas.

Tcnica. Para escribir programas que proporcionen los mejores resultados, cabe tener en cuenta una serie de detalles. Correccin. Un programa es correcto si hace lo que debe hacer tal y como se estableci en las fases previas a su desarrollo. Para determinar si un programa hace lo que debe, es muy importante especificar claramente qu
Pgina 40

Prototipo Didctico de Fundamentos de Programacin

Instituto Tecnolgico del Istmo


debe hacer el programa antes de desarrollarlo y, una vez acabado, compararlo con lo que realmente hace. Claridad. Es muy importante que el programa sea lo ms claro y legible posible, para facilitar as su desarrollo y posterior mantenimiento. Al elaborar un programa se debe intentar que su estructura sea sencilla y coherente, as como cuidar el estilo en la edicin; de esta forma se ve facilitado el trabajo del programador, tanto en la fase de creacin como en las fases posteriores de correccin de errores, ampliaciones, modificaciones, etc. Fases que pueden ser realizadas incluso por otro programador, con lo cual la claridad es an ms necesaria para que otros programadores puedan continuar el trabajo fcilmente. Algunos programadores llegan incluso a utilizar Arte ASCII para delimitar secciones de cdigo. Otros, por diversin o para impedir un anlisis cmodo a otros programadores, recurren al uso de cdigo ofuscado. Eficiencia. Se trata de que el programa, adems de realizar aquello para lo que fue creado (es decir, que sea correcto), lo haga gestionando de la mejor forma posible los recursos que utiliza. Normalmente, al hablar de eficiencia de un programa, se suele hacer referencia al tiempo que tarda en realizar la tarea para la que ha sido creado y a la cantidad de memoria que necesita, pero hay otros recursos que tambin pueden ser de consideracin al obtener la eficiencia de un programa, dependiendo de su naturaleza (espacio en disco que utiliza, trfico de red que genera, etc.). Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse en una plataforma, ya sea hardware o software, diferente a aquella en la que se elabor. La portabilidad es una caracterstica muy deseable para un programa, ya que permite, por ejemplo, a un programa que se ha desarrollado para sistemas GNU/Linux ejecutarse tambin en la familia de sistemas operativos Windows. Esto permite que el programa pueda llegar a ms usuarios ms fcilmente.

3.2 Estructura bsica de un programa.

Como ya se ha visto, cuando se escribe un programa lo que se trata de hacer es indicarle a la computadora cmo ha de resolver un problema. Estos programas siguen determinada estructuras, que dependen del tipo de lenguaje que usemos y del entorno en el cual lo creemos.

Prototipo Didctico de Fundamentos de Programacin

Pgina 41

Instituto Tecnolgico del Istmo


PRINCIPIO GENERAL. Un cargador:todo programa necesita ser cargado en la memoria por el sistema operativo. De esto se encarga el intrprete. Definicin de los datos: la mayora de los programas operan con datos y por lo tanto en el cdigo fuente debemos definir qu tipo de datos vamos a utilizar en el programa. Esto se realiza de manera diferente en los distintos lenguajes. Todos los lenguajes que usaremos tienen la posibilidad de crear una nueva definicin de datos simplemente al utilizar los datos. Veremos esto en la prxima seccin. Instrucciones:son la parte central del programa. Las instrucciones manipulan los datos que hemos definido, realizan clculos, muestran los resultados, etc.

LA MAYORA DE LOS PROGRAMAS SIGUEN UNA DE DOS ESTRUCTURAS: Programas por lote. Estos se ejecutan tpicamente desde una lnea de comando o automticamente desde otra aplicacin y tienden al siguiente patrn: Inicializacin interna de los datos. Lectura de los datos ingresados. Procesamiento de los datos. Visualizacin o ejecucin de los resultados.

Programas controlados por eventos. La mayor parte de las interfaces responden a eventos. Los programas controlados por eventos son generalmente as: Inicializacin interna de los datos. Lectura de los datos ingresados. Procesamiento de los datos. Visualizacin o ejecucin de los resultados.

Prototipo Didctico de Fundamentos de Programacin

Pgina 42

Instituto Tecnolgico del Istmo


3.3 Traduccin de un programa: compilacin, enlace de un programa, errores en tiempo de compilacin.

Para elaborar un programa debemos tomar en cuenta las dos siguientes fases: Fase de compilacin, montaje o enlace (link). Fase de ejecucin de un programa.

Fase de compilacin o linkado (link, montado, enlace). Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado directamente por un ordenador, sino que debe ser traducido a lenguaje mquina. Las etapas por las que debe pasar un programa escrito en un lenguaje de programacin, hasta poder ser ejecutable son: Programa fuente: Programa escrito en un lenguaje de alto nivel (texto ordinario que contiene las sentencias del programa en un lenguaje de programacin). Necesita ser traducido a cdigo mquina para poder ser ejecutado. Compilador: Programa encargado de traducir los programas fuentes escritos en un lenguaje de alto nivel a lenguaje mquina y de comprobar que las llamadas a las funciones de librera se realizan correctamente. Programa (o cdigo) objeto: Es el programa fuente traducido (por el compilador) a cdigo mquina. An no es directamente ejecutable. Programa Ejecutable: Traduccin completa a cdigo mquina, realizada por el enlazador, del programa fuente y que ya es directamente ejecutable. Montador o enlazador (Linker): Es el programa encargado de insertar al programa objeto el cdigo mquina de las funciones de las libreras (archivos de biblioteca) usadas en el programa y realizar el proceso de montaje, que producir un programa ejecutable .exe. Las libreras son una coleccin de cdigo (funciones) ya programado y traducido a cdigo mquina, listo para utilizar en un programa y que facilita la labor del programador. A continuacin mostramos una imagen de cmo se desenvuelven las etapas de un programa.

Prototipo Didctico de Fundamentos de Programacin

Pgina 43

Instituto Tecnolgico del Istmo

Errores en tiempo de compilacin. Si el programa fuente es sintcticamente correcto, el compilador generar el cdigo objeto, en caso contrario mostrar una lista con los errores encontrados, no generndose ningn programa objeto, para que procedamos a su depuracin. Los compiladores emiten mensajes de error o de advertencia durante las fases de compilacin, de enlace o de ejecucin de un programa. Los errores en tiempo de compilacin son los que se producen antes de la ejecucin del programa, durante el proceso de compilacin del programa. Los errores que se pueden producir en la fase de compilacin son: Errores fatales. Son raros e indican errores internos del compilador. Cuando ocurre la compilacin se detiene inmediatamente. Errores de sintaxis. Son los errores tpicos de sintaxis, no detienen la compilacin sino que al finalizar sta se mostrar la lista con todos los errores encontrados. Algunos errores suelen ser consecuencia de otros
Pgina 44

Prototipo Didctico de Fundamentos de Programacin

Instituto Tecnolgico del Istmo


cometidos con anterioridad. Con este tipo de errores no se puede obtener un programa objeto y por lo tanto tampoco el ejecutable. Advertencias y avisos (warnings).Indican que hay lneas de cdigo sospechosas que a pesar de no infringir ninguna regla sintctica, el compilador las encuentra susceptibles de provocar un error. Cuando se detecta un warning la compilacin no se detiene. Si en un programa fuente slo se detectan warnings, se podr obtener un programa objeto, que tras el linkado dar lugar a un programa ejecutable.

3.4 Ejecucin de un programa.

Generacin de cdigo ejecutable. La fase final del compilador es la generacin de cdigo ejecutable. Toma como entrada la representacin intermedia del programa fuente y produce como salida un programa objeto equivalente. Las exigencias tradicionalmente impuestas a un compilador son duras. El cdigo de salida debe ser correcto y de gran calidad, lo que significa que debe utilizar de forma eficaz los recursos de la computadora. Adems, el propio generador de cdigo debe ejecutarse eficientemente. Matemticamente, el problema de generar cdigo ptimo es indecidible. En la prctica, hay que conformarse con tcnicas heursticas que generan cdigo bueno pero no siempre ptimo. La eleccin de las heursticas es importante, ya que un algoritmo de generacin de cdigo cuidadosamente diseado puede producir fcilmente cdigo que sea ms rpido que el producido por un algoritmo diseado precipitadamente.

Pasos para la elaboracin y ejecucin de un programa. Los pasos a seguir los podemos resumir de la siguiente manera: 1. Escribir el cdigo fuente, por ejemplo con el editor del EID. 2. Compilar el fichero fuente. 3. Si se produce errores de sintaxis volver al editor y eliminar los errores de sintaxis.

Prototipo Didctico de Fundamentos de Programacin

Pgina 45

Instituto Tecnolgico del Istmo


4. Si no hay errores se obtendr el cdigo fuente y el enlazador construir el archivo ejecutable. 5. Una vez obtenido el archivo ejecutable, ser el sistema operativo el encargado de colocar el programa en la memoria central y ejecutarlo. 6. Comprobar el funcionamiento del programa. 7. Si se detecta errores o un mal funcionamiento del programa, activar el depurador para trazar el programa y ejecutarlo sentencia a sentencia. 8. Una vez que hayamos encontrado la causa del error, volvemos al editor y lo corregimos. 9. El proceso de compilar, enlazar y ejecutar el programa, lo repetiremos hasta que no se produzcan ms errores.

Fases de ejecucin de un programa. Una vez que tenemos el programa en lenguaje mquina, para poderlo ejecutar hay que introducirlo en la memoria, y se efectan las siguientes fases: 1. Una utilidad del S.O. llamada cargador colocar el programa, y sus datos de entrada, en memoria principal, preparndolo para su ejecucin. 2. El S.O. le pasa el control a la C.P.U. para que comience la ejecucin del programa, realizando la Unidad de Control los siguientes pasos (fases): Captacin de la instruccin: Lee de la Memoria Principal la instruccin a ejecutar. Ejecucin de la instruccin: Interpreta la instruccin leda y enva seales de control a las unidades que deban intervenir en su ejecucin. Tras dicha ejecucin se establece cul ser la siguiente instruccin a ejecutar.

Ejecutar programa en C++. Despus de que se ha compilado un programa en C++, est listo para ejecutarse. Desde la salida de un compilador de C++ es cdigo ejecutable objeto, para ejecutar el programa, simplemente escriba su nombre en la lnea de comandos. Por ejemplo, para ejecutar Ejemplo1.exe use esta lnea de comandos: C:\...>Sample Cuando se ejecuta, el programa muestra el siguiente resultado: C++ ispowerprogramming.
Prototipo Didctico de Fundamentos de Programacin Pgina 46

Instituto Tecnolgico del Istmo


Un ltimo punto: los programas de este tema son basados en consola, no en ventana. Es decir, se ejecutan en una sesin de lnea de comandos. C++ es completamente compatible con la programacin de Windows. De hecho, es el lenguaje ms comnmente usado para el desarrollo de Windows. Sin embargo, ninguno de los programas en este tema utilizara la interfaz de usuario grfica (GUI) de Windows. La razn de esto es fcil de entender: los programas de Windows son, por su naturaleza, grande y complejo. La sobrecarga necesaria para crear incluso un mnimo esqueltico programa de Windows es de 50 a 70 lneas de cdigo. Para escribir programas de Windows que muestran las caractersticas de C++ requerira cientos de lneas de cdigo. En contraste, los programas basados en la consola son mucho ms cortos y son el tipo de programas que se utiliza normalmente para ensear programacin. Una vez que haya dominado C++, usted podr aplicar su conocimiento a la programacin de Windows sin ningn problema. Para crear un archivo de origen de C y compilarlo en la lnea de comandosVisual C++ 2008 incluye un compilador de C que se puede usar para crear cualquier cosa, desde programas de C bsicos hasta aplicaciones basadas en la API de Windows. Puede usar sus propios programas de C en lugar de escribir los se muestran en este tutorial una modo de ejemplo. Tambin puede usar cualquiera de los programas de ejemplo de cdigo de C incluido en el tema. De forma predeterminada, el compilador de Visual C++ trata todos los archivos que finalizan en .c como cdigo fuente de C, y todos los archivos finalizan en .cpp como cdigo fuente de C++. Para hacer que el compilador trate todos los archivos como cdigo fuente de C sin tener en cuenta la extensin del nombre de archivo, utilice la opcin /TC del compilador. Para crear un archivo de origen de C y compilarlo en lnea de comando sigue las siguientes instrucciones: 1. Haga clic en Inicio y escoja Todos los programas, Microsoft Visual Studio 2010 y Herramientas de Visual Studio; terminacin de prrafo, haga clic en Smbolo del sistema de Visual Studio 2010.En funcin de la versin de Windows del equipo y de la configuracin de seguridad del sistema, es posible que deba hacer clic con el botn secundario en Smbolo del sistema de Visual Studio 2008 y una continuacin, hacer clic en Ejecutar como administrador para ejecutar correctamente, la aplicacin se crea lo siguiente.
Prototipo Didctico de Fundamentos de Programacin Pgina 47

Instituto Tecnolgico del Istmo


2. En el smbolo del sistema, escriba notepadsimple.c y presione Catalua.Haga clic en S cuando se le pida que cree un archivo. 3. En el Bloc de notas, escriba las lneas siguientes.

4. En el men Archivo, haga clic en Guardar para crear un archivo de origen de C. 5. Cierre el Bloc de notas. 6. En el smbolo del sistema, escriba simple.c cl y presione Enter.El compilador cl.exe gnero un programa ejecutable, Simple.exe.Puede ver el nombre del programa ejecutable, en las lneas de informacin de salida que muestra el compilador.

7. Para ver una lista de todos los archivos del directorio \simple\, escriba dir simple.* y presione Enter.El archivo .obj es un archivo de formato intermedio. 8. Para ejecutar Simple.exe, escriba simple y presione Enter.El programa mostrar este texto y se cerrar; Se trata de un programa C nativo. 9. Para cerrar la ventana de smbolo del sistema, escriba salir y presione Enter.

Prototipo Didctico de Fundamentos de Programacin

Pgina 48

Instituto Tecnolgico del Istmo


3.5 Elementos del lenguaje: datos, literales y contantes, identificadores, variables, parmetros, operadores, entrada y salida de datos.

Datos. El primer objetivo de toda computadora es el manejo de la informacin o datos. Estos datos pueden se cifras de ventas de un supermercado o las calificaciones de una clase o informacin asignada por el usuario a un problema especfico. Un dato es la expresin general que describe los objetos con los cuales opera una computadora. Existen dos clases de tipos de datos, datos simples (sin estructura) y compuestos (estructurados). Los datos simples significan que no estn compuestos de otra estructura de datos, los ms usado son: enteros, reales, carcter (char) y los de tipo lgico (boolean). Los datos estructurados no tienen limitaciones o restricciones en el tamao de memoria ocupada que son propias de las estructuras estticas. Los ms comunes son: array (vector/matriz), registro, archivo (fichero), conjunto, cadena (string).

Tipos de Datos. Al declarar variables se necesita indicar cul es el tipo de datos de las variables, los tipos bsicos permitidos por el lenguaje c++son los que se muestran en la siguiente tabla:

Prototipo Didctico de Fundamentos de Programacin

Pgina 49

Instituto Tecnolgico del Istmo


Hay que tener en cuenta que esos rangos son los clsicos, ya en la prctica los rangos,sobretodo el de los enteros, dependen del computador y procesador empleados. Tiposnumricos. El tipo numrico es el conjunto de los valores numricos. Estos pueden representarse en dos formas distintas: Tipo numrico entero (integer). Tipo numrico real (real)

El tipo entero es un subconjunto finito de los nmeros enteros. Los nmeros enteros son nmeros completos, no tienen componentes fraccionarios o decimales y pueden ser positivos o negativos. Ejemplo de nmeros enteros: 5 -15 20 1340 6 4 17 100

En aplicaciones cientficas se requiere una presentacin especial para manejar nmeros, es ah donde entra la representacin en coma flotante es una generalizacin de notacin cientfica. Un ejemplo seria: representacin de notacin exponencial. En estas expresiones se consideran la mantisa (parte decimal) al nmero real y el exponente (parte potencial) el de la potencia de diez. Tipos lgicos (booleanos) El tipo lgico tambin llamado booleano, es aquel dato que solo puede tomar uno de los dos valore:
Cierto o verdadero (true) y falso (false)

Este tipo de datos se utiliza para representar las alternativas (si/no) a determinadas condiciones, por ejemplo, cuando se pide si un valor entero es par, la respuesta ser verdadera o falsa, segn sea par o impar.

Prototipo Didctico de Fundamentos de Programacin

Pgina 50

Instituto Tecnolgico del Istmo


Tipo carcter y Tipo cadena. El tipo carcter es el conjunto finito y orden de caracteres que la computadora reconoce. Un dato de tipo carcter contiene un solo carcter. Los caracteres que reconocen las diferentes computadoras no son estndar; sin embargo, la mayora reconoce los siguientes caracteres alfabticos y numricos.

Caracteres alfabticos: (A, B, C, .., Z) (a, b, c, .., z)

Caracteres numricos: (1, 2, , 9, 0) Caracteres especiales: (+, -, *, /, ^, ., ;,<, >, $, )

El tipo cadena (string) de caracteres es una sucesin de caracteres que se encuentran delimitados por una comilla (apstrofo)o dobles comillas, segn el tipo de lenguaje de programacin. La longitud de una cadena de caracteres es el nmero de ellos comprendidos entre los separados o limitadores. Aqu los siguientes ejemplo: 'Hola Mortimer', ''8 de octubre de 2010'', 'Sr. Mckenna'. En la siguiente grafica observemos pues el resumen de la clasificacin de los tipos de datos: Datos

Numricos

Carcter

Lgico

Entero

Real

Prototipo Didctico de Fundamentos de Programacin

Pgina 51

Instituto Tecnolgico del Istmo


Literales. Cuando una variable se asigna a valores literales (17, 2.3, etc.) hay que tener en cuenta lo siguiente: Los nmeros se escriben tal cual (17, 34, 39). El separador de decimales es el punto (18.4 se interpreta como 18 coma4). Si un nmero entero se escribe anteponiendo un cero, se entiende que est en notacin octal. Si un nmero entero se escribe anteponiendo el texto 0x (cero equis), se entiende que es un nmero hexadecimal, el nmero 0x10 significa 16. En los nmeros decimales se admiten usar notacin cientfica: 1.23e+23 eso significa . Los caracteres simples van encerrados entre comillas simples, 'a'. Los textos strings van encerrados entre comillas, ''Hola''. Los enteros se pueden almacenar como caracteres 'A'o como enteros cortos, es ms 'A' es lo mismo que 65. Eso vale tanto para el tipo carcter como para el tipo entero.

Secuencias de escape. En el caso de los caracteres, hay que tener en cuenta que hay una serie de caracteres que son especiales. Por ejemplo como almacenamos en una variable char el smbolo de la comilla simple, si la propia comilla simple sirve para delimitar, es decir:

Eso no se puede hacer ya que el compilador entiende que hay una mala delimitacin de caracteres. Para resolver este y otros problemas se usan los caracteres de escape, que representan caracteres especiales. Todo comienza con el signo '\' (backslash) seguido de una letra minscula.

Los caracteres especiales son:


Prototipo Didctico de Fundamentos de Programacin Pgina 52

Instituto Tecnolgico del Istmo

Constantes. Las constantes son objetos cuyo valor permanece por siempre a lo largo de la ejecucin de un programa. Una contante es la denominada de un valor concreto, de tal forma que se utiliza su nombre cada vez que se necesita referenciarlo. Por ejemplo, si se desea obtener un reporte para cada uno de los empleados de una empresa, con sus datos generales, la fecha y cantidad de dinero que recibieron la ltima semana, el dato fecha puede ser una contante ya que la fecha es la misma para todos. La mayora de los lenguajes de programacin permiten diferentes tipos de constantes, que suelen ser las siguientes: enteras, reales, caracteres y lgicas, y representan datos de ese tipo.

Identificadores. Son las palabras creadas por los programadores para darle nombre a los objetos y dems elementos que necesitamos declarar en un programa como son las variables, constantes, tipos, estructura de datos, archivos, subprogramas, etc. Un identificador no puede ser igual a una palabra reservada, y no debe tener el mismo nombre que una funcin, ya sea definida por el usuario o de las bibliotecas propias del programa. Variables.
Prototipo Didctico de Fundamentos de Programacin Pgina 53

Instituto Tecnolgico del Istmo


Son objetos cuyo valor puede ser modificado a lo largo de la ejecucin de un programa. Las variable llevan un nombre llamado identificador, este puede ser una cadena de letras y dgitos, que normalmente empieza con una letra. Si se intenta asignar un valor de un tipo a una variable de otro tipo se producir un error de tipo. Una variable se identifica por los siguientes atributos: nombre que lo asigna y tipo que describe el uso de la variable. Dependiendo del lenguaje de programacin, hay diferentes tipos de variables, tales como enteros, reales, carcter, lgicas y de cadenas.

Parmetros o argumentos. Los parmetros o argumentos son un mecanismo para pasar datos del programa principal a un procedimiento y viceversa. Los parmetros de la llamada para ejecutar la rutina se llaman parmetros reales, mientras que los parmetros en la declaracin de rutina se llaman parmetros formales. A continuacin se muestra un ejemplo de programacin con un procedimiento que tiene un parmetro.

La salida por pantalla tras la ejecucin del programa anterior es la siguiente:

Prototipo Didctico de Fundamentos de Programacin

Pgina 54

Instituto Tecnolgico del Istmo


Si hay varios parmetros formales del mismo tipo, los identificadores se separarn por comas y si son de distintos tipos, con los correspondientes caracteres de punto y coma, como se muestra a continuacin.

Los parmetros pueden ser de cualquier tipo predefinido o ya declarado en la definicin de tipos, incluso pueden ser funciones o procedimientos. Asimismo pueden existir parmetros formales de distintas clases. Los parmetros formales se clasifican en: Parmetros formales por Valor (o de entrada). Parmetros formalesVariables (o de entrada/salida). Parmetros formales Variables sin Tipo.

Parmetros formales por Valor (o de entrada). Los parmetros formales por valor permiten la introduccin de informacin en el procedimiento. A continuacin un ejemplo.

Los vales son introducidos en la llamada a la subrutina mediante el parmetro real que puede ser una constante, una variable o una expresin con un valor determinado. Al empezar a ejecutarse la subrutina se reserva espacio en la memoria para el parmetro formal al que, en un principio, se le asigna el mismo valor que el parmetro real. Posteriormente los valores que vayan tomando durante la ejecucin de la subrutina, el parmetro real y formal sern independientes. Una vez terminada de ejecutar la subrutina se dejara libre de uso el espacio de memoria correspondiente al parmetro formal. Ejemplo de un programa que incluye un procedimiento con un parmetro formal por valor:
Prototipo Didctico de Fundamentos de Programacin Pgina 55

Instituto Tecnolgico del Istmo

Parmetros formales Variables (o de entrada/salida). Los parmetros formales variables permiten la introduccin y obtencin o salida de informacin en el procedimiento.

Prototipo Didctico de Fundamentos de Programacin

Pgina 56

Instituto Tecnolgico del Istmo

En este caso la informacin que pasamos no es un valor del parmetro real sino la direccin de memoria en la que se almacena el valor del parmetro real. Este espacio de la memoria es compartido con el parmetro formal durante la ejecucin del procedimiento. Es decir, cualquier cambio en el parmetro formal afectara al real y viceversa, de forma que el valor final del parmetro formal en la subrutina lo conserva el parmetro real al terminar de ejecutarse la subrutina. Los parmetros reales que corresponden a parmetros variables (nunca constantes ni expresiones) que pueden tener o no un valor al hacer la llamada a la subrutina. Por ejemplo, los parmetros variables se pueden utilizar para asignar un valor por primera vez a variables globales (inicializacin de variables).

Parmetros formales Variables sin Tipo. Los parmetros formales variables sin tipo tambin permita la introduccin y obtencin o salida de informacin en el procedimiento.

Los procedimientos que declaran este tipo de parmetros formales se llaman de forma similar a los anteriores, pero pueden emplear parmetros reales de cualquier tipo, de forma que los parmetros formales asumen los tipos correspondientes de aquellos. Un ejemplo de procedimiento con parmetros formales de diversos tipos es el siguiente.

Donde a y b son parmetros por valor; c, d y e son parmetros variables y f y g son parmetro variables sin tipo.

Prototipo Didctico de Fundamentos de Programacin

Pgina 57

Instituto Tecnolgico del Istmo


Operadores. Operadores: Son elementos que relacionan de forma diferente, los valores de una o ms variables y/o constantes. Es decir, los operadores nos permiten manipular valores.

Operadores Aritmticos: Los operadores aritmticos permiten la realizacin de operaciones matemticas con los valores (variables y constantes).Los operadores aritmticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. Suma Resta Multiplicacin Divisin Modulo (residuo de la divisin entera).

+ * / Mod

Ejemplos:

7/2 = 3.5 12 Mod 7 = 5 4 + 2 * 5 = 14

Prototipo Didctico de Fundamentos de Programacin

Pgina 58

Instituto Tecnolgico del Istmo


Prioridad de los operadores aritmticos. Todas las expresiones entre parntesis se evalan primero. Las expresiones con parntesis anidados se evalan de adentro as afuera, el parntesis ms interno se evala primero. Dentro de una misma expresin los operadores se evalan en el siguiente orden. 1. ^ exponenciacin. 2. *, / y Mod multiplicacin, divisin y modulo. 3. +, - suma y resta.

Los operadores en una misma expresin con igual nivel de prioridad se evalan de izquierda a derecha. Ejemplo a continuacin.

Operadores Relacionales. Se utilizan para establecer una relacin entre dos valores. Compara esto valores entre si y esta comparacin produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relacionales comparan valores del mismo tipo (numricos o cadenas). Tiene el mismo nivel de prioridad en su evaluacin. Los operadores relacionales tienen menor prioridad que los aritmticos.

Prototipo Didctico de Fundamentos de Programacin

Pgina 59

Instituto Tecnolgico del Istmo


Operadores relacionales > Mayor que < Menor que >= Mayor o igual que <= Menor o igual que <> Diferente = Igual

A continuacin unos ejemplos.

Ejemplos no lgicos.

Operadores Lgicos. Estos operadores se utilizan para establecer relaciones entre valores lgicos. Se refiere a que sirven para plantear condiciones o comparaciones y dan como resultado un valor booleano verdadero y falso, es decir se cumple o no se cumple. Estos valores pueden ser resultado de una expresin relacional.
Pgina 60

Prototipo Didctico de Fundamentos de Programacin

Instituto Tecnolgico del Istmo

Ejemplo:

Prototipo Didctico de Fundamentos de Programacin

Pgina 61

Instituto Tecnolgico del Istmo


Prioridad de los Operadores Lgicos: 1. NOT 2. AND 3. OR Prioridad de los Operadores en general: 1. 2. 3. 4. 5. () ^ *, /, Mod, Not +, -, And >, <, > =, < =, <>, =, Or

A continuacin algunos ejemplos.

Prototipo Didctico de Fundamentos de Programacin

Pgina 62

Instituto Tecnolgico del Istmo


Entrada y Salida de Datos (informacin). Las operaciones de entrada permiten leer determinados valores y asignarlos a determinadas variables, esto se conoce como operacin de lectura (read). Los datos de entrada se introducen al procesador mediante los dispositivos fsicos que son: teclado, tarjetas perforadas, unidades de disco, etc. Las salidas pueden aparecer en un dispositivo fsico de salido como: pantalla, impresora, etc. A esta operacin se le denomina escritura (write). En la escritura de algoritmo las acciones de lectura y escritura se representan por los formatos siguientes: Leer (lista de variables de entrada) Escribir (lista de expresiones de salida)

As, por ejemplo: Leer (A, B, C) Representa la lectura de tres valores de entrada que se asignan a la variable A, B y C. Escribir ('hola Abimael') Visualiza en la pantalla o monitor mensaje 'hola Abimael'. - o escribir en el dispositivo de salida - el

Leer en ingls es read y escribir en ingls es write o bien print, como suelen traerlos lo diferentes lenguajes de programacin.

3.6 Errores en Tiempo de Ejecucin.

Como cada lenguaje de programacin tiene unas reglas especiales (sintaxis) debe existir un compilador especfico para cada lenguaje de programacin.

Prototipo Didctico de Fundamentos de Programacin

Pgina 63

Instituto Tecnolgico del Istmo


Si el programa fuente es sintcticamente correcto, el compilador generar el cdigo objeto, en caso contrario mostrar una lista con los errores encontrados, no generndose ningn programa objeto, para que procedamos a su depuracin Los compiladores emiten mensajes de error o de advertencia durante las fases de compilacin, de enlace o de ejecucin de un programa: Los errores en tiempo de compilacin son los que se producen antes de la ejecucin del programa, durante el proceso de compilacin del programa. Los errores en tiempo de ejecucin son los que se producen durante la ejecucin del programa. Son los ms difciles de encontrar, no son detectados por el compilador, ya que son errores de lgica, no de sintaxis.

Ejemplo de un programa que tiene errores de ejecucin.

Prototipo Didctico de Fundamentos de Programacin

Pgina 64

Instituto Tecnolgico del Istmo UNIDAD 4 CONTROL DE FLUJO

4.1 Estructuras secuenciales.

Se caracteriza por que una accin se ejecuta de tras de la otra (la instruccin sigue a otra en secuencia). Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicializacin de variables, operaciones de asignacin, calculo, sumarizacin, etc. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el final del proceso. A continuacin figura 4.a que representa una estructura secuencial.

Figura 4.a Estructura secuencial

La estructura secuencial tiene una entra y una salida, su representacin grfica se muestra en la figura 4.b y 4.c.

Prototipo Didctico de Fundamentos de Programacin

Pgina 65

Instituto Tecnolgico del Istmo

Figura 4.b pseudocdigo de una estructura secuencial.

Figura 4.c Diagrama N-S de una estructura secuencial.

Ejemplos usando la estructura secuencial. Ejemplo 4.1. Calculo de la suma y producto de dos nmeros. La suma S de dos nmeros es S = A + B. El pseudocdigo y el diagrama de flujo correspondiente se muestran a continuacin.

Prototipo Didctico de Fundamentos de Programacin

Pgina 66

Instituto Tecnolgico del Istmo


Pseudocdigo:

inicio leer (A) leer (B) SA+B PA*B escribir (S, P) fin.

Diagrama de flujo:

Prototipo Didctico de Fundamentos de Programacin

Pgina 67

Instituto Tecnolgico del Istmo


Diagrama N-S.

4.2 Estructuras selectivas: simple, doble y mltiple.

La especificacin formal de algoritmos tiene realmente utilidades cuando el algoritmo requiere una instruccin. Este es el casi cuando existe un numero de posibles alternativas resultantes de la evaluacin de una determinada condicin. Estas estructuras se identifican porque en la fase de solucin de un problema existe algn punto en el cual es necesario establecer una pregunta, para decidir si ciertas acciones deban realizarse o no. Las condiciones se especifican usando expresiones lgicas. La representacin de una estructura selectiva se hace con palabras en pseudocdigo (if - then - else o en espaol si - entonces - sino) y en flujograma (figura geomtrica) en forma de un rombo o bien con un tringulo en el interior de una caja rectangular. Las estructuras selectivas o alternativas son: Simples. Dobles. Mltiples.

Prototipo Didctico de Fundamentos de Programacin

Pgina 68

Instituto Tecnolgico del Istmo


Estructura selectiva simple. Se identifican porque estn compuestos nicamente de una condicin. La estructura si entonces (en ingls, if then) ejecuta la condicin y en tal caso, si la condicin es verdadera, entonces ejecuta la accin Si (o acciones si son varias), y si la condicin es falsa, entonces no hace nada. A continuacin se muestra las representaciones graficas de la estructura condicional simple.

Estructuras alternativas simples: pseudocdigo, diagrama de flujo, diagrama N-S.

Ejemplo usando estructuras selectivas simples. Construir un algoritmo tal, que dado como dato la calificacin de un alumno en un examen, escriba ''aprobado'' en caso de que esa calificacin fuese mayor que 8. Salidas: mensaje de aprobado si se cumple la condicin. Entradas: calificacin. Datos adicionales: un alumno aprueba si la calificacin es mayor que 8. Variables: Cal = calificacin

Prototipo Didctico de Fundamentos de Programacin

Pgina 69

Instituto Tecnolgico del Istmo


Representacin graficas de los resultados obtenidos del ejemplo antes mencionado.

Inicio Leer (Cal) Si Cal > 8 entonces Escribir (''aprobado'') Fin_si Fin

Pseudocdigo

Diagrama de flujo

Diagrama N-S

Prototipo Didctico de Fundamentos de Programacin

Pgina 70

Instituto Tecnolgico del Istmo


Estructura de seleccin doble. Son estructuras lgicas que permiten controlar la ejecucin entre dos opciones o alternativas posibles, por naturaleza de esta estructura se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes. Representacin en pseudocdigo a continuacin.

Entonces, si una condicin C es verdadera, se ejecuta la accin S1 y si es falsa, se ejecuta la accin S2.

Estructura de seleccin doble: representacin en diagrama de flujo.

Estructura de seleccin doble: representacin en diagrama N-S.

Prototipo Didctico de Fundamentos de Programacin

Pgina 71

Instituto Tecnolgico del Istmo


A continuacin ejemplos con laestructura de seleccin doble. Ejemplo 1. Dado como dato la calificacin de un alumno en un examen, escriba ''aprobado'' si su calificacin es mayor que 8 y ''reprobado'' en caso contrario.

Inicio Leer (cal) Si cal > 8 entonces Escribir (''aprobado'') Sino Escribir (''reprobado'') Fin_si Fin

Pseudocdigo

Diagrama de flujo

D i a g r a m a N S

Prototipo Didctico de Fundamentos de Programacin

Pgina 72

Instituto Tecnolgico del Istmo


Ejemplo 2. Dado como dato el sueldo de un trabajador, aplicar un aumento del 15% si sueldo es inferior a $100 y 12% en caso contrario, luego imprimir el nuevo sueldo del trabajador.

Inicio Leer (sue) Si sue< 100 entonces Nsuesue* 1.15 Sino Nsuesue* 1.12 Fin_si Escribir (Nsue) Fin Pseudocdigo Diagrama N-S

Estructuraselectivamltiple. Con frecuencia es necesario que exista ms de dos elecciones posibles. Esto situacin se resuelve usando la estructura selectiva mltiple, as te evitaras una serie de problemas de escritura y de legibilidad. Usando la estructura de decisin mltiple se evaluara una expresin que podr tomar '' n '' valores distintos, 1, 2, 3, ., n y segn que elija uno de estos valores en la condicin, se realizara una de las '' n '' o lo que es igual, el flujo del algoritmo seguir slo un determinado camino entre las '' n '' posibles. Esta estructura se representa por un selector el cual si tomael valor 1 ejecutara la accin 1, si toma el valor 2 ejecutara la accin 2, si toma el valor N realizara la accin N.

Prototipo Didctico de Fundamentos de Programacin

Pgina 73

Instituto Tecnolgico del Istmo


A continuacin una representacin de la estructura selectiva mltiple .

Ejemplos con la estructura selectiva mltiple. Ejemplo 1. Disear un algoritmo tal que dado como dato dos variables de tipo entero, obtengan el resultado de la siguiente funcin.

Pseudocdigo

Diagrama de flujo

Prototipo Didctico de Fundamentos de Programacin

Pgina 74

Instituto Tecnolgico del Istmo

Diagrama N-S

4.3 estructuras iterativas: repetir, mientras, desde/hasta.

Son operaciones que se deben ejecutar un nmero repetido de veces. El conjunto de instrucciones que se ejecutan repetidamente cierto nmero de veces, se llama ciclo, bucle o lazo. Iteracin significa cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle. Fases de un programa cclico: 1. 2. 3. 4. Entrada de datos e instrucciones previas. Lazo o bucle. Instrucciones finales o reto del proceso. Salida de resultado.

A continuacin un ejemplo de bucle infinito. En este diagrama de flujo, el bucle se estar repitiendo indefinidamente ya que no existe ninguna condicin que nos permita finalizar en algn momento.

Prototipo Didctico de Fundamentos de Programacin

Pgina 75

Instituto Tecnolgico del Istmo

Representacin grfica de bucle infinito

A continuacin un ejemplo de un bucle finito. Es este ejemplo, el bucle finalizara cuando se cumpla la condicin de que N sea igual a cero. Esto quiere decir, que existe una condicin que nos permitir en algn momento finalizar.

Representacin grfica de bucle finito Prototipo Didctico de Fundamentos de Programacin Pgina 76

Instituto Tecnolgico del Istmo


Bucles repetitivos: A continuacin, se muestran tres diseos de estructuras clnicas: las independientes son cuando los bucles se realizan uno primero hasta que se cumpla la condicin y solo en ese caso se entra al bucle que sigue. Los ciclos anidados, al entrar a una estructura de repeticin, dentro de ella se encuentra otra. La ms interna se termina de realizar y se contina con la externa hasta que la condicin se cumpla. Los bucles cruzados, los cuales no son convenientes de utilizar, se tiene que iniciamos un bucle y no se ha terminado cuando empezamos otro, luego utilizamos estructuras de salto (goto, incluye, requiere) para pasar al bucle externo y se quedan entrelazados.

Veamos a continuacin grficamente el diseo de estas tres formas cclicas:

Enseguida vemos el diseo de la estructura en diagrama de flujo.

Prototipo Didctico de Fundamentos de Programacin

Pgina 77

Instituto Tecnolgico del Istmo


Estructura iterativa repetir. Se llama repetir a la estructura algortmica que se ejecuta un nmero definido de veces hasta que la condicin se torna verdadera.

Representacin grafica

Representacin pseudocodificada

Ejemplo con la estructura iterativa repetir. Calcular la suma de los cuadros de los primeros 100 nmeros enteros y escribe el resultado. Solucin: las reglas para la construccin de esta estructura usando repetir, nos dice que debemos declarar una variable contador que debe inicializarse antes del ciclo e incrementarse dentro del ciclo. La condicin estar colocada al final del bucle, para que primero ejecutemos la instruccin y luego preguntamos si la condicin se cumple. Esto quiere decir, que en esta estructura el bucle se realizara por lo menos una vez; tambin observaremos que la condicin est al revs, porque el bucle se repite hasta que la condicin se cumpla.
Prototipo Didctico de Fundamentos de Programacin Pgina 78

Instituto Tecnolgico del Istmo

Pseudocdigo

Diagrama N-S

Diagrama de flujo

Prototipo Didctico de Fundamentos de Programacin

Pgina 79

Instituto Tecnolgico del Istmo


Estructura iterativa mientras. Se llama mientras a la estructura algortmica que se ejecuta mientras la condicin evaluada resulte verdadera. Se evala la expresin booleana y, si es cierta, se ejecuta la instruccin especificada, llamada el cuerpo del bucle. Entonces se vuelve a evaluar la expresin booleana, y si todava es cierta se ejecuta de nuevo el cuerpo. Este proceso de evaluacin de la expresin booleana y ejecucin del cuerpo se repite mientras la expresin sea cierta, cuando se hace falsa, finaliza la repeticin.

Representacin grafica

Observemos el diagrama de flujo, que se necesita una variable contadora (un ndice), para llevar la cuenta de las veces que entramos al cuerpo del ciclo. Tambin es importante notar que esta variable se inicializa antes de entra al cuerpo del ciclo, y dentro del cuerpo se incrementa en una cantidad constante, por lo general en uno. Esta variable a la vez, nos sirve para compararla con el valor dado en la condicin. Cuando se cumple la condicin, se sale del ciclo.
Prototipo Didctico de Fundamentos de Programacin Pgina 80

Instituto Tecnolgico del Istmo

Representacin pseudocodificada

Ejemplo con la estructura mientras. Calcular la suma de los cuadrados de los primeros 100 nmeros enteros y escribir el resultado.

Diagrama N-S

Pseudocdigo

Prototipo Didctico de Fundamentos de Programacin

Pgina 81

Instituto Tecnolgico del Istmo

Diagrama de flujo

Estructura iterativa desde/hasta. Se usa frecuentemente cuando se conoce de antemano el nmero de veces que se ejecutarn las acciones de un bucle. Enseguida se muestra una de sus caractersticas, en su representacin grfica.

Prototipo Didctico de Fundamentos de Programacin

Pgina 82

Instituto Tecnolgico del Istmo


Representacin pseudocodificada:

Espaol Desde var = valor inicial hasta valor final hacer Acciones Fin_desde

Ingles Forvar = valor inicial to valor final do Accin End_for

La estructura desde/hasta se le conoce como repetitiva, para usar esta estructura en algoritmos debemos hacer uso de contadores y de algunas veces de acumuladores, cuyo breve concepto daremos a continuacin. Contador: es una variable cuyo valor aumenta o disminuye en una cantidad constante cada vez que se produce un determinado suceso o accin. Los contadores se utilizan con la finalidad de contar acciones internas del bucle; deben realizar una operacin de inicializacin y posteriormente las sucesivas de incremento o decremento del mismo. La inicializacin consiste en asignarle al contador un valor. Se situar antes y fuera del bucle. A continuacin su representacin pseudocodificada:

<nombre> nombre del contador > + <valor constante> Si en vez de incremento es decremento se coloca un menos en lugar del ms. Ejemplo: i = i + 1

Prototipo Didctico de Fundamentos de Programacin

Pgina 83

Instituto Tecnolgico del Istmo


Acumulador o totalizador: es una variable que suma sobre s misma un conjunto de valores, para que de esta manera, se tenga la suma de todo ellos en una solo variable. La diferencia entre un contador y un acumulador es que mientras el primero va aumentado de uno en uno, el acumulador va aumentando en una cantidad variable. A continuacin su representacin pseudocodificada:
<Nombre del acumulador> <nombre del acumulador> + <valores variables>

Ejemplo con la estructura iterativa desde/hasta: Calcular la suma de los cuadrados de los primeros 100 enteros y escribir el resultado.

Pseudocdigo Inicio Suma Desde I = 1 hasta 100 hacer Suma suma + I * I Fin_desde Escriba (suma) Fin

Diagrama de flujo

Prototipo Didctico de Fundamentos de Programacin

Pgina 84

Instituto Tecnolgico del Istmo


4.4 Diseo e implementacin de funciones.

Una funcin es un subprograma que recibe, como argumentos o parmetros, datos de tipo numrico o no numrico, y devuelve un nico resultado.Las funciones incorporadas al sistema se denominan funciones internas, o intrnsecas; las funciones definidas por el usuario se llaman funciones externas. El algoritmo o programa invoca la funcin con el nombre de esta ltima en una expresin seguida de una lista de argumentos que deben coincidir en cantidad, tipo y orden con los de la funcin que fue definida. A continuacin explicaremos como se hace la declaracin de funciones: En primer lugar, la cabecera, en la que hay que indicar el tipo del valor que devuelve la funcin. Por este motivo la llamada a una funcin debe ir incluida adecuadamente en una expresin. El tipo de dato que devuelve una funcin puede ser ordinal, real, cadena o puntero. En segundo lugar, en el cuerpo de la funcin hay que indicar mediante una sentencia de asignacin el valor que debe devolver la funcin. El primer trmino de esta sentencia de asignacin es el identificador de la funcin y el segundo trmino, una constante, variable o expresin compatible con el tipo de dato que devuelva la funcin. Aparte de esto, todo lo dicho anteriormente para los procedimientos sirve para las funciones. A continuacin el esquema de declaracin de una funcin:

La invocacin o llamada de una funcin ya la hemos estudiado en el captulo 2.4 de este prototipo didctico, al igual que la declaracin de una funcin por eso seremos honestos al afirmar que ya hemos estudiado estos temas.

Prototipo Didctico de Fundamentos de Programacin

Pgina 85

Instituto Tecnolgico del Istmo


A continuacin ejemplo para cerrar con este tema. Mostramos un ejemplo de la declaracin de una funcin que no tiene declaraciones locales seria:

Prototipo Didctico de Fundamentos de Programacin

Pgina 86

Instituto Tecnolgico del Istmo UNIDAD 5 ARREGLOS

5.1 Unidimensionales: conceptos bsicos, operaciones y aplicaciones.

Un arreglo (array) es una coleccin de datos del mismo tipo, que se almacenan en posiciones consecutivas de memoria y reciben un nombre comn. Para referirse a un determinado elemento de un array se deber utilizar un ndice, que especifique su posicin relativa en el array. Un arreglo es una coleccin finita, homognea y ordenada de elementos. Finita: Todo arreglo tiene un lmite; es decir, debe determinarse cul ser el nmero mximo de elementos que podrn formar parte del arreglo. Homognea: Todos los elementos del arreglo deben ser del mismo tipo. Ordenada: Se puede determinar cul es el primer elemento, el segundo, el tercero y as sucesivamente. Los arreglos se clasifican de acuerdo con el nmero de dimensiones que tienen. As se tienen los: - Unidimensionales (vectores). - Bidimensionales (tablas o matrices). - Multidimensionales (tres o ms dimensiones).

Representaciones grafica

Prototipo Didctico de Fundamentos de Programacin

Pgina 87

Instituto Tecnolgico del Istmo

Representacin grafica

Un array unidimensional, o lineal, o vector, es un conjunto finito y ordenado de elementos homogneos. Es finito porque tiene un nmero determinado de elementos. Homogneo porque todos los elementos almacenados van a ser del mismo tipo. Ordenado porque vamos a poder acceder a cada elemento del array de manera independiente porque va a haber una forma de referenciar cada elemento. Para referenciar cada elemento de un array vamos a usar ndices (valor que directa o indirectamente referencia la posicin del array). Los ndices tienen que ser de cualquier tipo de datos escalar (entre los que se puede definir un orden, y que entre 2 elementos consecutivos no puede haber infinitos elementos), aunque normalmente como ndices se van a utilizar nmeros enteros. Para referenciar un elemento de un array usaremos el nombre del array y entre corchetes [ ] el ndice que determina la posicin de ese elemento en el array. El rango o longitud de un vector o array lineal es la diferencia entre el ndice de valor mximo y el ndice de valor mnimo de ese array + 1. Normalmente los ndices comienzan a enumerarse, es decir, el valor mnimo del ndice es 0 1, dependiendo del lenguaje (en Pascal con 1 y en C con 0). Sin embargo nadie impide que comiencen en cualquier otro valor. Los arrays se almacenan siempre en posiciones consecutivas de memoria y podemos acceder a cada elemento del array de manera independiente a travs de
Prototipo Didctico de Fundamentos de Programacin Pgina 88

Instituto Tecnolgico del Istmo


los ndices. Un ndice no tiene por qu ser un valor constante, sino que puede ser tambin una variable o una expresin que al ser evaluada devuelva ese ndice. A la hora de definir un array siempre habr que dar el nombre del array, el rango de sus ndices y el tipo de los datos que contiene, y para hacer esa declaracin, se utiliza la siguiente nomenclatura. <nom_array>: array [LI .. LS] de <tipo> sueldo: array [1 .. 8] de real sueldo: array [1990 .. 1997] de real sueldo [1992] 100000 I: entero I 1992 Sueldo [I] Sueldo [I+2]

Operaciones y aplicaciones con arreglos unidimensionales o vectores. 1. Asignacin de un dato a una posicin concreta del array: <nom_array>[indice] valor

Ventas [3] 800000 2. Lectura y escritura de datos: leer<nom_array>[indice] escribir<nom_array>[indice] desde i=1 hasta 12 escribir Introduce las ventas del mesi leer ventas [i]
Prototipo Didctico de Fundamentos de Programacin Pgina 89

Instituto Tecnolgico del Istmo


fin desde desde i=1 hasta 12 escribir Ventas del mesi=ventas [i] fin desde 3. Recorrido o acceso secuencial de un array: Consiste en pasar por todas las posiciones del array para procesar su informacin. Desde i=1 hasta 12 Ventas [i] ventas [i] + 1000000 Fin desde 4. Actualizacin de un array: 1) Aadir datos: Es un caso especial de la operacin de insercin de un elemento en un array, pero el elemento lo metemos despus de la ltima posicin que contiene informacin vlida en el array. Para que esto se pueda hacer es necesario que si actualmente el array tiene K posiciones de informacin vlida, tenga un tamao de al menos K+1 para que pueda aadir otro elemento a continuacin de K. <nom_array>[K+1] valor 2) Insercin de datos: Consiste en introducir un elemento en el interior de un array para lo cual ser necesario desplazar todos los elementos situados a la derecha del que vamos a insertar una posicin a la derecha con el fin de conservar el orden relativo entre ellos. Para que se pueda insertar un nuevo elemento en el array si ya existen N elementos con informacin en el array, el array tendr que tener un tamao de cmo mnimo N+1 para poder insertar el elemento.

Prototipo Didctico de Fundamentos de Programacin

Pgina 90

Instituto Tecnolgico del Istmo


(G) Siendo K la posicin en la que tengo que insertar el nuevo elemento y N el nmero de elementos vlidos en el array en el momento de la insercin y siempre suponiendo de N+1, el algoritmo de insercin ser: Desde i=N hasta K A[I+1] A[I] Fin desde A[K] valor 3) Borrar datos: Para eliminar un elemento de un array si ese elemento est posicionado al final del array, no hay ningn problema, simplemente si el tamao del array era N, ahora hay que considerar que el tamao del array es N1. Si el elemento a borrar ocupa cualquier otra posicin entonces tendr que desplazar todos los elementos situados a la derecha del que quiero borrar una posicin hacia la izquierda para que el array quede organizado.

Borrar J. Suponiendo que el nmero de elementos validos actualmente es N y que quiero borrar el elemento de la posicin K. Desde i=K hasta N1 A[I] A[I+1] Fin desde Para indicar que el nmero de elementos validos es N, podramos indicarlo como N N1.

Prototipo Didctico de Fundamentos de Programacin

Pgina 91

Instituto Tecnolgico del Istmo


5.2 Multidimensionales: aplicaciones. conceptos bsicos, operaciones y

Arreglo Bidimensional: Es un conjunto de datos homogneo, finito y ordenado, donde se hace referencia a cada elemento por medio de dos ndices. El primero se utiliza para los renglones (filas) y el segundo para las columnas. Tambin puede definirse como un arreglo de arreglos. Internamente en memoria se reservan MxN posiciones consecutivas para almacenar todos los elementos del arreglo. MxN quiere decir: M: es el nmero de filas de la matriz. N: es el nmero de columnas de la matriz.

Arreglo multidimensional: Un arreglo multidimensional es un array de 3 ms dimensiones. Si tenemos un array de N dimensiones, cada dimensin de tamao d1,d2,..,dN, el nmero de elementos del array ser d1*d2*..*dN, y para acceder a un elemento concreto del array utilizaremos N ndices, cada uno de los cuales referenciar a una posicin dentro de una dimensin, siempre segn el orden de declaracin. En memoria, el array se sigue almacenando en posiciones consecutivas. La declaracin de un array multidimensional sera: Nom_array: array [LI1..LS1,LI2..LS2,LI3..LS3,LIN..LSN] de tipo Nom_array [I1,I2,I3,IN] LI1 <= I1 <= LS2 LIN <= I2 <= LSN.

Prototipo Didctico de Fundamentos de Programacin

Pgina 92

Instituto Tecnolgico del Istmo Glosario de trminos


And: Y. Or: O. Not: NO. E/S: Entrada y Salida. Goto: Ir. Read: Leer. Write: Escribir. Open: Abrir. Linker: Enlazador. Byte: Expresin para mencionar una numeracin computacional. 8 bits. Bytecode: Expresin para mencionar una numeracin computacional. CLI: (Command line interface) interfaz de lnea de comando. Busg: Errores. Top Down: Programacin descendente. ANSI: Instituto norteamericano de normalizacin. N-S: Nassi-Schneiderman. SQL: Lenguaje de consulta estructurado. ASCII: (American Standard CodeforInformationInterchange; cdigo estndar americano para intercambio de informacin). Warnings: Advertencia. S.O.: Sistema operativo. C.P.U.: Unidad central de proceso. Is power programming: Es la programacin de alimentacin. Notepad simple.c: Bloc de notas simple.c.
Prototipo Didctico de Fundamentos de Programacin Pgina 93

Instituto Tecnolgico del Istmo


Includestdio.h: #include comando que ordena al compilador, stdio cabecera estndar E/S del programa C, C++. Printf: Funcin para mostrar una cadena con formato. Simple.c cl: Simple.c.cl. cl.exe: Error en cuestin. Dir: Comando de dos, es un comando usado para mostrar un listado de archivos y directorios. Array: Arreglo. Char: Carcter. Int: Entero. Float: Elemento flotante. Double: Doble. Bool: Lgico. Void: No existencia o no atribucin de un tipo en una variable o declaracin. String: Cadena. Backslash: Barra inclinada o invertida. Beep: Alarma. Var: Variable. Begin: Marcador de bloqueo. For: Palabra clave, iniciar un bucle iterativo. Writeln: Procedimiento, alimenta una nueva lnea, antes de finalizar. End: fin. Fin: fin. Proceduremodi: Procedimiento Mod: Modulo. Print: Instruccin para mandar a imprimir. Voidmain: Indica que no espera ningn valor.
Prototipo Didctico de Fundamentos de Programacin Pgina 94

Instituto Tecnolgico del Istmo


Scanf: Representa a una familia de funciones que analizan una entrada de datos con formato y cargan el resultado en los argumentos que se pasan por referencia a dicha funcin o funciones. End_for: Bucle controlado por una variable contador. Program: Programa. Nom_array: Nombre del arreglo. N: Nmero de veces. Update: Actualizar. GUI: (Graphical user interface), Interfaz grafica de usuario. .cpp: Definen el tipo de cdigo que hay escritos en el programa C, C++.

Prototipo Didctico de Fundamentos de Programacin

Pgina 95

Instituto Tecnolgico del Istmo

Conclusiones
El propsito de este trabajo es que el alumno o usuario que tenga o no conocimientos en la computacin, pueda llegar a involucrarse en el inmenso mundo de la programacin, Es decir, se busca encaminar a los alumnos hacia lo que es programacin, para que en un futuro que deseen aprender un determinado lenguaje de programacin tengan las bases necesarias y fundamentales para poder empezar programar. As pues, buscamos empapar al alumno o usuario, de todos los conceptos y herramientas bsicas que lo ayuden desde un inicio a llegar hacer un buen programador.

Prototipo Didctico de Fundamentos de Programacin

Pgina 96

Instituto Tecnolgico del Istmo

Bibliografa

Fundamentos de programacin: Algoritmos y Estructura de datos. Luis Joyanes Aguilar; Primera y Segunda Edicin, McGRAW-HILL. Fundamentos de programacin: Algoritmos, Estructura de datos y Objetos. Luis Joyanes Aguilar; Tercera Edicin, McGRAW-HILL. Introduccin a la programacin: Algoritmos y su implementacin en VB.NET, C#, JAVA y C++. Felipe Ramrez; Segunda Edicin, Alfaomega.

www.jorgesanchez.net http://www.jorgesanchez.net/programacion/fpr.html http://www.monografias.com/trabajos19/algoritmos/algoritmos.shtml http://es.wikipedia.org/wiki/Pseudoc%C3%B3digo http://www.google.es/#pq=programa+definicion+en+un+mapa+conce ptual&hl=es&cp=37&gs_id=8j&xhr=t&q=mapa+conceptual+fundamen tos+de+programacion&pf=p&sclient=psyab&source=hp&pbx=1&oq=mapa+conceptual+fundamentos+de+pro gra&aq=0w&aqi=qw1&aql=&gs_sm=&gs_upl=&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=88ed 68d63053d00d&biw=1232&bih=581

Prototipo Didctico de Fundamentos de Programacin

Pgina 97

Instituto Tecnolgico del Istmo

AGRADECIMIENTOS

Agradezco a DIOS, JESUCRISTO y ESPRITU SANTO, que han esto conmigo en la elaboracin de este prototipo, dndome la sabidura y fuerzas necesarias para seguir adelante. A mis padres Adalberto y Elizabeth, que si no fuera por ellos, yo no hubiera llegado a este nivel de mi vida, como profesionista y como una persona de valores. A mi hermana Evalinda y ta Jisela porque siempre estuve en sus oraciones y su amor estuvo conmigo. A mi familia Lpez Cerqueda y Cruz Glvez, porque han estado conmigo en todo los momento de mi vida. A la Lic. Sayonara Orozco lvarez por el gran apoyo que me dio para poder desarrollar este prototipo didctico y por todo el tiempo que me dedico para que este proyecto pudiera llegar al xito. Y todas aquellas personas que me apoyaron en este lapso de mi vida.

GRACIAS Y QUE DIOS LOS BENDIGA POR SIEMPRE.

Prototipo Didctico de Fundamentos de Programacin

Pgina 98

Вам также может понравиться