algoritmos & programacion - iii - introduccion a pascal - estructuras secuenciales

31

Click here to load reader

Upload: mam2013

Post on 13-Aug-2015

42 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

INTRODUCCIÓN A PASCAL

PROGRAMACIÓNLos pasos necesarios para la creación de un programa son:

1. Análisis 2. Diseño del algoritmo3. Construcción del programa (en un lenguaje de programación)4. Ejecución5. Validación6. Mantenimiento

ALGORITMO

Es una secuencia ordenada de pasos - sin ambigüedades -, repetible, que es solución de un determinado problema.

Las características fundamentales que debe cumplir todo algoritmo son:

a) Debe ser preciso e indicar el orden de realización de cada pasob) Debe estar definido (si se repite n veces los pasos se debe obtener siempre el mismo

resultado)c) Debe ser finito (debe tener un número finito de pasos)d) Es independiente del lenguaje de programación que se utilice

La definición de un algoritmo debe describir tres parte Entrada, Proceso, Salida.

PASCAL

Es un lenguaje de alto nivel, fuertemente tipeado (se debe definir el tipo de todos los datos), de propósito general, compilable, estructurado y procedimental.

Un lenguaje compilable significa que todo programa será deberá pasar por los siguientes pa-sos:

a) Será escrito en un editor de texto (en un formato ASCII)b) Luego lo toma el Compilador comprueba que todas las instrucciones del programa

estan escritas siguiendo la sintaxis de PASCAL. Si todo es correcto lo traduce a Len-guaje de Máquina (Assembler).

c) Pasa posteriormente al Linkeador (o montador), une los distintos módulos que pue-den componer un programa, unifica los códigos de los distintos subprogramas, y de los datos. Pasándolo por último a código de máquina.

TIPOS DE DATOS

Los diferentes objetos de información con los que un programa Pascal trabaja se conocen co-lectivamente como datos. Todos las datos tienen un tipo asociado can ellos. Un dato puede ser un simple carácter, tal como 's', un valor entero tal como 35 o un número real tal como 1415,92. Una operación de suma no tiene sentido con caracteres, sólo con números. Por consiguiente, si el com-

Página 1 de 19

Page 2: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

pilador detecta una operación de suma de dos caracteres, normalmente producirá un error. Incluso entre tipos numéricos, la operación de suma se almacena de modo distinto. Esto se debe a que nú -meros enteros y reales se almacenan de modos diferentes. A menos que el programa conozca el ti -po de datos, si es un valor entero a real, no Puede ejecutar correctamente la operación de suma

La asignación de tipos a los datos tiene dos objetivos principales.1. Detectar errores de operaciones en programas2. Determinar cómo ejecutar las operaciones

Pascal se conoce como lenguaje "fuertemente tipeado" (strongly.typed) o de tipos fuertes. Esto significa que todos las datos utilizados deben tener sus tipos declarados explícitamente y el lenguaje limita la mezcla de tipos en las expresiones. Pascal detecta muchos errores de programa-ción antes que el programa se ejecute. La ventaja de los lenguajes de tipos fuertes (ricos en tipos de datos) es que se gasta menos esfuerzo en la depuración de programa, ya que el compilador de -tecta muchos de esos errores

El tipo de un dato determina la naturaleza del conjunto de valores que puede tomar una varia -ble. Otro concepto importante a tener en cuenta es la representación interna de los números, o al menos el espacio de memoria ocupado por una variable de un tipo dado.

La unidad de medida de la capacidad de memoria, como ya hemos visto es el byte (octeto). Un byte se compone de ocho cifras binarias (bits) que Pueden tomar cada una el valor 0 ó 1.

IntegerBoolean

Ordinales CharTipos Simple Enumerado

Subrango

No Ordinales Reales

Datos Estáticos Tipos Cadena String

Tipos de Datos Array

RegistroTipos Estructurado

ConjuntoArchivo

Tipos procedimientos Procesos

Datos Dinámicos Tipos Punteros

Página 2 de 19

Page 3: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

Tipos Enteros

Tipo Rango Formatobyte 0 .. 255 1 Byteinteger -32768 .. 32767 2 Byteslongint -247483648 .. 24748367 4 Bytesshortint -128 .. 127 1 Byteword 0 .. 65535 2 Bytes

El tipo integer se almacena en memoria como 2 (dos) bytes, el bit de mayor peso de los dos bytes es el bit de signo. Se puede separar un entero en sus dos bytes utilizando las funciones inter-nas Hi y Lo

Hi devuelve el byte de mayor peso de los dos bytes de memoriaLo devuelve el byte de menor peso

Números Reales

