Vous êtes sur la page 1sur 38

Instituto Universitario del Prado

Asignatura: Tema 2: Fundamentos de Programacin Elementos de un programa

2.1. Datos y tipos de datos Para el diseo de programas se manejan datos con diversas clases de informacin, tales como textos o nmeros, que pueden contener las variables o constantes que se van a utilizar. Los tipos de datos que un lenguaje de programacin reconoce, utilizan nombres en idioma ingls que son son comunes en la mayora de los lenguajes de programacin. A continuacin se explicar como identificarlos y familiarizarse con ellos en cualquier otro lenguaje de programacin. Los tres tipos de datos son: Datos Alfanumricos Permiten representar un solo carcter o una secuencia de caracteres del cdigo ASCII y posibilitan expresar una informacin de forma descriptiva. Se le denomina carcter a cualquiera de las letras del alfabeto, smbolos especiales, nmeros o espacio en blanco que se escriben en la pantalla. En la siguiente tabla se muestran los dos tipos de datos alfanumricos que Turbo Pascal reconoce:

Tipo Char

Descripcin Carcter nico

Carcteres maximos 1

Ejemplos 'a', 'A', 'B', 'b', '$', '9', ' ' 'Estoy feliz'

Tamao 1 Byte

String

Cadena de caracteres 255

'Hola, bienvenidos' 'Tutorial de programacin'

255 Byte

Los datos alfanumricos de tipo string (cadena de caracteres) admiten una longitud mxima de 255 caracteres, o sea 255 Bytes. Si durante la ejecucin de un programa se intenta asignar un nmero mayor de caracteres a una variable de este tipo de datos, slo se reconocer el nmero mximo de caracteres soportados y los dems sern ignorados. Tambin es posible, al momento de declarar las variables, limitar el nmero de caracteres que la variable almacenar con el fin de ahorar espacio.

Mtro. Alejandro Salazar Guerrero

1/36

Datos numricos Son aquellos que permiten representar valores escalares o informacin en forma cuantitativa, para realizar operaciones aritmticas bsicas o clculos ms avanzados con sus valores. Este tipo de datos a su vez se divide en dos formados por: 1. Nmeros enteros:

Los datos de tipo Entero (o Integer en ingls), son los que representan valores numricos sin parte fraccionaria y se dividen, segn su rango de valores, en: Byte Shorting Integer Word LonggInt

A continuacin se muestra el rango de valores y el tamao en bytes que estos datos ocupan en memoria:

Tipo Byte Shortint Integer Word LongInt

Descripcin Entero corto positivo 0 a 255 Entero corto Entero Entero positivo Entero largo

Rango de valores -128 a 127 -32.768 a 32.767 0 a 65535 -2.147'483.648 a 2.147'483.647

Tamao 1 Byte 1 Byte 2 Bytes 2 Bytes 4 Bytes

En la tabla anterior, se han formateado los rangos de valores con el punto separador de miles. Sin embargo, al momento de asignar un valor a una variable de este tipo de datos, es necesario efectuarlo sin puntos; de lo contrario se generar un error. En expresiones aritmticas todos los datos de tipo entero son compatibles entre s, lo que significa que el compilador permite intercambiarlos; por ejemplo, a una variable de tipo Integer se le puede asignar el valor de una de tipo LongInt, siempre y cuando este no exceda el rango numrico del tipo Integer.

Mtro. Alejandro Salazar Guerrero

2/36

2.

Nmeros reales

Los datos reales (o reals en ingls), son los que permiten representar valores numricos formados por una parte entera y una parte fraccionaria, y que pueden ser expresados con notacin de cama flotante. Se subdividen segn la precisin con que pueden presentar sus cifras decimales, tal como se muestra en la siguiente tabla: Tipo Real Single Double Extended Comp Real Real de simple precisin Real de doble precisin Real de precisin extendida Real de pecisin compacta Descripcin Rango de valores 2.9x10-39 a 1.7 x1038 1.5x10-45 a 3.4x1038 5.0x10 3.4x10
-324

Dgitos 7-8

Tamao 4 Bytes

11-12 6 Bytes 15-16 8 Bytes 19-20 10 Bytes 19-20 8 Bytes

a 1.7x10

308 4932

-4932

a 1.1x10

-9.2x1018 a 9.2x1018

Es importante tomar en cuenta que, tanto en los datos de tipo entero como real, si se intenta asignar un valor que est fuera del rango de los valores permitidos, se produce un error que se conoce con el nombre de desbordamiento (overflow en ingls). Cuando esto ocurre lo habitual es que el programa que se estaba ejecutando deje de funcionar. Datos lgicos Son aquellos que pueden tomar nicamente uno de dos valores, tales como falso o verdadero, pero no ambos a la vez. Este tipo de datos son producidos como el resultado del valor de verdad de las proposiciones lgicas. Por ejemplo, podemos evaluar si la expresin A + B = 15 es falsa o verdadera, y dependiendo de su valor de verdad, se deciden que sentencias se van a ejecutar para cada caso en un programa. Existen cuatro tipos de datos lgicos predefinidos: Boolean WordBool LongBool ByteBool

De ellos slo se utilizar el tipo Boolean, que emplea 8 bits, y puede tomar como valores: True: para indicar verdadero; y False: para indicar falso.

Mtro. Alejandro Salazar Guerrero

3/36

