Anda di halaman 1dari 23

mailxmail - Cursos para compartir lo que sabes

Manual de programacin
Autor: Manuel Angel Lopez Zurita

mailxmail - Cursos para compartir lo que sabes

Presentacin del curso


El objetivo de este curso consiste en ofrecer conocimientos bsicos de programacin. No pretender ensear cmo programar en un lenguaje especfico, ni utilizar ninguna tecnologa determinada. A medida que se programe se utilizar un pseudo-cdigo, ya que de lenguajes existen muchos. La programacin consiste en definir de una manera comprensible para el ordenador un conjunto de instrucciones, para que sean ejecutadas por ste. En este curso te ofrecemos un conocimientos bsicos de programacin.

mailxmail - Cursos para compartir lo que sabes

1. Introduccin
El objetivo de este curso consiste en ofrecer conocimientos bsicos de programacin. No pretender ensear cmo programar en un lenguaje especfico, ni utilizar ninguna tecnologa determinada. A medida que se programe se utilizar un pseudo-cdigo, ya que de lenguajes existen muchos. La programacin consiste en definir de una manera comprensible para el ordenador un conjunto de instrucciones, para que sean ejecutadas por ste. Esta definicin, a mi parecer, es especialmente pobre, debido a que la programacin se puede hacer de varias formas, y cada programador deja su huella en cada uno de los programas; por todo ello, considero que la programacin es equiparable a un arte.

mailxmail - Cursos para compartir lo que sabes

2. Conceptos bsicos
Se entiende por algoritmo una lista de instrucciones, donde se especifica una sucesin de operaciones, las necesarias para resolver un problema determinado. Las caractersticas bsicas que debe tener un algoritmo son: Claro y comprensible: cuando el programador tienes las ideas claras, el programa resulta ser muy sencillo; en caso contrario, el cdigo se eterniza. Funcional: no sirve de nada un programa que no funcione bien. Reutilizable: si se ha hecho un programa dividiendo el problema en varias partes, estas partes se podrn utilizar en otros programas similares. Mantenible: una cualidad que se suele olvidar de un programa es que est vivo, en el sentido de que una vez acabado y utilizado por el usuario, se deber ir actualizando y ampliando, por ello es importante que se puedan realizar modificaciones de una manera sencilla y rpida. Comentado: cuando un programa se empieza se sabe quin lo empieza, pero nunca quin va a escribir las ltimas sentencias, por ello es vital dejar muy claro qu es lo que se hace y el por qu. Por este motivo, todos los lenguajes de programacin tienen un sistema para que el programador realice indicaciones dentro del programa. Lo que diferencia a los buenos de los malos programadores es que un buen programador comenta los algoritmos, un programador que no es suficientemente metdico para comentar, tampoco ser metdico para programar bien.

mailxmail - Cursos para compartir lo que sabes

3. El primer programa
Todo programa debe tener un enunciado; en un enunciado se indica el problema a resolver y las particularidades del mismo. Veamos el siguiente enunciado y el algoritmo escrito. Este ser un programa secuencial, es decir, las instrucciones se ejecutan una detrs de la otra. Las palabras claves del lenguaje de pseudo-cdigo se subrayarn. Los comentarios se pondrn entre /* y */. Los ejemplos de comentarios estn en las lneas 3, 6, 10 y 19. Enunciado: Implementar en pseudo-cdigo un programa que explique cmo cocinar un plato de pasta. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. programa cocinar_pasta definir temperatura como entero /*al poner el agua se consigue la temperatura del agua*/ temperartura_agua=poner_agua() mientras (temperatura_agua<100) /*incrementar temperatura del agua*/ temperatura_agua=temperatura_agua+5 calentar_agua(temperatura_agua) finmientras /*la temperatura del agua es superior o igual a 100*/ poner_pasta() poner_mantequilla() si (gustar_salado()=Verdadero) entonces salar_pasta() finsi mientras (pasta_hecha()=Falso) esperar() finmientras /*cuando la pasta ya esta hecha*/ finprograma

mailxmail - Cursos para compartir lo que sabes