Tipo Rango Cifras bytesreal 2.9x10-39 .. 1.7x1038 11-12 6single 1.5x10-45 .. 3.4x1038 7-8 4double 5.0x10-324 .. 1.7x10308 15-16 8extended 1.9x10-4932 .. 1.1x104932 19-20 10comp -(263 +1) .. 263 +1 19-20 8

Tipos carácter (Char)

El tipo char es un tipo de datos que puede contener un solo carácter. Cada uno de estos ca -racteres puede ser expresado gracias al código ASCII ampliado.Ejemplo

‘A’ ‘a’ ‘b’ ‘*’ ‘5’ ‘ ‘ Se le puede asignar a una constante un carácter por medio de su código

#65 equivale a chr(65) equivale A#26 o ^Z cierre del archivo#27 tecla ESC#13 tecla ENTER

Tipos lógicos (boolean)

El tipo lógico (boolean) es, al igual que el carácter, parte de ISO Pascal estándar. Los valores de tipa lógico pueden tomar sólo das valores posibles: true (verdadero) y false (falso). Al igual que el tipo char, el tipo boolean es un tipo ordinal, que significa que tiene un núméro fijo de posibles va -lores que existen en un orden definido. Una variable lógica ocupa sólo un byte en memoria. Los va-lores lógicas son de tipo ordinal, y sus relaciones son:

faÍse < true

Página 3 de 19

Page 4: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

Tipos de datos definidos por el usuario

Todos los tipos de datos estudiados hasta ahora son de tipo simple, predefinidos por Turbo y listos para utilizar. Sin embargo, uno de los aspectos más potentes de Turbo Pascal es su capaci -dad para crear estructuras de datos a partir de estos datos simples. Los datos estructurados au -mentan la legibilidad de los programas y simplifican su mantenimiento.

Los tipos de datos definidas por el usuario se clasifican en:

Escalares definidos por el usuario (enumemdo y subrango) Registros Arrays Conjunto (set). Archivo (file). Puntero Procedimiento

Estos tipos de datos se verán en sucesivas clases.

Tipo cadena (string)

Un tipo string (cadena) es una secuencia de caracteres de cero o más caracteres correspon-dientes al código ASCII, escrito en una línea sobre el programa y encerrada entre apóstrofos.

El tratamiento de cadenas es una característica muy potente de Turbo Pascal que no contiene ISO Pascal estándar, aunque tiene mucha similitud con el tipo packed array.

Ejemplos'Turbo' 'Estás de acuerdo' #13#10 ‘,’

Notas

Una cadena sin nada entre las apóstrofos se llama cadena nula o cadena vacíaLa longitud de una cadena es el número de caracteres encerrados entre los apóstrofos.

CONSTANTES

Una constante es un valor que no puede cambiar durante la ejecución del programa, recibe un valor en el momento de la compilación del programa y este valor no puede ser modificado.

Las constantes pueden ser constantes literalesconstantes con nombres o declaradasconstantes expresión (sólo en la versión 5.0)constantes de tipos (tipeadas)

Las constantes deben ser declaradas antes de su utilización y pueden ser enteros o reales, caracte-res o cadenas de caracteres, conjuntos o arrays, e inclusive de tipo enumerado

Constantes literales

Una constante literal es un valor de cualquier tipo que se utiliza como tal.

VolumenEsfera := 4/3 * Pi * Radio * Rádio * Rádio,

Página 4 de 19

Page 5: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

4 y 3 son constantes literales de valores 4 y 3.Constantes con nombres

Son constantes que se identifican por un nombre y el valor asignado.

Formatoconst

identificador = valor,

Ejemplos

constPi = 3.141592; {lee un valor real}DosPi = 2 * Pi;Direccion = $06; { representa valor hexadecimal }caracter = 'B'; { es un carácter }cuenta = 625; { lee un entero }Epsilon = 1E-4; { lee un real }Esc = #27; { carácter de control }CRLF = ^M^J; { secuencia CR/LF. retorno de carro/avance de lineal }

En Pascal estándar, la declaración de constantes se sitúa inmediatamente después de la ca-becera Program. En Turbo Pascal no es obligatoria la situación anterior, pero si recomendable.

VARIABLES

Las variables son objetos cuyo valor puede cambiar durante la ejecución del programa. El cambio se produce mediante sentencia ejecutables.

Todas las variables de un programa Pascal deben ser declaradas antes de ser usa-das

Declaraciones var variable1 : tipo1; variable2 : tipo2; ......................... ......................... variableN : tipoN;

Ejemplos

NumeroEmpleado : Integer; { número de empleado }Horas : real; { horas trabajadas }Tasas : real; { tasa horaria }Edad : Integer; { edad del empleado }Apellidos : string [30]; { apellidos del empleado }Letra1, Letra2, Letra3 : char;Num1, Num2 : integer;

Página 5 de 19

Page 6: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

Notas