En nuestro lenguaje natural, los valores True/False equivalen a decir: Si/No, Encendido/Apagado, Activado/Desactivado, etc., para ser interpretados como mejor convenga. Es de vital importancia comprender la definicin correcta del tipo de datos que se requieren para cada una de las variables y constantes que se vayan a necesitar en futuros programas.

2.2. Constantes y variables Uno de los elementos fundamentales, en el momento de disear programas, tanto en el lenguaje Pascal, como en cualquiera de los otros lenguajes de programacin existentes, son las variables, de all importancia en el aprendizaje de la programacin. Bsicamente, una variable es un espacio de memoria susceptible de almacenar temporalmente datos de cualquier tipo de informacin necesaria para realizar un proceso. Como su nombre lo indica, las variables pueden cambiar su valor a lo largo de la ejecucin de un programa. Para definir una variable, es necesario darle un nombre para identificarla dentro de un programa. El lenguaje Pascal se encargar de asignarle automticamente una direccin de la memoria en donde almacenar los datos. Por ejemplo, el diseo de un programa que realice sumas requerir dos variables donde guardar los distintos sumandos que participan en la operacin, as como otra para almacenar su resultado. De este modo se pueden definir tres variables con los siguientes nombres: Sumando1 = 20 Sumando2 = 45 Total = Sumando1 + Sumando2 Las constantes permiten tambin almacenar temporalmente datos en un espacio de memoria; sin embargo, a diferencia de las variables, los valores que las constantes almacenan se mantienen fijos durante la ejecucin de un programa; de modo que se producir un error, si durante la ejecucin se intenta variar su valor. Al igual que las variables, las constantes requieren de un nombre para ser reconocidas dentro de un programa. Turbo Pascal tambin dispone de constantes con valores predefinidos, lo que resulta muy til ya que no hay necesidad de definirlos. Entre algunos ejemplos, se encuentran las constantes de colores, cuyo valor correspondiente a cada una es un cdigo numrico que representan los colores de los textos o del fondo de la pantalla. Declaracin de variables y constantes Declarar variables o constantes significa darles un nombre que sirva para identificarlas dentro del programa e indicar el tipo de dato que estas almacenarn. En Turbo Pascal es estrictamente necesario declarar siempre todas las variables y constantes que se vayan a utilizar. As para declarar una o ms variables, ya sea dentro del programa principal en un procedimiento, o en una funcin; estas deben estar precedidas por la palabra reservada Var en la seccin de declaraciones. Posteriormente, es necesario indicar los nombres que las identificarn y el tipo de datos que almacenarn, de acuerdo con la siguiente sintaxis:
Mtro. Alejandro Salazar Guerrero 4/36

Var NombreVariable: TipoDato El NombreVariable es aquel que se dar a cada variable, mientras que TipoDato especifica el tipo de datos que podr almacenar y con el que stas pueden ser definidas, como Char, String, Real, Integer o Boolean, analizados en el tema anterior; por ejemplo: Var NombreCliente: string[15]; EdadCliente: Integer; X, Y, Z: Real; Interruptor, SW1, SW2: Boolean; En el esquema anterior se puede observar como dos o ms variables que vayan a ser de un mismo tipo de datos se pueden declarar en una misma lnea, separndolas cada una, mediante una coma. La declaracin de constantes es diferente al de las variables, en cuanto a que se debe anteponer la palabra reservada Const, para despus colocar los nombres de cada una de las constantes que se requerirn y, de inmediato, mediante el signo igual (=), asignarles los valores que se van a almacenar en cada constante que declaremos. La sintaxis es la siguiente: Const NombreConstante = Valor; Ejemplo: Const PI = 3.1416; Mensaje = 'Viva Colombia!'; Nivel = 12; Encendido = True; Cabe recordar que en Turbo Pascal es obligatorio declarar las variables antes de utilizarlas, bajo la forma de declaracin explcita. Sin embargo, existen otros lenguajes como QBASIC en los cuales no es regla obligatoria tener que declarar previamente las variables, simplemente basta con utilizarlas en cualquier parte del programa; stas se crean automticamente y reconocen el tipo de datos que se les asignen. A esta forma de declaracin se le conoce como declaracin implcita, la cual no es la ms conveniente, ya que puede ocurrir que durante la programacin se cometa un error y se escriba mal el nombre de una variable; por ejemplo escribir Totol en lugar Total. Con ello, se tendran dos variables distintas que produciran un error de lgica, provocando que el programa se comporte de manera inesperada. En
Mtro. Alejandro Salazar Guerrero 5/36

Turbo Pascal no cabr la posibilidad de cometer este tipo de errores, ya que este lenguaje no permite declarar las variables de forma implcita.

Nombres de las variables y constantes El nombre de una variable o una constante deber reunir los siguientes requisitos: Tener una longitud mxima de 127 caracteres. El primer carcter debe empezar por una letra. Los siguientes caracteres pueden ser letras, dgitos o el carcter de subrayado (_). No admite espacios en blanco, ni caracteres especiales o acentuados (%, $, &, @, !, , , ). No permite el uso de nombres repetidos, ni usar palabras reservadas del lenguaje (Begin, If, For, While, End, Until, ). Por su parte, Turbo Pascal no distingue entre maysculas y minsculas; por ejemplo, considerara las variables TotalFactura y totalfactura como la misma. Como una buena prctica de programacin se aconseja que los nombre de las variables tengan una relacin con la informacin que van a almacenar, de modo que resultara lgico usar la variable llamada TotalFactura para representar el valor total de una factura de venta. Tambin es aconsejable que los nombres de variables formados por varias palabras, usen maysculas en la primera letra de cada palabra para distinguirlas, tal como se ha hecho con la variable TotalFactura.