4. Variables y constantes
En los programas existirn conceptos que poseern valores, estos conceptos reciben el nombre de variables. Las variables poseen en un momento de la ejecucin del algoritmo un nico valor, pero este valor puede ir cambiando a medida que se van ejecutando instrucciones, de all el nombre de variable. En el ejemplo anterior la nica variable creada es temperatura. Fjese que la variable temperatura_agua pose el valor del agua, y ese valor se incrementa de 5 en 5. Esta variable se define en la lnea 2 del primer programa. Cada lenguaje posee diferentes reglas para definir el nombre de las variables; por ejemplo, el nombre de una variable no puede empezar por un nmero o tener ms de 255 caracteres. Es importante que el nombre de la variable d informacin sobre lo que realmente est guardando. En el ejemplo, cmo se da ms informacin: definiendo el nombre de la variable como temperatura_agua, o como temperatura, o como simplemente x? Cada variable tiene asignado un tipo; cada tipo se asocia con un rango de valores que puede tener dicha variable. Los posibles tipos elementales de valores son: Entero, por ejemplo: 1, 456, 789798 Real, por ejemplo: 3.1415, 1.5 Booleano, este tipo de variable slo posee dos valores: Verdadero y Falso Cadena, por ejemplo: "Cosas varias", "Texto" Carcter, es una cadena con un slo carcter, por ejemplo: "a", "c" Fecha, se define el da, mes y ao, por ejemplo: 13/8/1973 En funcin del lenguaje se pueden definir otros tipos elementales y el usuario puede crear sus propios tipos de datos; por ejemplo, un tipo de dato pueden ser los das de la semana. Las constantes son conceptos que resultan invariables a lo largo de un algoritmo. En algunos lenguajes existe la posibilidad de que el programador definan sus propias variables. En el ejemplo anterior las constantes que aparecen son 5, 100, Verdadero y Falso.

mailxmail - Cursos para compartir lo que sabes

5. Asignacin
Una asignacin es cuando a una variable se le hace equivaler una expresin; le da un valor a la variable. Primero se evala o resuelve la expresin de la derecha, y despus se le da el valor resultante a la asignacin o expresin de la izquierda. Vea las siguientes asignaciones: a=3+4 b=2*a b=b+1 c=(3==3) c=(3+4>=3*2) d=3.4 e="Hola" /*la variable a tendr el valor de 7*/ /*a la variable b se le asignar el valor de 14*/ /*la variable b tendr el valor de 15*/ /*la variable c tendr el valor de Verdadero*/ /*la variable c tendr el valor de Verdadero*/ /*la variable d tendr el valor de 3.4*/ /*la variable e tendr el valor de "Hola"*/

Nota: el tipo de variable debe ser del mismo tipo que el de la expresin. En el siguiente ejemplo se permutan los valores entre las variables a y b. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. programa swap definir a como entero definir b como entero definir auxiliar como entero a=leer_teclado() b=leer_teclado() auxiliar=a a=b b=auxiliar finprograma

Se define la funcin leer_teclado que lo que hace es esperar que el usuario introduzca mediante el teclado un texto.

mailxmail - Cursos para compartir lo que sabes

6. Sentencia condicional
Esta sentencia nos permite elegir un conjunto de instrucciones en funcin de que se cumpla o no una condicin; cuando se ejecuta esta condicin, la expresin que se evala debe ser de tipo Booleano (Verdadero o Falso). Dentro de una sentencia condicional slo se puede ejecutar una rama de las condiciones. Vea los siguientes ejemplos de sentencias condicionales: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. programa estado_temperatura definir temperatura como entero temperatura=leer_teclado() /*muestra un texto por pantalla indicando la temperatura*/ si temperatura<0 entonces escribir_pantalla("Temperatura bajo cero") si temperatura>=0 y temperatura<20 entonces escribir_pantalla("Temperatura fra") si temperatura>=20 y temperatura<30 entonces escribir_pantalla("Temperatura normal") si no escribir_pantalla("Temperatura alta") finsi finprograma

La funcin escribir_pantalla muestra por pantalla lo que se indica entre parntesis. Otro ejemplo de sentencia condicional: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. programa mostrar_dia definir dia_semana como entero escribir_pantalla("Indique el da de la semana") dia_semana=leer_teclado() si (dia_semana==1) entonces escribir_pantalla("Lunes") si (dia_semana==2) entonces escribir_pantalla("Martes") si (dia_semana==3) entonces escribir_pantalla("Mircoles") si (dia_semana==4) entonces escribir_pantalla("Jueves") si (dia_semana==5) entonces escribir_pantalla("Viernes") si (dia_semana>=6) entonces escribir_pantalla("Da festivo") si (dia_semana==6) entonces escribir_pantalla("Sbado") si (dia_semana==7) entonces escribir_pantalla("Domingo") finsi