Es buena práctica de programación utilizar nombres de variables significativas que sugieren lo que ellas representan, ya que esto hace al programa más legible y fácil de comprender, también es buena práctica incluir breves comentarios que in-diquen cómo se utiliza la variable. Un comentario es cualquier frase encerrada en-tre llaves { } o bien entre signos (*, *)

SENTENCIAS

Las sentencias describen las acciones algorítmicas que pueden ser ejecutadas En general las sentencias se clasifican en, ejecutables (especifican operaciones de cálculos aritméticos y entradas/salidas de datos) y no ejecutables (no realizan acciones concretas, ayudan a la legibilidad del programa, pero no afectan en la ejecución del Programa). Las sentencias ejecutables aparecen en el cuerpo del programa a continuación de la palabra reservadaBegin

LA SENTENCIA DE ASIGNACION

La sentencia de asignación se utiliza para asignar (almacenar) valores o variables. La asigna-ción es una operación que sitúa un valor determinada en una posición de memoria. la operación de asignación se demuestra en pseudocódigo con el símbolo '', para denotar que el valor situado a su derecha se almacena en la variable situada a la izquierda

Formato

Variable expresión

variable identificador válido declarado anteriormenteexpresión variable, constante o una expresión o fórmula a evaluar

En Pascal el operador '-' se sustituye por el símbolo := , que se denomina operador de asignación

Variable := expresión

El valor de expresión se asigna a la variable.

Precaución

El tipo de expresión debe ser del mismo tipo que el de la variable.

Ejemplos

A :=16 ; 16 se asigna a la variable AInicial := 'LJ’; se asigna LJ a la variable InicialInterruptor :=true; se asigna el valor true. (verdadero) a InterruptorN1 := N2; el valor de la variable N1 se cambia por el valor de la variable N2N1 := N1 + 5; el valor de la variable N1 se incrementa en 5Car := #70; se asigna a la variable Car el carácter 70 del código ASCII, es decir ‘F’

Página 6 de 19

Page 7: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

Operaciones especiales de asignación

Contador Un contador es una variable que se incrementa, cuando se ejecuta, en una unidad o en una cantidad constante.

Contador .= 25 x: = 5 Contador := Contador + 1; x := x + 1;

N = 15N :=N + 1;

Al ejecutar Las sentencias de asignación, los nuevos valores de Contador y N son 25+1=26 y 50+1 =51.

Acumulador Es una variable que se incrementa en una cantidad variable.

Suma := Suma + x; x es una vanable

Si x vale 7 y Suma 40, el nuevo valor de Suma será 47

Las operaciones contador y acumulador son de gran utilidad en programación.

EXPRESIONES Y OPERACIONES ARITMETICAS

Las variables y constantes estudiadas anteriormente se pueden procesar utilizando operacio-nes y funciones adecuadas a sus tipos En este punto se examinarán las expresiones y operaciones que se utilizan con datos numéricos.

Operadores aritméticos: +, - , *, / Los operadores aritméticos (+,-, *) pueden ser utilizados con tipos enteros o reales. Si ambos

son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.

2+3 = 52+3.0 = 5.0

Operadores aritméticos div y mod Solo se pueden utilizar con enteros, la salida es otro entero. Div devuelve el valor de la di-

visión entera y Mod da el resto de la división entera.17 DIV 5 317 MOD 5 2Reglas de expresiones (prioridad)Se respeta las mismas prioridades del álgebra.

OPERACIONES ENTRADA/SALIDA

Los datos se pueden almacenar en memoria de tres formas diferentes: asociados con cons-tantes, asignados a una variable con una sentencia de asignación o una sentencia de lectura. Ya se han examinado las dos primeras. El tercer método, la sentencia de lectura, es cl más indicado si se desea manipular diferentes datos cada vez que se ejecuta cl problema. Además. la lectura de datos permite asignar valores desde dispositivos hasta archivos externos (por ejemplo, un teclado o una unidad de disco) en memoria se denomina operación de entrada o lectura

A medida que se realizan cálculos en un programa, se necesitan visualizar los resultados Esta operación se conoce como operación de salida o de escritura

Página 7 de 19

Page 8: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

En los algoritmos las instrucciones de entrada/salida escritas en pseudocódigo son:

leer (listas de variables entrada) leer (v. z, x)

escribir (listas de variables salida) escribir (a, b, c)

En Pascal todas las operaciones de entrada/salida se realizan ejecutando unidades de progra-ma especiales denominadas procedimientos de entrada/salida que forman parte del compilador Pascal y sus nombres son identificadores estándar:Procedimientos de entrada Read ReadLn procedimientos de salida Write WriteLn

La escritura de resultados (salida)