Al cumplir estos requisitos, la escritura de los programas resultar ms fcil de entender al momento de realizarle futuras modificaciones.

2.3. Expresiones Una expresin es una combinacin de valores y operaciones que, al ser evaluados, entregan un valor. Algunos elementos que pueden formar parte de una expresin son: Valores literales: como 2, "hola" 5.7 Variables Operadores Llamadas a funciones.
6/36

Mtro. Alejandro Salazar Guerrero

Por ejemplo, la siguiente expresin entrega el valor 10 al ser evaluada: >>> 4 * 3 - 2 10 El valor de la siguiente expresin depende del valor que tiene la variable en en el momento de la evaluacin: >>> n / 7 + 5 Una expresin est compuesta de otras expresiones evaluadas recursivamente hasta llegar a sus componentes ms simples, que son los literales y las variables. Por ejemplo, en la expresin: >>> b ** 2 - 4 * a * c Las subexpresiones que son evaluadas son las siguientes: b ** 2 b 2 4*a*c 4*a 4 a c Ejercicio: por qu no a * c? Operadores Un operador es un smbolo en una expresin que representa una operacin aplicada a los valores sobre los que acta denominados operandos. El operador binario es el que tiene dos operandos, mientras que un operador unario cuenta slo con uno. Por ejemplo, en la expresin 2.0 + x el operador, + es un operador binario que representa la suma y sus operandos son 2.0 y x. Los principales operadores se pueden clasificar en: Lgicos Aritmticos Relacionales

Operadores lgicos Los operadores lgicos son los que tienen valores lgicos, como True (verdadero) y False (falso) como operandos y como resultado.

Mtro. Alejandro Salazar Guerrero

7/36

Existen tres operadores lgicos: and (en espaol: y) representa la conjuncin lgica y es de carcter binario. or (en espaol: o) representa la disyuncin lgica y es de carcter binario. not (en espaol: negacin) representa la negacin lgica, es de carcter unario.

La siguiente tabla muestra los resultados posibles de las operaciones lgicas. Las primeras dos columnas representan los valores de los operandos, y las siguientes tres, los resultados de las operaciones:

Operadores aritmticos Representan operaciones numricas; tanto sus operandos como sus resultados son valores numricos. Algunos operadores aritmticos binarios son: Suma + Resta Multiplicacin * Divisin real / Divisin entera // (cociente de la divisin) Mdulo % (resto de la divisin) Potencia ** (elevado a)

Las divisiones y el mdulo suelen causar confusin. Algunos ejemplos que pueden dejarlos ms claro: >>> 17 / 3 5.666666666666667 >>> 17 // 3

Mtro. Alejandro Salazar Guerrero

8/36

5 >>> 17 % 3 2 Una relacin entre // y % que siempre se cumple es la siguiente: (a // b) * b + (a % b) == a

Adems, existen dos operadores aritmticos unarios: Positivo + Negativo -

El positivo mantiene el signo de un valor, mientras que el negativo lo cambia: >>> n = -4 >>> +n -4 >>> -n 4 Operadores relacionales Permiten comparar valores. Sus operandos son cualquier cosa que pueda ser comparada y sus resultados se conforman siempre por valores lgicos. Algunos operadores relacionales son: Igual a == (no confundir con el = de las asignaciones) Distinto a != Mayor que > Mayor o igual que >= Menor que < Menor o igual que <=

Mtro. Alejandro Salazar Guerrero

9/36

Los operadores relacionales pueden ser encadenados, tal como se utilizan en las matemticas, de la siguiente manera: 0 < x <= 10 Esta expresin es equivalente a: 0 < x and <= 10

Precedencia La precedencia de operadores es una regla que especifica en qu orden deben ser evaluadas las operaciones de una expresin. Se encuentra determinada por la siguiente lista de operadores, en orden de menor a mayor precedencia: or and not <, <=, >, >=, !=, == +, - (suma y resta) *, /, //, % +, - (positivo y negativo) **

Esto significa que las multiplicaciones se evalan antes que las sumas, y que las comparaciones se evalan antes que las operaciones lgicas: >>> 2 + 3 * 4 14 >>> 1 < 2 and 3 < 4 True Las operaciones dentro de un mismo nivel son evaluadas en el orden en que aparecen en la expresin, de izquierda a derecha. La nica excepcin son las potencias, que son evaluadas de derecha a izquierda:
10/36

Mtro. Alejandro Salazar Guerrero

>>> 15 * 12 % 7 # es igual a (15 * 12) % 7 5 >>> 2 ** 3 ** 2 # es igual a 2 ** (3 ** 2) 512 Para forzar un orden de evaluacin distinto a la regla de precedencia, deben usarse parntesis: >>> (2 + 3) * 4 20 >>> 15 * (12 % 7) 75 >>> (2 ** 3) ** 2 64 Por ejemplo, consideremos la siguiente expresin: 15 + 59 * 75 // 9 < 2 ** 3 ** 2 and (15 + 59) * 75 % n == 1 En el supuesto de que la variable n tenga el valor 2, podemos ver a continuacin, cmo la expresin es evaluada hasta llegar al resultado final:

Mtro. Alejandro Salazar Guerrero

11/36

La operacin entre parntesis (15 + 59) debe ser evaluada antes de la multiplicacin por 75, ya que es necesario conocer su resultado para poder calcular el producto. El momento preciso en que ello ocurre no es importante. Lo mismo sucede con la evaluacin de la variable n: slo importa que sea evaluada antes de ser usada por el operador de mdulo. En el ejemplo anterior, ambos casos fueron evaluados inmediatamente antes de que su valor sea necesario.

2.4. Instrucciones El proceso de programacin es un proceso de solucin de problemas y el desarrollo de un programa requiere las siguientes fases: 1. 2. Definicin y anlisis del problema. Diseo de algoritmos:

Mtro. Alejandro Salazar Guerrero

12/36

a. Diagrama de flujo. b. Diagrama N S. c. Pseudo cdigo. 3. 4. 5. 6. Codificacin del programa. Depuracin y verificacin del problema. Documentacin. Mantenimiento.

Partes constructivas de un programa Tras la decisin de desarrollar un programa, el programador debe establecer el conjunto de especificaciones que debe contener: entrada, salida y algoritmos de resolucin, que incluirn las tcnicas para obtener las salidas a partir de las entradas. Conceptualmente, un programa puede ser considerado como una caja negra o algoritmo de resolucin, formado por el conjunto de cdigos que transforman las entradas del programa (datos) en salida (resultados).

Entrada

Programa Algoritmo de (resolucin)

Salida

Bloque de un programa El programador debe establecer de donde provienen las entradas al programa que, en cualquier caso, procedern de un dispositivo de entrada, como un teclado o un disco, entre otros. El proceso de introducir la informacin de entrada o datos en la memoria de la computadora se denomina entrada de datos, operacin de lectura o accin de leer. Las salidas de datos se deben presentar en dispositivos perifricos de salida: pantalla, impresoras, disco, entre otros. La operacin de salida de datos se conoce tambin como escritura o accin de escribir.

Instrucciones y sus tipos El proceso de diseo del algoritmo o, posteriormente, de codificacin del programa consiste en definir las acciones o instrucciones que resolvern el problema.

Mtro. Alejandro Salazar Guerrero

13/36

Las acciones o instrucciones se deben escribir y posteriormente almacenar en memoria en el mismo orden en que han de ejecutarse, es decir, en secuencia. Un programa puede ser: 1. Lineal: si las instrucciones se ejecutan secuencialmente, sin bifurcaciones, decisin ni comparaciones.
Instrucciones 1 Instrucciones 2 . . . Instrucciones n

En el caso del algoritmo, las instrucciones se suelen conocer como acciones:


Accin 1 Accin 2 . . . Accin n

2.

No lineal: cuando se interrumpe la secuencia mediante instrucciones de bifurcacin:

Accin 1 Accin 2 . . . Accin x Accin n

Tipos de instrucciones

Mtro. Alejandro Salazar Guerrero

14/36

Las instrucciones disponibles en un lenguaje de programacin dependen del tipo de lenguaje. Por ello, en este apartado estudiaremos las instrucciones o acciones bsicas que se pueden implementar de modo general en un algoritmo y que esencialmente soportan todos los lenguajes. Dicho de otro modo, las instrucciones bsicas son independientes del lenguaje. Con base en lo anterior, la clasificacin ms usual de las instrucciones es la siguiente: 1) 2) 3) 4) 5) De inicio / fin De asignacin De lectura De escritura De bifurcacin

Instrucciones de asignacin Explicaremos su funcionamiento con ejemplos: A 80 la variable A toma el valor 80

Cul ser el valor que tomar C tras la ejecucin de las siguientes instrucciones? A B C 12 A B

A contiene 12, B contiene 12 y C contiene 12 Antes de la ejecucin de las tres instrucciones, el valor de A, B y C es indeterminado. Si se desea darles un valor inicial, habr que hacerlo explcitamente, incluso cuando este valor sea 0. Es decir, habr que definir e inicializar las instrucciones:

A B C

0 0 0

Mtro. Alejandro Salazar Guerrero

15/36

Instrucciones / acciones bsicas

Tipo de instruccin

Pseudo cdigo ingls Pseudo cdigo espaol

Comienzo de proceso Fin de proceso Entrada (lectura) Salida (escritura) Asignacin

begin end read write A 5

inicio fin leer escribir B 7

Cul es el valor de la variable AUX al ejecutarse la instruccin 5? 1. 2. 3. 4. 5. A B AUX A B 10 20 A B AUX

o En la instruccin 1, A toma el valor 10 o En la instruccin 2, B toma el valor 20 o En la instruccin 3, AUX toma el valor anterior de A, o sea 10 o En la instruccin 4, A toma el valor anterior de B, o sea 20 o En la instruccin 5, B toma el valor anterior de AUX, o sea 10 o Tras la instruccin 5, AUX sigue valiendo 10

Cul es el significado de N N N + 5

N + 5 si N tiene el valor actual de 2?

Mtro. Alejandro Salazar Guerrero

16/36