mailxmail - Cursos para compartir lo que sabes


24. 25. finsi finprograma

En este ejemplo se puede ver como, dentro de una sentencia condicional, se puede incluir otra sentencia condicional. Las comparaciones de igualdad se hace con el smbolo ==, y las comparaciones de diferente, se hacen con <>. Otro ejemplo: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. programa valor_absoluto definir a como entero escribir_pantalla("Indique un nmero") a=leer_teclado() si (a<0) entonces b=a*(-1) si no b=a finsi /*b posee el valor absoluto de a*/ escribir_pantalla(convertir_cadena(b)) finprograma

La conversin de una variable entera a cadena se realiza con la funcin convertir_cadena. Otro ejemplo: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. programa par_impar definir a como entero a=leer_teclado() si (a resto 2==0) entonces escribir_pantalla(convertir_cadena(a) + " es un nmero par") si no escribir_pantalla(convertir_cadena(a) + " es un nmero impar") finsi finprograma

La concatenacin de cadenas se realiza con el operador +.

mailxmail - Cursos para compartir lo que sabes

7. Sentencia bucle (parte 1)


Un bucle (iteracin) es una estructura en la que se ejecutan un conjunto de instrucciones hasta que deje de cumplirse una condicin determinada. Dentro del bucle se deben ejecutar instrucciones para que deje de cumplirse dicha condicin; si estas sentencias no existen, entonces el bucle ser un bucle infinito. No tiene por qu darse el caso de que se ejecuten las instrucciones que hay dentro del bucle. En el siguiente ejemplo, se lee un nmero por teclado y se decrementa ese nmero de 1 en 1 hasta que deja de ser >1. 1. 2. 3. 4. 5. 6. 7. 8. 9. programa primer_bucle definir a como real a=leer_teclado() mientras (a>1) a=a-1.0 finmientras /*se sale cuando a<=1, o lo que es lo mismo, la negacin de a>1 */ finprograma

Fjese que si el nmero ledo es, por ejemplo, -3, no se ejecutar ninguna lnea dentro del bucle. Si la sentencia que hay en la lnea 3 no existiera e inicialmente la variable a fuera mayor que 1 entonces habra un bucle infinito. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. programa bucle_infinito definir a como real definir b como real a=leer_teclado() mientras (a>1) b=a finmientras /*se sale cuando a<=1, o lo que es lo mismo, la negacin de a>1 */ finprograma

10

mailxmail - Cursos para compartir lo que sabes

8. Sentencia bucle (parte 2)


Otro ejemplo, en el que se lee un fichero y se cuenta cuantas letras "a" hay en el fichero: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. programa lectura_fichero definir fd como entero definir contador como entero definir leido como caracter fd=abrir_fichero("c:\fichero.txt") /*inicializar la variable que cuentas a*/ contador=0 mientras (fin_fichero(fd)==falso) leido=leer_fichero(fd) si (leido=="a" O leido=="A") entonces /*se encontro una a con lo que se incrementa el contador*/ contador=contador+1 finsi finmientras cerrar_fichero(fd) escribir_pantalla("Se leyeron " + convertir_cadena(contador) + __ " letras a en el fichero") finprograma

En este ejemplo se deben puntualizar varias cosas: Para poder acceder a un fichero primero se debe abrir el fichero con la funcin abrir_fichero. Esta funcin automticamente retorna un nmero para poder identificar, dentro del programa, a qu archivo nos estamos refiriendo (por ejemplo, para poder identificarlo en la funcin cerrar_fichero si hubiera ms de uno abierto) Cuando se abre un fichero en un programa, antes de finalizar el programa se debe de cerrar el fichero con la funcin cerrar_fichero. Cuando una sentencia de cdigo no quepa en una lnea se pondr el smbolo __ Clculo del factorial: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. programa factorial definir factorial como entero definir numero como entero definir numero_inicial como entero factorial=1 escribir_pantalla("Indique el nmero") numero=leer_teclado() mientras (numero<=1) factorial=factorial*numero numero=numero-1 finmientras escribir_pantalla("El factorial de " + __ convertir_cadena(numero_inicial) + " es " + __ convertir_cadena(factorial)) finprograma

11

mailxmail - Cursos para compartir lo que sabes


16. finprograma

12

mailxmail - Cursos para compartir lo que sabes

9. Sentencia bucle (parte 3)