Los programas para ser útiles deben proporcionar información de salida (resultados) Esta sali -da toma información de la memoria y la sitúa (almacena) en: la pantalla, en un dispositivo de alma-cenamiento (disco duro o flexible), o en un puerto de E/S (puertos serie para comunicaciones o im-presoras, normalmente paralelos)

Procedimiento WriteLnEl propósito de WriteLn es escribir (visualizar) información en la pantalla

Formato

WriteLn (ítem, ítem..): 1

ítem el objeto que desea visualizar: un valor literal (entero, real, un carácter una cadena, o un valor lógico—true o false—). una constante con nombre, una variable, o una llamada a función

Cuando se ejecuta el procedimiento WriteLn, se visualizan todos los elementos en el orden da -do y en la misma línea. Al terminar de visualizar toda la línea, el cursor avanza (salta) al comienzo de la siguiente línea.

Procedimiento WriteComo se ha dicho, después de ejecutar el procedimiento WriteLn, el cursor avanza (salta) al

comienzo de la siguiente línea. Si se desea que el cursor quede en ;a misma línea se debe utilizar el procedimiento Write.

Formatos de salidaTurbo Pascal permiten controlar en cierta medida las instrucciones de salida que presentan

resultados. Es posible especificar el número de posiciones del campo de escritura. Para los núme-ros reales es posible precisar el número de decimales deseado.

Se pueden utilizar especificadores de formato de campo para definir dicha anchura.

x := 265.7892WriteLn(x :10 :4); 265.7892WriteLn(x :10 :2); 265.79WriteLn(x :6 :4); *********X := 14;WriteLn(x :4); 14X := ‘AB’

Página 8 de 19

Page 9: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

WriteLn(x :4); AB

Lo anteriormente expresado es válido para el proceso WRITE

Impresión de resultados (salidas a impresora)

Las salidas a pantalla se obtienen mediante los procedimientos Write y WriteLn. Si se desea enviar resultados a otro dispositivo, es preciso especificar el nombre del archivo como primer argu-mento de las instrucciones Write y WriteLn. Para poder realizar la operación de enviar salidas a la impresora, en lugar de a la pantalla, se necesita la unidad Printer.

Printer define un archivo llamado lst y asocia este archivo al puerto de comunicaciones LPTI (impresora) del DOS. Se pueden enviar datos a la impresora, incluyendo lst en las instrucciones Write y WriteLn.

Es preciso, sin embargo, definir previamente en la sección uses la unidad printer.

Ejemplouses

Printervar

.........................

begin.........................Write (Lst, 'el .......................... )WriteLn (Lst, 'pl............ ).........................end.

Este programa imprime en la impresora:Regla

Siempre que desee escribir en impresora, deberá incluir en su programa la línea uses printery luego añadir en cada sentencia Write/WriteLn la palabra lst

La entrada de datos (lectura)

Los datos que se pueden leer son: enteros, reales, caracteres o cadenas. No se puede leer un boolean o un elemento de tipo enumerado.

Los datos estructurados, arrays, registros o conjuntos, no se pueden leer globalmente y se suele recurrir a diseñar procedimientos específicos.

Los procedimientos de lectura son Read y ReadLn.

Formato

Read (van, var2, ...);

ReadLn (van, var2, ...);

Página 9 de 19

Page 10: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

var igual que WRITE La entrada de datos desde el teclado se hace un valor cada vez. Las instrucciones ReadLn y

Read esperan hasta que se pulsa la tecla INTRO (RETURN o ENTER) antes de asignar un valor a la variable.

EjemploReadLn (Nombre);ReadLn (Horas);Read (Tasas)

El usuario debe introducir los datos de entrada en el orden en que aparecen las instrucciones read,

Diferencias entre Read y ReadLn

En Read, después de pulsar la tecla INTRO, el cursor permanece inmediatamente después del último carácter introducido. En ReadLn, el cursor se envía al principio de la siguiente línea, tras pulsar la tecla INTRO.

No es aconsejable ingresar más de un dato por instrucción.

OPERACIONES BASICAS DE UTILIDAD

En este punto se describen dos utilidades:

Clrscr limpieza o borrado de la pantalla

GotoXY movimiento del cursor

El borrado (limpieza) de la pantalla: Clrscr

Las órdenes o procedimientos que podrá utilizar a partir de ahora: Clrscr y GotoXY, aunque posteriormente se volverán a mencionar. Ambos procedimientos pertenecen a la unidad Crt.

La orden (procedimiento) Clrscr borra (limpia) la pantalla (ventana actual) y sitúa el cursor en la esquina superior izquierda. Turbo Pascal considera las coordenadas de la esquina superior iz-quierda :1,1.

Para poder utilizar Clrscr, deberá declarar en la cláusula uses la unidad Crt.

Regla

Es una buena costumbre utilizar en todos los programas la unidad Crt, mediante la cláusula uses; ello permite el uso de Clrscr y GotoXY, entre otras rutinas de utilidad.