Se realiza el clculo de la expresin N + 5 y su resultado 2 + 5 = 7 se asigna a la variable situada a la izquierda, es decir, N tomar un nuevo valor 7. Se debe pensar en la variable como en una posicin de memoria, cuyo contenido puede variar mediante instrucciones de asignacin. Un smil suele ser un buzn de correos, donde el nmero de cartas depositadas variar segn el movimiento diario del cartero, de introduccin de cartas, o del dueo del buzn, de extraccin de dichas cartas). Instrucciones de lectura de datos (entrada) Son aquellas que leen datos de un dispositivo de entrada. Cul ser el significado de las instrucciones siguientes? a) leer (NUMERO, HORA, TASA) Leer del terminal los valores NUMERO, HORA y TASAS, archivndolos en la Memoria; si los tres nmeros se teclean a la instruccin son 12325, 32, 1200. Ello significara que se han asignado a las variables esos valores y equivaldra a la ejecucin de las instrucciones.

NUMERO HORA TASA

12325 32 1200

b) leer (A, B, C) Si se leen del terminal 100, 200, 300, se asignaran a las variables los siguientes valores: A B C = = = 100 200 300

Instrucciones de escritura de resultados (salida) Estas instrucciones se escriben en un dispositivo de salida. Explicar el resultado de la ejecucin de las siguientes instrucciones: A 100
17/36

Mtro. Alejandro Salazar Guerrero

B C Escribir (A, B, C)

200 300

Se visualizaran en la pantalla o imprimiran en la impresora los valores 100, 200 y 300 que contiene las variables A, B y C. Instrucciones de bifurcacin El desarrollo lineal de un programa se interrumpe cuando se ejecuta una bifurcacin. Las bifurcaciones pueden ser, segn el punto del programa a donde se bifurca, hacia delante o hacia atrs. Bifurcacin adelante (positivo) instruccin 1 instruccin 2 instruccin 3 . . . instruccin 8 . . ltima instruccin Bifurcacin atrs (negativo) instruccin 1 instruccin 2 instruccin 3 . . . instruccin 12 . . ltima instruccin

Las bifurcaciones en el flujo de un programa pueden realizarse de dos modos: 1. Bifurcacin incondicional: se realiza siempre que el flujo del programa pase por la instruccin sin necesidad del cumplimiento de ninguna condicin:

Accin 1

Accin 2

Accin 3

Mtro. Alejandro Salazar Guerrero

18/36

2.

Bifurcacin condicional: depende del cumplimiento de una determinada condicin. Si se cumple la condicin, el flujo sigue ejecutando la accin F2. Si no se cumple, se ejecuta la accin F1. No
Accin F1
Condicin?

Si
Accin F2

2.5. Estructura de un algoritmo En programacin es necesario distinguir claramente entre el diseo del algoritmo y los medios para su implementacin en un lenguaje especfico. Una vez que se comprendan los conceptos de programacin y como utilizarlos, la enseanza de un nuevo lenguaje es relativamente fcil. Los lenguajes de programacin tienen elementos bsicos que se utilizan como bloques constructivos, as como reglas para las cuales esos elementos se combinan, denominadas sintaxis del lenguaje. nicamente las instrucciones sintcticamente correctas pueden ser interpretadas por la computadora, por lo que los programas que contengan errores de sintaxis sern rechazados por la mquina. Los elementos bsicos constitutivos de un programa o algoritmo son: Palabras reservadas (inicio, fin, si entonces, etc.) Identificadores (escencialmente nombres de variables) Caracteres especiales (coma, apstrofe, etc.) Constantes Variables Expresiones Instrucciones

Adems de estos elementos bsicos, existen los siguientes elementos cuya comprensin y funcionamiento ser vital para el correcto diseo de un algoritmo y, naturalmente, la codificacin del programa: Bucles Contadores Acumuladores

Mtro. Alejandro Salazar Guerrero

19/36

Interruptores Estructuras Secuenciales Selectivas Repetitivas

El amplio conocimiento de todos los elementos de programacin y el modo de su integracin en los programas constituyen las tcnicas en la materia, que todo buen programador debe conocer. Bucles Tambin denominados lazos (loops) son segmentos de un algoritmo o programa, cuyas instrucciones se repiten un nmero determinado de veces mientras se cumplen determinadas condiciones (que exista o sea verdadera). Se debe establecer un mecanismo para determinar las tareas repetitivas, a travs de una condicin que puede ser verdadera o falsa y que se comprueba una vez a cada paso o iteracin del bucle (total de instrucciones que se repiten en el bucle). Un bucle consta de tres partes: Decisin Cuerpo Salida

El bucle de la siguiente figura es infinito, ya que las instrucciones (1), (2) y (3) se ejecutan indefinidamente, pues no existe salida, al no cumplirse una determinada condicin. Si tras la lectura de la variable N se coloca una condicin, el bucle dejar de ser infinito y tendr fin cuando la condicin sea verdadera.
Inicio

SUMA 0

Leer N

(1)

SUMA SUMA + N
Mtro. Alejandro Salazar Guerrero 20/36

ESCRIBIR SUMA

BUCLE

(2)

(3)

El diagrama de flujo escrito en pseudo cdigo es el siguiente: Inicio SUMA 0 1: leer (N) Si N = 0 entonces Escribir (SUMA) Ir_a fin Si_no Suma suma + N FIN_SI IR_A 1 FIN Bucle con fin
INICIO

SUMA 0

Leer N

N=0

Si
Mtro. Alejandro Salazar Guerrero 21/36

SUMA SUMA + N

Escribir SUMA

No