Otra estructura de bucle que se utiliza frecuentemente es cuando se sabe cuntas repeticiones de cdigo se van a realizar antes de que empiece a ejecutarse el bucle. Cuenta atrs desde 10: 1. 2. 3. 4. 5. 6. 7. programa cuenta_atras definir numero como entero para numero=10 hasta 1 escribir_pantalla(convertir_cadena(numero)) finpara finprograma

Sumatorio de todos los nmeros inferiores al indicado: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. programa sumatorio definir resultado como entero definir numero_leido como entero definir indice como entero escribir_pantalla("Indique el nmero") numero_leido=leer_teclado() resultado=0 para indice=1 hasta numero_leido resultado=resultado + indice finpara escribir_pantalla("El sumatorio de 1 hasta " + __ convertir_cadena(numero_leido) + " es " + __ convertir_cadena(resultado) +".") finprograma

Definir los valores de y de la funcin y = ax+b, en un rango desde x = -100 hasta x=100. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. programa valores_funcion definir a como entero definir b como entero definir indice como entero definir resul como entero escribir_pantalla("Indique el valor de a") a=leer_teclado() escribir_pantalla("Indique el valor de b") b=leer_teclado() para indice=-100 hasta 100 resul=a*indice+b escribir_pantalla("X=" + convertir_cadena(indice) + __ "Y=" + convertir_cadena(resul)) finpara finprograma

13

mailxmail - Cursos para compartir lo que sabes


Escribir los primeros 15 nmeros de la serie de Fibonacci (ai=ai-1+ai-2;a1=1;a0=1) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. programa fibonacci definir ai2 como entero /*ai2=ai-2*/ definir ai1 como entero /*ai1=ai-1*/ definir ai como entero /*ai=ai*/ definir indice como entero para indice=1 hasta 15 ai=ai1+ai2 escribir_pantalla("A" + convertir_cadena(indice+1) +" es " __ convertir_cadena(ai)) /*el indice+1 es debido a que el primer nmero de fibonacci*/ /*calculado es el 2, que se da cuando el indice es 1*/ ai2=ai1 ai1=ai finpara finprograma

14

mailxmail - Cursos para compartir lo que sabes

10. Estructuras de datos (parte 1)