Movimiento del cursor

La orden (procedimiento) GotoXY mueve el cursor a la posición x, y, donde x es la columna (contando de izquierda a derecha) e y es la fila (contando de arriba-abajo).

GotoXY (x, y)

La esquina superior izquierda es 1.1. GotoXY requiere el uso de la unidad Crt.

Página 10 de 19

Page 11: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

EL ESTILO DE PROGRAMACIÓN

El buen estilo de programación es, sin lugar a duda, una de las características más notables que debe tener un programador. Un programa con buen estilo es más fácil de leer, de corregir -si contiene un error- y de mantener. Aunque la experiencia proporciona el estilo, existen una serie de reglas que se recomiendan seguir desde el principio del aprendizaje en programación.

Sangrado (indentación)

Aunque los programas escritos en Pascal no exigen reglas estrictas en su escritura, es prácti-ca habitual realizar sangrado en los bloques y unidades de programas fundamentales

Comentarios

La legibilidad de los programas aumenta considerablemente utilizando comentarios. Un co-mentario es un texto explicativo más o menos largo, situado en el programa e ignorado por el com-pilador. Los comentarios no se consideran (son invisibles) en la fase de compilación y ejecución, pe-ro de importancia primordial en las fases de análisis, puesta a punto y mantenimiento.

Los comentarios son una parte importante de la documentación de un programa, ya que ayu-dan al programador y a otras personas a la comprensión del programa. No es raro encontrar progra-mas en los cuales los comentarios ocupan más sitio, incluso, que las propias instrucciones.

Formato

{comentario}(* comentario *)

Cualquiera de los dos formatos pueden ser utilizados indistintamente. Los comentarios pue-den aparecer en una sola línea de programa, al final de una línea después de una sentencia, o em-bebido en una sentencia. En general se debe incluir en las diferentes partes de un programa, pero con la condición de que sean significativos. Se deben evitar comentarios superfluos o redundantes, como

A := B-C (el valor de B-C se asigna a A)

cuyo significado es evidente.

Es conveniente situar comentarios en la cabeza que al menos especifiquen: . el nombre del programador, . la fecha de la versión actual, . una breve descripción de lo que hace el programa

El siguiente programa ilustra modos de especificar comentarios.

program Prueba;{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}{programa escrito por : Juan Perez }{Fecha : }{Version : }{Nombre del archivo : }{Este programa permite listar direcciones postales}{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} const

Página 11 de 19

Page 12: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

Es posible anidar comentarios con delimitadores de tipo diferentes, pero no es posible con de-limitadores del mismo tipo. El programador puede tener libertad para los comentarios.

{un comentario puede extenderseen varias líneas o paginas de programas}{comentarios anidados (* como este caso *)}

Líneas en blanco

Otro medio de hacer un programa más legible es dejar líneas en blanco entre partes importan-tes o que estén lógicamente separados. Es muy frecuente dejar líneas en blanco entre la cabecera y la sección de declaraciones, entre sus diferentes partes, así como entre los procedimientos y fun-ciones, entre sí y con el programa principal, etc.

Elección de nombres de identificadores significativos

Las variables, constantes e incluso nombres de subprogramas y programas deben ser signifi-cativos para orientar al usuario sobre lo que representan: x, As, JJ no son identificadores significati-vos.

Salario := Horas * SalarioHoras;

Nomina_Mayor >= 10000;Nombre_Apellidos = 'Mortimer';

Los nombres es conveniente que comiencen con una letra mayúscula, y si son largos es pre-ferible utilizar palabras compuestas o con subrayado.

Evitar puntos y comas superfluos

Antes de las palabras end y until se puede suprimir el separador punto y coma. Los puntos y comas espurios pueden afectar al mal funcionamiento de un programa.

Líneas de programa mayores de 80 caracteres

El editor Turbo permite escribir líneas de hasta 126 caracteres de longitud, aunque en la panta lla sólo se ven 80 columnas a la vez. Utilizando las teclas HOME (Inicio), END (Fin) y de movimiento de cursor se puede desplazar el texto a izquierda y derecha.

Alinear operaciones (o separadores) en líneas consecutivas

Cuando diferentes líneas consecutivas contienen el mismo operador (o separador), es buena práctica alinear estos símbolos utilizando blancos si es necesario.

for j := 1 to 10 do (operador =)begin

Prueba := Random;Total := Total + Prueba;Valor [j]:= Prueba;WriteLn l'Estrella errante')

end;

Página 12 de 19

Page 13: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

Blancos no significativos

Poner un espacio en cada lado de un operador

if A = B then representa un blacoEncontrado := true;

Incluir un espacio después de los signos de puntuación: coma, punto y coma, dos puntos.

Otras reglas de escritura