Bucles anidados En un algoritmo pueden existir varios bucles. Los bucles pueden ser: Anidados: cuando estn dispuestos de tal modo que unos son interiores a otros. Independientes: cuando son externos unos a otros.

Tipos de bucles

Inicio

Inicio

Inicio

Bucle A

Bucle B

Bucle C

Mtro. Alejandro Salazar Guerrero

22/36

fin Bucles independientes

fin Bucles anidados

fin Bucles cruzados (no es correcto su diseo)

Contadores Normalmente, en los procesos repetitivos, que son la base del uso de las computadoras, es necesario contar los sucesos o acciones internas del bucle, como pueden ser los elementos de un fichero y el nmero de iteraciones a realizar por el bucle, entre otros. Una forma de controlar un bucle es mediante un contador, el cual es una variable cuyo valor se incrementa o decrementa en una cantidad constante en cada iteracin. La siguiente figura presenta un diagrama de flujo para un algoritmo que se desea repetir 50 veces. El contador se representa en este ejemplo con la variable CONT. La instruccin que representa a un contador es la asignacin CONT CONT + 1. El contador cuenta del 1 al 50 y deja de contar cuando la variable CONT toma el valor 51 y se termina el bucle. Por otra parte, el contador puede contar negativamente; es decir, descuenta o decrementa; comienza a contar en n y se decrementa hasta llegar a cero. En este caso se termina el bucle y se realiza la accin escribir. Ejemplo de contador positivo
Inicio

CONT

CONT > 50?

Si

No
Cuerpo del bucle

Fin

Mtro. Alejandro Salazar Guerrero

23/36

CONT

CONT+

Si se desea hacer cincuenta copias de un informe de ventas Cul sera el diagrama de flujo que resolvera el problema? La tarea implica realizar cincuenta veces la impresin de una copia del informe. Dado que el contador I se inicializa a 1, su valor coincidir con el nmero de copias que se hayan realizado. Cuando I tome el valor de 51, significar que se habrn realizado cincuenta copias. La siguiente figura constituye otro ejemplo de diagrama de flujo con contador; es este caso, negativo, que implica la accin de descontar. El contador puede ser: Positivo: incrementos uno en uno Negativo: decrementos uno en uno
I Inicio

I > 50?

Si No
Realizar copia Fin

I+1

Bucle contador negativo


Inicio

Mtro. Alejandro Salazar Guerrero

24/36

Leer mn

Producto CONT

0 n

CONT > 0?

No

Si
Producto CONT producto + m CONT - 1 Escribir M, n Producto

Fin

Para leer todas las fichas de un archivo e imprimir al nmero total de ellas, es usual colocar en todo los archivos una ficha denominada fin de fichero o de archivo (FF), que se sita al final de cada archivo. Con ello, cuando se lee el archivo y se encuentra esta ficha (FF) se sabe que ha alcanzado el final del archivo. El algoritmo en lenguaje natural sera: 1. 2. 3. 4. 5. 6. 7. Inicio c leer (ficha) si (FF) ir_a (8) C C+1 0

escribir (ficha) ir_a (39)

Mtro. Alejandro Salazar Guerrero

25/36

8. 9.

escribir fin

Tambin es posible realizar diferentes acciones para el caso de alternativas mltiples. En el caso de que la condicin ofreciera cinco posibles soluciones, se representara como:

(1)

Condicin

(5)

(2) (3)
Accin S1 Accin S2 Accin S3

(4)
Accin S4 Accin S5

Interruptores El interruptor o conmutador (switch), en ocasiones denominado indicador o bandera (flag) constituye una variable que puede tomar dos valores diferentes: 1 y 0, a lo largo de la ejecucin del programa y que permite comunicar informacin de una parte a otra del mismo. Un ejemplo de interruptores puede ser encendido / apagado o abierto / cerrado.

=1

SW

=0

Accin F1

Accin F2

Si SW es igual a 1, se ejecuta la accin S1. Si SW es igual a 0, se ejecuta la accin S2.

Inicio

Mtro. Alejandro Salazar Guerrero

26/36

SUMA

Leer N

Si
N=0

No
SUMA SUMA + N Escribir SUMA

Fin

Se cuenta con un archivo que contiene un conjunto de fichas con dos campos: M y N. Se desea listar el campo M de las fichas pares y el campo N de las fichas impares. Los interruptores SW se suelen inicializar a un valor determinado (0 1 ); posteriormente, se ha modifica alternativamente su valor a medida que se leen las fichas impares y pares. De este modo, cuando SW = 0, se leern las fichas impares y cuando SW = 1, se leern las fichas pares.
Inicio

SW 1 Leer ficha

Mtro. Alejandro Salazar Guerrero

27/36

Ultima ficha

Si

No Si
SW= 1

A continuacin se disea un diagrama de flujo que escribe los nmeros de 1 a 1000:


Inicio

No

I <= 1000

Si
Leer I

Fin

Mtro. Alejandro Salazar Guerrero

I+1

28/36

A continuacin se calcula la suma de los nmeros de 1 a 1000: S = 1 +2 + 3 + 4 + + 999 + 10000 La suma se realiza con totalizador o acumulador, que realizar sucesivas sumas parciales 1, 1 + 2 + 3, 1 + 2 + 3 + 4, etc. Para ello se inicializa la variable del sumador S a cero y el contador I representar los nmeros sucesivos 1 a 1000.
Inicio