Hasta este momento slo ha trabajado con variables, ahora bien, a veces resulta necesario guardar muchos datos y se desea no tener que crear un nmero muy elevado de variables. Vea un ejemplo en el que se desea tratar las notas de una clase de 10 alumnos, tanto guardar los valores como calcular la media de las notas. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. programa nota_media definir alumno01 como entero definir alumno02 como entero definir alumno03 como entero definir alumno04 como entero definir alumno05 como entero definir alumno06 como entero definir alumno07 como entero definir alumno08 como entero definir alumno09 como entero definir alumno10 como entero definir media como real escribir_pantalla("Indique la nota del alumno 01") alumno01=leer_teclado() escribir_pantalla("Indique la nota del alumno 02") alumno02=leer_teclado() escribir_pantalla("Indique la nota del alumno 03") alumno03=leer_teclado() escribir_pantalla("Indique la nota del alumno 04") alumno04=leer_teclado() escribir_pantalla("Indique la nota del alumno 05") alumno05=leer_teclado() escribir_pantalla("Indique la nota del alumno 06") alumno06=leer_teclado() escribir_pantalla("Indique la nota del alumno 07") alumno07=leer_teclado() escribir_pantalla("Indique la nota del alumno 08") alumno08=leer_teclado() escribir_pantalla("Indique la nota del alumno 09") alumno09=leer_teclado() escribir_pantalla("Indique la nota del alumno 10") alumno10=leer_teclado() media= (alumno01+alumno02+alumno03+alumno04+alumno05+__ alumno06+alumno07+alumno08+alumno09+alumno10/10 escribir_pantalla("La media de las notas es " + __ convertir_cadena(media)) finprograma

Como se habr visto en el ejemplo anterior, es necesario crear algn tipo de estructura para poder guardar la informacin y poder tratarla de una manera ms agradable.

15

mailxmail - Cursos para compartir lo que sabes


Esta estructura de datos recibe el nombre de matriz, vector, array o tabla. Se define con un nombre y tantos ndices como dimensiones tenga el vector. Se accede a esta estructura mediante los [ ], y entre los [ ] se indica la posicin. Ejemplo: definir dias_de_semana como vector[1..10] de cadena /*array unidimensional*/ definir quiniela como vector[1..12][1..3] de caracter /*array bidimensional*/

definir tablero_ajedrez como vector [1..8][1..8] de entero /*array bidimensional*/ Vea como queda el ejemplo anterior: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. programa nota_media_matriz definir notas como vector[1..10] de entero definir indice como entero definir media como real media=0 para indice=1 hasta 10 escribir_pantalla("Indique la nota del alumno " + __ convertir_cadena(indice)) notas[indice]=leer_teclado() media=media+notas[indice] finpara media=media/10 escribir_pantalla("La media de las notas es " + __ convertir_cadena(media)) finprograma

Calcule el determinante de la matriz de 3 por 3. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. programa determinante definir indicex como entero definir indicey como entero definir determinante como entero definir datos como vector[1..3][1..3] de entero /*recogida de datos*/ para indicex=1 hasta 3 para indicey=1 hasta 3 escribir_pantalla("Indique el elemento [" + __ convertir_cadena(indicey) + "],[" + convertir_cadena(indicex)+ "]") datos[indicey][indicex]=leer_teclado() finpara finpara /*calcular el determinante*/ determinante=(datos[1][1]*datos[2][2]*datos[3][3]) + __ (datos[1][2]*datos[2][3]*datos[3][1]) + __ (datos[2][1]*datos[3][2]*datos[1][3]) - __ (datos[1][3]*datos[2][2]*datos[3][1]) - __ (datos[2][3]*datos[3][2]*datos[1][1]) - __ (datos[1][2]*datos[2][1]*datos[3][3]) escribir_pantalla("El determinante es " + __ convertir_cadena(determinante))

16

mailxmail - Cursos para compartir lo que sabes


23. finprograma Indicar si el nmero de 10 dgitos introducido en un vector de 10 posiciones es capica. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. programa capicua definir indice como entero definir numero[1..10] como caracter definir resultado como booleano /*recoger informacin del nmero*/ para indice=1 hasta 10 escribir_pantalla("Indique la posicin " + __ convertir_cadena(indice) + ":") numero[indice]=leer_teclado() finpara /*evaluar si el nmero es capicua*/ resultado=Verdadero para indice=1 hasta 5 resultado=resultado Y (numero[indice]==numero[10-indice]) finpara /*mostrar el resultado de si es capicua o no*/ si (resultado==Verdadero) entonces escribir_pantalla("El nmero es capicua") si no escribir_pantalla("El nmero no es capicua") finsi finprograma

Una caracterstica de los vectores es que todos los elementos poseen el mismo tipo elemental, es decir, que en un vector de enteros, todos los elementos son enteros.

17

mailxmail - Cursos para compartir lo que sabes

11. Estructuras de datos (parte 2)


Resulta necesario en algunos casos engoblar toda la informacin de diferentes tipos en una misma variable, por ejemplo, si se desea guardar el nombre, apellido1, apellido2 y fecha de nacimiento de una persona. Este tipo de estructura de datos recibe el nombre de tupla o record. Una vez que se defina la tupla, se debe asignar a una variable ese tipo de tupla. Para acceder a los diferentes campos de la tupla se accede poniendo la variable, un punto y el campo al que se quiere acceder. Ejemplo: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. /*introduccion del segundo apellido*/ escribir_pantalla(persona_leida1.nombre + " " + __ persona_leida1.apellido1 + " debe introducir su segundo apellido") /*introduccion del primer apellido*/ escribir_pantalla(persona_leida1.nombre + __ " debe introducir su primer apellido") persona_leida1.apellido1=leer_teclado() /*introduccion del nombre*/ escribir_pantalla("Introduzca el nombre") persona_leida1.nombre=leer_teclado() definir persona_leida1 como persona definir persona_leida2 como persona programa guardar_persona tupla persona definir nombre como cadena definir apellido1 como cadena definir apellido2 como cadena definir fecha_nacimiento como fecha fintupla

18

mailxmail - Cursos para compartir lo que sabes


24. 25. 26. 27. 28. 29. 30. 31. /*introduccion de la fecha de nacimiento*/ escribir_pantalla(persona_leida1.nombre + " " + __ persona_leida1.apellido1 + " " + persona_leida1.apellido2 + __ " debe introducir su fecha de nacimiento") persona_leida1.fecha=leer_teclado() finprograma persona_leida1.apellido2=leer_teclado()

La definicin de la tupla se muestra de las lnea 2 a la 7. Se puede definir un vector de tuplas, y los campos de las tuplas pueden ser vectores.

19

mailxmail - Cursos para compartir lo que sabes

12. Estructuras de datos (parte 3)


Otras estructuras de datos utilizadas son: Pila (LIFO, last in, first out): es una estructura en la que slo se puede acceder al ltimo elemento introducido. Cuando se introduce un elemento se introduce encima del resto, y si se elimina un elemento se elimina el ltimo que se ha introducido. Imagine una "pila" de papeles sobre una mesa, cuando aade otro papel lo pone sobre el resto de papeles, y si desea quitar un papel, quita el ltimo que puso. Cola (FIFO, first in, first out): es una estructura en la que el primer elemento que se introduce es el primero que se elimina. Por ejemplo, en una cola del cine, el primero que se pone en la cola va a ser el primero en salir (a no ser que no se cuelen, si se colaran dejara de ser una cola). rbol: es una estructura en la que no hay ciclos, o lo que es lo mismo, slo hay un camino para ir de un elemento (llamado nodo) a otro, y no hay nodos o grupos de nodos desconectados del resto. Las relaciones jerrquicas de una empresa son rboles en que el primer nodo recibe el nombre de padre y los ltimos nodos (los que no tienen inferiores) reciben el nombre de hojas. Grafos: es una estructura en la que existe un conjunto de nodos relacionados entre ellos. Un subconjunto de grafos son, por ejemplo, los rboles; un ejemplo de grafo puede ser la red de metro de una ciudad o la relacin de amistades en una clase.

20

mailxmail - Cursos para compartir lo que sabes

13. Programacin modular


La programacin modular consiste en definir pequeos "programas" o mdulos que se repiten dentro del mismo programa. La utilidad de estos mdulos es que con esta tecnologa se reduce el tamao del algoritmo y aumenta la claridad; y en consecuencia, su mantenimiento resulta mucho ms sencillo. Existen dos tipos de programas: las acciones y las funciones, la diferencia entre ellas es que las funciones retornan un valor, y las acciones no. Ejemplos de funcin pueden ser: fd=abrir_fichero("c:\fichero.txt") x=sumar(a,b) Ejemplos de accin pueden ser: cerrar_fichero(fd) sumar(a,b,x) Lo que se introduce entre los parntesis recibe el nombre de parmetros; los parmetros son la informacin en comn entre el mdulo y el mbito desde donde se realiza la llamada. Por ser mdulos, se les puede definir variables que slo se pueden acceder dentro de la funcin o accin. Ejemplo: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. programa acciones_funciones /******************************************************************/ /*definicin de una funcion que nos indica si el parametro*/ /*que se indica como parametro es par o no */

/*****************************************************************/ funcion es_par(numero como entero) retorna booleano si ((numero resto 2) ==0) entonces devuelve verdadero si no devuelve falso finsi finfuncion /**********************************************************/ /*accion que muestra por pantalla una informacin*/ /**********************************************************/

21

mailxmail - Cursos para compartir lo que sabes


16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. definir numero_leido como entero /************************/ /*inicio del programa*/ /************************/ escribir_mensaje(2,"Indique el primer nmero") numero_leido=leer_teclado() /*se sale del bucle cuando se introduce el nmero -1*/ mientras (numero_leido<>-1) si (es_par(numero_leido)==verdadero) entonces escribir_mensaje(1," es par") si no escribir_mensaje(1, " es impar") finsi escribir_mensaje(2,"Indique otro nmero") numero_leido=leer_teclado() finmientras si (tipo_mensaje==1) entonces escribir_pantalla("Mensaje Informativo") si (tipo_mensaje==2) entonces escribir_pantalla("Pedir Informacin") si (tipo_mensaje==3) entonces escribir_mensaje("Fin de programa") finsi mensaje="!!!" + informacion + "!!!" escribir_pantalla(mensaje) finaccion accion escribir_mensaje(tipo_mensaje como entero, __ informacion como cadena) definir mensaje como cadena

22

mailxmail - Cursos para compartir lo que sabes


47. 48. escribir_mensaje(3,"") finprograma

Los comentarios de este programa son: De la lnea 6 a la 12 se define la funcin es_par, fjese que para retornar un valor se utiliza la sentencia devuelve. De la lnea 16 a la 29 se define la accin escribir_mensaje, esta accin posee la definicin de una variable local, o lo que es lo mismo, slo es conocida dentro de la propia accin. En la lnea 31 empieza el programa.

23