Poner cada sentencia en una línea distinta. Las palabras reservadas program, const, var, procedure, function, uses, begin, end deben

ir en líneas distintas. Si una sentencia continúa en otra línea, se deben sangrar la(s) linea(s) siguientes. Insertar lineas en blanco antes de la sección const, var, uses, procedure, function y el be-

gin del programa principal; y en cualquier segmento o bloques de sentencias significativas. Utilizar espacios entre los elementos de una sentencia para hacerla más legible.

PUESTA A PUNTO DE PROGRAMAS

En esta sección se incluirán: Técnicas de resolución de problemas y de programación (diseño de programas), errores típicos de programación y estilo de programación.

Técnicas de programación (diseño de programas)

1. Los programas no pueden considerarse correctos hasta que han sido validados utili-zando un rango amplio de datos de test.

2. Los programas deben ser legibles y comprensibles.3. Utilizar comentarios significativos que describan el propósito de un programa o seg-

mentos de programas, así como elementos importantes de programas, variables, fun-ciones, etc.

4. Etiquetar todas las salidas producidas por un programa5. Los programas deben ser eficientes. Por ejemplo, cálculos innecesarios: Se deben

evitar calcular dos veces cualquier variable.6. Programas generales y flexibles. Deben ser relativamente fáciles de modificar para

solucionar un problema similar sin necesidad de cambiar mucho el programa. El uso de las constantes limita la flexibilidad.

7. Antes de utilizar variables, asegurarse de que son inicializadas por el programa.8. En programación interactiva, incluya siempre una línea con un mensaje de aviso al

usuario cuando desee introducir datos.9. Los programas deben hacer -en general- siempre "eco" de la entrada.

Antes de escribir un programa en Pascal se deben seguir los pasos:

Análisis del programa (entrada, salida, datos auxiliares y proceso). Diseño del algoritmo (con preferencia pseudocódigo), siguiendo -esencialmente- el

método descendente.

Página 13 de 19

Page 14: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

Errores típicos de programación

1. Las constantes reales deben tener al menos un dígito antes y al menos un dígito des-pués del punto decimal.

2. Las constantes de cadena deben estar encerradas entre apóstrofos (simples comillas). Un apóstrofo se representa con un par de apóstrofos 'Kant"s'.

3. Los paréntesis dentro de expresiones deben concordar. Tantos paréntesis a izquierda como a derecha.

4. La división entera se representa por div y la real por /.5. Las multiplicaciones deben ser indicadas por *.6. Puntos y comas (ausencia, exceso, superfluos).7. Debe haber un punto detrás del end final de cada programa.8. Todos los identificadores deben ser declarados.9. Todas las variables están inicialmente indefinidas (Turbo Pascal no sigue esta regla -

inicializa a cero o cadena vacia-, pero es conveniente la inicialización).10. Un signo igual (=) se utiliza en declaraciones de constantes o como signo igual. El ope-

rador := se utiliza en sentencias de asignación. No confundir = con := (ojo, programa-dores de BASIC).

11. Los problemas que implican números de tipo real no pueden utilizar test/comparacio-nes para comprobar exactitud de igualdad o desigualdad (= o < > ). Como los números están aproximados en la computadora, no tiene sentido la igualdad/desigualdad.

12. Es buena idea verificar errores tales como división por cero y raices cuadradas de números negativos dentro de un programa.

Estilo de programación

Un programa Turbo Pascal se prepara con el editor. Después de teclear el programa completo se sale al menú principal y se compila el programa. Si hay errores, se vuel-ve al editor; en caso contrario, se guarda y ejecuta.

Los errores de un programa pueden ser: sintaxis, en tiempo de ejecución y lógicos.

La planificación de un programa comienza con el análisis del problema [especificaciones de entrada y salida (E/S), el proceso necesario para producir la salida desde la entrada] y sigue con el algoritmo (pseudocódigo). Especialmente en programas grandes, seguir el diseño descendente y refinamiento sucesivo. A continuación debe realizarse la documentación externa, la escritura del programa con toda la documentación interna (comentarios) necesaria.

Ejemplo:

Se ingresan dos números enteros, obtener su suma.

ANÁLISIS

¿Qué ingresa?Dos números enteros

¿Qué sale?Otro número entero

¿Qué vincula la entrada con la salida?La operación suma

Página 14 de 19

Page 15: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

Pseudocódigo

InicioLeo A (entero)Leo B (entero)Obtengo C como suma de A y BImprimo CFin

Diagrama NS

InicioLeo ALeo BC A + BImprimo C

Fin

Código Pascal

program Sumas;{* Este es el primer programa en PASCAL *}{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *****}{* programa escrito por : Fernando Javier LAGE *}{* Fecha : 7 de abril de 1998 *}{* Version : 01 *}{* Nombre del archivo : progra01 *}{* Este programa permite sumar dos números enteros *}{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *-***}