I <=1000

Escribir S

Fin

No
S S+

Si
I I+1

Escritura de algoritmo o programas La escritura de un algoritmo mediante una herramienta de programacin debe ser lo ms clara posible y estructurada, de modo que su lectura facilite considerablemente su entendimiento y posterior codificacin en un lenguaje de programacin. Los algoritmos deben ser escritos en lenguajes similares a los programas. Se utilizar esencialmente el lenguaje algortmico, basado en pseudo cdigos. La estructura del algoritmo requerir la lgica de los programas escritos en el lenguaje de programacin estructurado; por ejemplo, Pascal. El algoritmo consta de dos componentes: 1) Cabecera de programa: constituye una accin simple que comienza con la palabra algoritmia, seguida por el nombre asignado al programa completo.

Mtro. Alejandro Salazar Guerrero

29/36

2) Bloque algoritmo: es el resto del programa y consta de dos componentes o secciones: a) b) Declaraciones: definen o declaran las variables y constantes que tengan nombres. Acciones ejecutables: aquellas que realiza posteriormente la computacin cuando el algoritmo convertido en programa se ejecuta.

Cabecera del programa o algoritmo Todos los algoritmos y programas deben comenzar con una cabecera en la que se expresen el identificador o nombre correspondiente con la palabra reservada que seale el lenguaje. En los lenguajes de programacin, la palabra reservada suele ser program, misma que en algoritmia se denomina algoritmo. Declaracin de variables A continuacin se declaran o describen todas las variables utilizadas en el algoritmo, se enlistan sus nombres y especifican sus tipos. Se inicia con con la palabra reservada var (abreviatura de variable), a travs del siguiente formato: Var. Tipo - 1: Lista de variables - Tipo 2: Lista de variables 2 Tipo n: Lista de variables n Cada lista de variables es una variable simple o una lista de variables separadas por comas y cada tipo es de datos bsicos (entero, real, carcter o lgica). Por ejemplo, la siguiente seccin de declaracin de variables: Var. Entera: Numero Empleado Real: Hora Real: Impuesto Real: Salario O de modo equivalente: Var. Entera: Numero Empleado Real: Hora, Impuesto, salario La anterior, declara que slo las tres variables: Hora, Impuesto y Salario son de tipo real. En este sentido, resulta una buena prctica de programacin:

Mtro. Alejandro Salazar Guerrero

30/36

Utilizar nombres de variables significativos que sugieran lo que ellas representan, ya que eso har ms fcil y legible el programa. Incluir breves comentarios que indiquen cmo se utiliza la variable.

Var. Entera: Numero empleado Real: Horas Impuestos Salario Declaracin de constantes numricas

// nmero de empleados // horas trabajadas /// impuesto a pagar // cantidad ganada

En esta seccin se declaran todas las constantes que tengan nombre. Su formato es: Const. Pi: Tamao: Hora:

3,141592 43 6,50

Los valores de estas constantes ya no pueden variar en el transcurso del algoritmo. Declaracin de constantes y variables de carcter Las constantes de carcter simple y cadenas de caracteres pueden ser declaradas en la seccin del programa const., al igual que las constantes numricas. Const. Estrella = Frase Mensaje

* = =

12 de Octubre Hola mi nene

Las variables de caracteres se declaran de dos modos: 1. Almacenar un solo carcter: se declara nombre, inicial, nota y letras, que almacenarn slo un carcter. Var. Carcter: nombre, inicial, nota, letra

Mtro. Alejandro Salazar Guerrero

31/36

2.

Almacenar mltiples caracteres (cadenas): el almacenamiento de caracteres mltiples depender del lenguaje de programacin: BASIC Pascal nombre variable cadena = cadena de caracteres NOMBRES = <Pepe Luis Garca Rodrguez> formato tipo array (vase tema 6)

Existen algunas versiones de Pascal, como es el caso de Turbo Pascal, que tienen implementados un tipo de datos denominados string (cadena) que permite declarar variables de caracteres o de cadena que almacenan palabras compuestas de diferentes caracteres. La documentacin de un programa es el conjunto de informacin interna y externa al programa, que facilitar su posterior mantenimiento y puesta a punto. La documentacin puede ser interna y externa. La documentacin interna es la que se acompaa en el cdigo o programa fuente y se realiza a base de comentarios significativos. Estos comentarios se representan con diferentes notaciones, segn el tipo de lenguaje de programacin. La documentacin externa se acompaar en informacin ajena al programa y proporcionada por el programador. BASIC 1. Los comentarios se incluyen dentro de lneas que comienzan con la palabra reservada REM. 100 REM *** autor J.R. Mackoy *** 200 REM subrutina ordenacin 2. En las versiones BASIC de Microsoft (BASICA, GWBASIC y MBASIC), los comentarios se incluyen en lneas que comienzan por el carcter apstrofe (): 100 or J.R. Mackoy *** 200 subrutina ordenacin 3. Existen algunas versiones de BASIC como HP BASIC., que utilizan el carcter admiracin ( ) en lugar de carcter apstrofe: 100 *** autor J.R. Mackoy *** 200 subrutina ordenacin FORTRAN Las lneas que contiene comentarios comienzan en su columna 1 con el carcter asterisco (*) o la letra C y se pueden escribir a partir de la columna 2: Columna 1 7

Mtro. Alejandro Salazar Guerrero

