Documente Academic
Documente Profesional
Documente Cultură
PROGRAMACIÓN
Los pasos necesarios para la creación de un programa son:
1. Análisis
2. Diseño del algoritmo
3. Construcción del programa (en un lenguaje de programación)
4. Ejecución
5. Validación
6. Mantenimiento
ALGORITMO
Es una secuencia ordenada de pasos - sin ambigüedades -, repetible, que es solución de un deter-
minado problema.
Las características fundamentales que debe cumplir todo algoritmo son:
a) Debe ser preciso e indicar el orden de realización de cada paso
b) 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 pro-
pósito general, compilable, estructurado y procedimental.
Un lenguaje compilable significa que todo programa será deberá pasar por los siguientes pasos:
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 Lenguaje de Má-
quina (Assembler).
c) Pasa posteriormente al Linkeador (o montador), une los distintos módulos que pueden
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 colecti-
vamente como datos. Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple ca-
rácter, tal como 's', un valor entero tal como 35 o un número real tal como 1415,92. Una operación de su-
ma no tiene sentido con caracteres, sólo con números. Por consiguiente, si el compilador 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 alma-
cenan de modos diferentes. A menos que el programa conozca el tipo 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 programas
2. Determinar cómo ejecutar las operaciones
Pascal se conoce como lenguaje "fuertemente tipeado" (strongly.typed) o de tipos fuertes. Esto
significa que todos los 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 programación antes que el pro-
grama 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 detecta muchos de esos errores
Página 1 de 15
El tipo de un dato determina la naturaleza del conjunto de valores que puede tomar una variable.
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.
Integer
Boolean
Ordinales Char
Tipos Simple Enumerado
Subrango
No Ordinales Reales
Tipos Enteros
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 internas Hi y Lo
Hi devuelve el byte de mayor peso de los dos bytes de memoria
Lo devuelve el byte de menor peso
Números Reales
Una cadena sin nada entre las apóstrofos se llama cadena nula o cadena vacía
La 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 literales
constantes con nombres o declaradas
constantes 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, caracteres o
cadenas de caracteres, conjuntos o arrays, e inclusive de tipo enumerado
Página 3 de 15
Constantes literales
Una constante literal es un valor de cualquier tipo que se utiliza como tal.
VolumenEsfera := 4/3 * Pi * Radio * Radio * Radio,
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.
Formato
const
identificador = valor,
Ejemplos
const
Pi = 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 }
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 usadas
Declaraciones
var
variable1 : tipo1;
variable2 : tipo2;
.........................
.........................
variableN : tipoN;
Ejemplos
Página 4 de 15
Notas
Es buena práctica de programación utilizar nombres de variables significativas que su-
gieren 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 indiquen cómo
se utiliza la variable. Un comentario es cualquier frase encerrada entre llaves { } o bien
entre signos (*, *)
SENTENCIAS
Las sentencias describen las acciones algorítmicas que pueden ser ejecutadas En general las sen-
tencias 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 reservada
Begin
LA SENTENCIA DE ASIGNACION
La sentencia de asignación se utiliza para asignar (almacenar) valores o variables. La asignació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 alma-
cena en la variable situada a la izquierda
Formato
Variable ← expresió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 A
Inicial := 'LJ’; se asigna LJ a la variable Inicial
Interruptor :=true; se asigna el valor true. (verdadero) a Interruptor
N1 := N2; el valor de la variable N1 se cambia por el valor de la variable N2
N1 := N1 + 5; el valor de la variable N1 se incrementa en 5
Car := #70; se asigna a la variable Car el carácter 70 del código ASCII, es decir ‘F’
Procedimiento WriteLn
El propósito de WriteLn es escribir (visualizar) información en la pantalla
Formato
Página 6 de 15
Cuando se ejecuta el procedimiento WriteLn, se visualizan todos los elementos en el orden dado 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 Write
Como se ha dicho, después de ejecutar el procedimiento WriteLn, el cursor avanza (salta) al co-
mienzo de la siguiente línea. Si se desea que el cursor quede en ;a misma línea se debe utilizar el proce-
dimiento Write.
Formatos de salida
Turbo Pascal permiten controlar en cierta medida las instrucciones de salida que presentan resulta-
dos. Es posible especificar el número de posiciones del campo de escritura. Para los números reales es
posible precisar el número de decimales deseado.
Se pueden utilizar especificadores de formato de campo para definir dicha anchura.
x := 265.7892
WriteLn(x :10 :4); 265.7892
WriteLn(x :10 :2); 265.79
WriteLn(x :6 :4); *********
X := 14;
WriteLn(x :4); 14
X := ‘AB’
WriteLn(x :4); AB
.........................
begin
.........................
Write (Lst, 'el .......................... )
WriteLn (Lst, 'pl............ )
.........................
end.
Regla
Es una buena costumbre utilizar en todos los programas la unidad Crt, mediante la cláu-
sula uses; ello permite el uso de Clrscr y GotoXY, entre otras rutinas de utilidad.
GotoXY (x, y)
La esquina superior izquierda es 1.1. GotoXY requiere el uso de la unidad Crt.
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 re-
comiendan seguir desde el principio del aprendizaje en programación.
Página 8 de 15
Sangrado (indentación)
Aunque los programas escritos en Pascal no exigen reglas estrictas en su escritura, es práctica
habitual realizar sangrado en los bloques y unidades de programas fundamentales
Comentarios
La legibilidad de los programas aumenta considerablemente utilizando comentarios. Un comentario
es un texto explicativo más o menos largo, situado en el programa e ignorado por el compilador. Los co-
mentarios no se consideran (son invisibles) en la fase de compilación y ejecución, pero 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 ayudan al
programador y a otras personas a la comprensión del programa. No es raro encontrar programas en los
cuales los comentarios ocupan más sitio, incluso, que las propias instrucciones.
Formato
{comentario}
(* comentario *)
Cualquiera de los dos formatos puede ser utilizado indistintamente. Los comentarios pueden apare-
cer en una sola línea de programa, al final de una línea después de una sentencia, o embebido 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
program Prueba;
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{programa escrito por : Juan Perez }
{Fecha : }
{Version : }
{Nombre del archivo : }
{Este programa permite listar direcciones postales}
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
const
Es posible anidar comentarios con delimitadores de tipo diferentes, pero no es posible con delimita-
dores del mismo tipo. El programador puede tener libertad para los comentarios.
{
un comentario puede extenderse
en 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 importantes 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 funciones, entre sí y
con el programa principal, etc.
Página 9 de 15
Salario := Horas * SalarioHoras;
for j := 1 to 10 do (operador =)
begin
Prueba := Random;
Total := Total + Prueba;
Valor [j]:= Prueba;
WriteLn('Estrella errante')
end;
Blancos no significativos
Poner un espacio en cada lado de un operador
Página 10 de 15
5. 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 solucio-
nar un problema similar sin necesidad de cambiar mucho el programa. El uso de las cons-
tantes 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.
Estilo de programación
Un programa Turbo Pascal se prepara con el editor. Después de teclear el programa com-
pleto se sale al menú principal y se compila el programa. Si hay errores, se vuelve 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 su-
cesivo. 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?
Página 11 de 15
Otro número entero
¿Qué vincula la entrada con la salida?
La operación suma
Pseudocódigo
Inicio
Leo A (entero)
Leo B (entero)
Obtengo C como suma de A y B
Imprimo C
Fin
S
Diagrama N
Inicio
Leo A
Leo B
C←A+B
Imprimo 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 *}
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *-***}
uses
crt,dos; {* declaraciones de librerias *}
const
Enter = #13; {* declaraciones de constantes *}
{* type *} {* en este programa no hay declaraciones de tipos *}
var {* definici¢n de las variables *}
A, B, C : Integer;
{* Ingreso de datos *}
Write ('Ingrese el primer valor ');
ReadLn(A);
Write ('Ingrese el segundo valor ');
ReadLn(B);
{* Salida de la información *}
WriteLn ('El resultado es = ', C:6);
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
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 *}
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *-***}
uses
crt,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;
Documentación de un programa
Ejercicios
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 can-
tidad 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 cua-
drá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, minu-
tos y segundos. Se calcule el costo total del proceso sabiendo que el costo por segundo es 0,25$.
Página 14 de 15
(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 in-
gresado calcule el descuento y el precio final. Sacando por pantalla la siguiente imagen:
Precio de producto XXX.XX
-
Descuento YY.YY
------------
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 deno-
minan 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 ci-
lindro. Los datos que debe pedir el programa es el radio de la base y la altura. En función del mis-
mo 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
2
b) El costo básico (pizza sin ingredientes extras) es de 0,016 $/cm
2
c) El costo de cada ingrediente agregado a la pizza base es de 0,003 $/cm
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, solicitándole el nombre al cliente y lue-
go usándolo), y se le deberá solicitar cada dato "el usuario no es adivino" y mostrar el costo final.
Página 15 de 15