usescrt,dos; {* declaraciones de librerias *}

constEnter = #13; {* declaraciones de constantes *}

{* type *} {* en este programa no hay declaraciones de tipos *}

var {* definici¢n de las variables *}A, B, C : Integer;

begin {* Comienzo del programa *}ClrScr;

{* Ingreso de datos *}Write ('Ingrese el primer valor ');ReadLn(A);Write ('Ingrese el segundo valor ');ReadLn(B);

{* Cálculo de los resultados *}

Página 15 de 19

Page 16: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

C := A + B;

{* Salida de la información *}WriteLn ('El resultado es = ', C:6);

{* Esta estructura se verá en próximas clases *}RepeatUntil Readkey = Enter

end. {* Fin del programa *}

Nota

En el ejemplo tenemos una típica estructura secuencial sin condiciones, ni ciclos repetitivos, como se verán en el próximo ejemplo

Las estructuras secuenciales son aquellas donde todas las instrucciones se ejecutan una después de la otra.

En ellas no hay repetición ni ejecución de un grupo seleccionado.

Un problema típico de este tipo de estructura es el siguiente.

Ejemplo:

Un comerciante requiere un programa que realice las siguientes tareas: Se ingrese el costo de un producto, a dicho costo le cargue un 30% y al valor así obtenido le incremente un 20% por IVA. El programa deberá sacar por pantalla el costo del producto, el precio final, y el valor del impuesto.

Pseudocódigo Diagrama N-S

Inicio gan 30.0Definir constantes iva 20.0Leer el costo Leer el costo

Calcular el costo más el 30% Costo1 costo * (1+gan/100)Calcular el valor del impuesto Impuesto costo1 * iva /100Calcular el Precio Precio Costo1 + ImpuestoImprimir Costo Imprimir CostoImprimir Impuesto Imprimir ImpuestoImprimir Precio Imprimir Precio

Fin

Página 16 de 19

Page 17: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

Código Pascal

program Primer_Ejemplo;{* Este es el primer programa en PASCAL *}{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *****}{* programa escrito por : Fernando Javier LAGE *}{* Fecha : 7 de abril de 1998 *}{* Version : 01 *}{* Nombre del archivo : progra01 *}{* Este programa permite sumar dos números enteros *}{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *-***}

usescrt,dos; {* declaraciones de librerias *}

const gan = 30.0;iva = 20.0; {* declaraciones de las constantes *}

var {* definición de las variables *}costo : real;costo1, impuesto, precio : real;

begin {* Comienzo del programa *}clrscr; {* Limpieza de pantalla *}write ('Ingrese el costo: '); {* Salida de mensaje *}readln (costo); {* Ingreso del dato *}costo1 := costo * (1 + gan/100); {* Cálculo de la ganancia *}impuesto := costo1 * (iva /100); {* Cálculo del impuesto *}precio := costo1 + impuesto; {* Cálculo del precio final *}writeln ('Costo : ', costo); {* Salida de mensaje y variable *}writeln ('Impuesto : ', impuesto); {* Idem anterior *}writeln ('Precio : ', precio); {* Idem anterior *}

end. {* Fin del programa *}

Documentación de un programa

La documentación de un programa, es el conjunto de todos los pasos, documentos necesarios para la creación y mantenimiento de un programa. El primer documento que tiene que existir en un programa es la solicitud del mismo, quien, porqué y para que lo solicita. El segundo es el contrato, sin un contrato no existe ningún proyecto de nada. En el queda especificado, el quien solicita el proyecto, el quien se hace responsable de su ejecución, el porque solicita el proyecto, el cuanto va a costar ($), el cuando va a estar listo, el como se pagará, que lo que se va a entregar.

La documentación se clasifica en documentación interna y externa

a) Documentación Interna: esta compuesta por los comentarios que le colocamos en el interior del programa fuente. Como dicho programa nunca se entrega (a menos que por contrato se especifique lo contrario), esta documentación es privada.

Página 17 de 19

Page 18: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

b) Documentación Externa: Como se dice comienza con la solicitud y continua con el contrato. Se subdivide esta documentación en pública y privada.

1. Privada: esta compuesta por todos aquellos documentos que solo esta en el dominio de la empresa que crea el programa. Esta compuesta por algoritmos matemáticos en que se basa el programas, diagramas de bloques, diagramas de estructuras, módulos, manuales internos.

2. Pública: esta compuesta por los manuales del usuario.

Ejercitación

1. Escribir un programa que lea 2 valores y que los muestre por pantalla

2. Al problema anterior agréguele el título en pantalla "LECTURA"