32/36

C * PASCAL

*** autor J.R. Mackoy *** subrutina ordenacin

Los comentarios se encierran entre los smbolos: ( * O bien: ( ) ( * autor J.R. Mackoy * ) ( subrutina ordenacin ) MODULA 2 Los comentarios se encierran entre los smbolos (* *) C Los comentarios se encierran entre caracteres llaves ( { } ) { Esto es un comentario en C } C++ Admite, adems de los caracteres llaves, la doble barra inclinada: /// Esto es un comentario en C++ Se utilizan preferentemente para representar comentarios los smbolos //. Sin embargo, algunos autores de algoritmos, a fin de independizar la simbologa del lenguaje, suelen representar los comentarios entre corchetes: ( { } ). Estilo de escritura de algoritmos o programas Algoritmo identificador / seccin de declaraciones //cabecera *)

Mtro. Alejandro Salazar Guerrero

33/36

Var. Tipo de datos: Lista de identificadores Const. Lista de identificadores = valor Inicio <sentencia S1> <sentencia S2> . . . <sentencia Sn> fin Es necesario tomar en cuenta los siguientes puntos:

//cuerpo del algoritmo

En ocasiones, la declaracin de constantes y variables se omiten o se describen en una tabla de variables que realiza las mismas funciones. Las cadenas de caracteres se encierran entre comillas simples. Utilizar siempre sangras en los bucles o en aquellas instrucciones que proporcionen legibilidad al programa, tales como inicio y fin.

Por ejemplo: Algoritmo races // resuelve una ecuacin de 2 grado var. Real: a, b, c, d inicio lerer (a,b,c) D b 2 4 * a * c Si D <0 entonces Escribir ( raices completas) Si_no Si D = 0 entonces Escribir ( -b / 2*a) Si_no Escribir ( (- B raz 2 (D) ) / ( 2 * a ) ) Escribir ( (- B + raz 2 (D) ) / ( 2 * a ) ) Fin_si Fin_si Fin Actividades de programacin resueltas

Mtro. Alejandro Salazar Guerrero

34/36

Determinar la cantidad total por el pago de una llamada telefnica, teniendo en cuenta lo siguiente: Toda llamada que dure menos de tres minutos (cinco pasos) tiene un costo de 10 pesetas. Cada minuto adicional, a partir de los tres primeros, es un paso de contador, y cuesta 5 pesetas.

Anlisis El algoritmo de resolucin del problema entraa los siguientes pasos: 1. Inicio 2. Leer el nmero de pasos (n pasos) hablados por telfono. 3. Comprobar que el nmero de pasos es mayor que cero, ya que realmente se ha realizado la llamada si el nmero de pasos es distinto de cero positivo). Si el nmero de pasos es menor de cero, se producir un error. 4. Calcular el precio de la conferencia de acuerdo con los siguientes conceptos: a. Si el nmero de pasos es menor que 5, el precio es de 10 pesetas. b. Si el nmero de pasos es mayor que 5, es preciso calcular los pasos que exceden de 5, ya que estos importan 5 pesetas cada uno. Al producto de los pasos sobrantes por cinco pesetas se le suman 10 pesetas y se obtendr el precio total. Variables N PASOS N FACT Nmero de pasos de la llamada Nmero de pasos que exceden a 5 Importe o precio de la llamada.

Mtro. Alejandro Salazar Guerrero

35/36

Inicio 1 Leer N PASOS

N PADSOS <= 0

Si

Leer ERROR

No
Hacer FACT N 10 N PASOS - 5 1

Si
N>0 FACT

Hacer FACT + N + 5

No
ESCRIBIR N PASOS FACT

Fin

Escribir un algoritmo que calcule el producto de los n primeros nmeros naturales: Anlisis El problema puede calcular el producto N * ( N 1 ) * ( N 2 ) * . . . * 3 * 2 * 1, que en trminos matemticos se le conoce con el nombre de FACTORIAL de N. El algoritmo que resuelve el problema es el siguiente: 1. 2. 3. 4. 5. Leer N Caso de que N = 0, visualizar Factorial de 0 igual 1 Comprobar que N > 0 ( los nmeros negativos no se consideren ) Hacer la variable P que va a contener el productor igual a 1. Realizar el producto P = P * N.

Mtro. Alejandro Salazar Guerrero

36/36

Disminuir en una unidad sucesivamente hasta llegar a N = 1, y de modo simultaneo los productos P * N. 6. Visualizar P. 7. Fin.
Inicio

Leer N

N=0

No No

N>0

Si

Si
P 1

Escribir Factorial de 0 igual a 1 1

Escribir Nmero negativo

P N

P*N N1

N=1

No Si
Escribir Prueba con positivos Escribir Factorial = P

Fin

Mtro. Alejandro Salazar Guerrero

37/36

Pseudo cdigo Algoritmo Factorial Var. Entero: N Real: P Inicio Leer ( N ) Si N = 0 entonces Escribir ( Factorial de 0 igual a 1 ) Si_no Si N > 0 entonces P 1 1: P P*N N N1 Si N = 1 entonces Escribir ( Factorial = P ) Si_no Ir_a 1 Fin _ si Escribir ( Nmero positivo ) Escribir ( Prueba con positivos ) Fin _ si Fin _ si Fin

Mtro. Alejandro Salazar Guerrero

38/36

Vous aimerez peut-être aussi