3. Modifique el problema anterior para que obtenga la suma de los dos valores, cambie el título por "SUMA" el cual debe aparecer subrayado, y antes del resultado debe aparecer el mensaje "El valor de la suma es XXX" (XXX es el resultado de la operación)

4. Escriba un programa en donde por pantalla se pida que ingrese su nombre, y como salida tenga el siguiente mensaje "Su nombre es HHHHHH" (HHHHH es el nombre ingresado).

5. Modifique el programa anterior de manera que se solicite el nombre a dos personas y aparezca un cartel que diga "Buenos días XXXXX y YYYYY .... ¿Comenzamos a trabajar?

6. Escribir un programa al cual ingrese la velocidad de un móvil expresada en metros por segundo e imprima en pantalla la velocidad en kilómetros por hora.

7. Modifique el programa anterior de manera tal que por pantalla aparezca el siguiente cartel. "Los XXX m/s equivalen a YYY K/H" (Donde XXX es el valor ingresado e YYY es el resultado)

8. Un constructor sabe que necesita 0,5 metros cúbicos de arena por metro cuadrado de revoque a realizar. Hacer un programa donde ingrese las medidas de una pared (largo y alto) expresada en metros y obtenga la cantidad de arena necesaria para revocarla.

9. Desarrollar un programa que dado el largo y el ancho de un campo, permita determinar cuantos metros de alambre serán necesarios para colocar le al perímetro 5 hilos de alambrado. Y que cantidad de Soja se espera obtener, si el rendimiento de la misma es 145 quintales por hectárea.

10. Escriba un programa que pida el ingreso del valor de cada una de las raíces de una ecuación cuadrática. En función de ellos reconstruya la ecuación y la muestre por pantalla.

11. Escriba un programa donde se ingrese el tiempo necesario para un cierto proceso en horas, minutos y segundos. Se calcule el costo total del proceso sabiendo que el costo por segundo es 0,25$. (Debe salir por pantalla el tiempo expresado en horas, minutos y segundos, el costo por segundo y el costo total)

12.Una farmacia aplica al precio de los remedios el 10% de descuento. Hacer un programa que ingresado calcule el descuento y el precio final. Sacando por pantalla la siguiente imagen: Precio de producto XXX.XX - Descuento YY.YY

Página 18 de 19

Page 19: Algoritmos & Programacion - III - Introduccion a Pascal - Estructuras Secuenciales

Algoritmos y Programación I

Clase Teórica Nº 3

Introducción a Pascal Estructuras Secuenciales

Autores : Ings. Cataldi - Lage

ALGORITMOS y PROGRAMACIÓN 75.40

Martes 14 a 17 HsJueves 14 a 17 Hs.

Prof. Ing. F. J. LAGE J.T.P. Ing. Z. CATALDIA.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

------------ Valor a pagar RRR.RR

13.La misma farmacia para la obra social OSZOPAPA, realiza el siguiente descuento: 70% por la obra social, y sobre ese resultado le aplica el 40% por cuenta de la propia farmacia (lo que ellos denominan el 70% + 40%). Cree un programa que calcule el precio final que pagará un afiliado a esa obra social por un remedio, y diseñe una salida equivalente a la del problema anterior.

14.Se necesita un programa que permita conocer el resultado del diseño de un tanque en forma de cilindro. Los datos que debe pedir el programa es el radio de la base y la altura. En función del mismo se calculará. Volumen que puede almacenar. Cantidad de chapa necesaria, cantidad que se debe pedir (ya que chapa circular no viene, viene en chapas rectangulares o cuadradas y el costo de la chapa es 2,25$ el metro cuadrado. Deberá salir por pantalla la siguiente información: Radio XXX m Altura YYY m Volumen ZZZ m cúbicos Chapa base y techo RRR * UUU m Chapa lateral LLL * JJJ m Sup. Total de la chapa SSS.SS m cuadrados Costo CCCC.CC $

15.Los propietarios de la pizzería "El Morón Binario" desean que se les haga un programa interactivo que solicite al usuario el diámetro de la pizza en centímetros y la cantidad de ingredientes extras que se quiere agregar. Como resultado de esto el programa deberá mostrar por pantalla el precio ce venta de la misma. Dicho precio se calcula de la siguiente manera.

a)El precio de venta de la pizza se obtiene recargando un 150% en costo total

b)El costo básico (pizza sin ingredientes extras) es de 0,016 $/cm2

c)El costo de cada ingrediente agregado a la pizza base es de 0,003 $/cm2

Se hace notar que como es un programa de tipo comercial la pantalla deberá tener el nombre de la pizzería en la parte superior de la pantalla y un saludo genérico para el cliente como "Buenos días señor" (puede reemplazarse por uno que sea personalizado, solicitandole el nombre al cliente y luego usándolo), y se le deberá solicitar cada dato "el usuario no es adivino" y mostrar el costo final.

Página 19 de 19