2. Introducción
Desarrollado por Niklaus Wirth
(finales 60s)
Basado en ARGOL60
Diseñado para aprendizaje de la
programación
Lenguaje de alto nivel
Inicio de la programación
estructurada
Potente y flexible, muy extendido
Base para muchos lenguajes
modernos
3. Entornos de Programación
Múltiples compiladores y versiones
Entornos de pago:
Turbo Pascal, Microsoft Pascal…
Entornos gratuitos:
FreePascal, GNU Pascal, SURPas…
Pocas diferencias de uno a otro
Más extendido: Turbo Pascal (Borland)
4. Turbo Pascal Versión 7.0
Actualmente versión liberada (distribuida
de forma gratuita) por parte de Borland
Diseñada para Microsoft DOS
Totalmente
compatible
con Windows
6. Turbo Pascal Versión 7.0
Menú SEARCH Menú RUN
Buscar, remplazar, ir a Ejecutar, paso a paso,
línea, buscar errores, ejecutar hasta, reiniciar
buscar procedimientos… programa, introducir
parámetro
7. Turbo Pascal Versión 7.0
Menú COMPILE Menú DEBUG
Compilar, crear ejecutable, Puntos de parada, mostrar
recompilar archivo, el procedimiento que
mostrar información, elegir llama, abrir pantallas de
partes externas información
8. Turbo Pascal Versión 7.0
Menú TOOLS Menú OPTIONS
Mostrar mensajes, ir a Permite modificar muchas
otras partes del origen, funciones y componentes
ejecutar Grep (opcional) de varias partes del
compilador
9. Turbo Pascal Versión 7.0
Menú WINDOWS Menú HELP
Ordenar ventanas, Muestra la ayuda e
cerrarlas, pasar de unas a información general sobre
otras… el compilador y el lenguaje
10. EJERCICIO Nº 1
PLANTEAMIENTO DEL PROBLEMA: calcular la resistencia combinada en ohmios
cuando tres resistencias están conectadas en paralelo. La fórmula de la
resistencia combinada es: 1
1/Resistencia1 + 1/Resistencia2 + 1/Resistencia3
comenzamos por identificar todos los elementos que están
ANALISIS involucrados en el problema planteado y entender en qué
consiste la solución del mismo. Por ejemplo, llamaremos RC a la
resistencia combinada, R1, R2 y R3 a las resistencias 1, 2 y 3
respectivamente
observamos que la solución del problema consiste en resolver la
fórmula dada
ahora podemos responder las preguntas planteadas a
continuación.
11. ANALISIS
¿qué necesitamos ¿cómo obtener lo que ¿qué nos piden?
para obtener lo que nos piden?
nos piden?
ENTRADA PROCESO SALIDA
R1
1
R2 RC = RC
1/R1 + 1/R2 + 1/R3
R3
ESPECIFICACIÓN FUNCIONAL
12. DISEÑO
comienzo
1. COMIENZO (resistencia)
entrada entrada 2. LEER (R1, R2, R3)
1
proceso proceso 3. RC
1/R1+1/R2+1/R3
salida salida
4. ESCRIBIR (RC)
fin
5. FIN (resistencia)
algoritmo escrito
13. CODIFICACIÓN
Program resistencia;
Uses
1. COMIENZO (resistencia) comienzo crt;
Var
R1,R2,R3,RC: real;
Begin
ClrScr;
entrada Writeln(‘introduzca los valores de R1,R2 y R3’);
2. LEER (R1, R2, R3)
Readln(R1,R2,R3);
1
3. RC proceso RC:= 1/(1/R1+1/R2+1/R3);
1/R1+1/R2+1/R3
4. ESCRIBIR (RC)
salida Writeln(‘resistencia combinada:’,RC:6:3);
5. FIN (resistencia) fin End.
Codificación en Turbo Pascal
14. EDICIÓN
una vez realizada la codificación debemos introducir el programa fuente
al computador mediante el editor del Turbo Pascal y almacenarlo bajo un
nombre, en este caso: resistencia
FILE EDIT SEARCH RUN COMPILE DEBUG TOOLS OPTIONS WINDOW HELP
SAVE RESISTENCIA
Program resistencia;
Uses
crt;
Var
R1,R2,R3,RC:real;
Begin
ClrScr;
writeln (‘introduzca los valores de R1,R2,R3’);
readln (R1,R2,R3);
RC : = 1/(1/R1+1/R2+1/R3);
writeln (‘resistencia combinada= ‘,RC:6:3);
End.
15. COMPILACIÓN
Una vez almacenado el programa en la memoria del computador
procedemos a compilarlo; es decir, a verificar los posibles errores de
sintaxis que pueda tener mediante el comando COMPILE
COMPILE
CORREGIR
¿hay errores SI
de sintaxis?
NO
EJECUTAR
16. EJECUCIÓN
Corregidos los errores de sintaxis el programa puede ejecutarse mediante
el comando RUN obteniéndose como salida los resultados del mismo,
siempre que no existan errores de ejecución (por ejemplo: divisiones por
cero)
RUN
Introduzca los valores de R1,R2 ,R3
20 25 30
Resistencia combinada= 8.065
En Turbo Pascal se puede compilar y ejecutar un
programa utilizando solamente el comando RUN
17. VERIFICACIÓN Y DEPURACIÓN
Ahora debemos interpretar los resultados obtenidos y volver a ejecutar
el programa con una amplia variedad de datos para detectar posibles
errores de lógica; es decir, errores en el diseño de su algoritmo. De
presentarse errores de lógica en la prueba del programa debemos
encontrar la causa de los mismos y corregirlos
DEPURAR
¿hay SI
errores?
NO
DOCUMENTAR Y
MANTENER
18. Uso de Sentencias Básicas
Los programas en Pascal se dividen en
3 partes: cabecera, sección de declaraciones y
código de programa.
Cada subprograma adicional ha de contener
también estas 3 partes.
Obligatorio uso de “ ; ” al acabar cada
instrucción
19. Estructura de un Programa
Program identificador_programa; Var
{comentario} {Declaración de
Uses Variables}
x : integer;
CRT; begin
Const {Cuerpo principal}
{declaración de end.
constantes}
nombre_constante =
valor;
type
{Declaración de Variables
tipo}
Procedure / function
{Declaración de
Procedimientos y
funciones}
20. Estructura de un Programa
Cabecera:
Nombrar el programa
Palabra clave: program
21. Estructura de un Programa
Sección de declaraciones:
Definición de variables, constantes y
tipos de datos personalizados.
Palabras clave: var, const, type
22. Estructura de un Programa
Código de programa:
Todo el código a ejecutar
Palabras clave: begin y end.
23. Identificadores
Son los nombres de los objetos (variables, constantes,
etc…) que se usan en un programa.
Un identificador está formado por letras y dígitos y
underscore , empezando siempre con una letra.
No se distingue entre mayúsculas y minúsculas.
Las palabras reservadas del lenguaje no pueden usarse
como identificadores.
Todos los identificadores deben ser declarados antes de
usarlos.
24. Palabras reservadas
AND ARRAY BEGIN CASE
CONST DIV DO DOWNTO
Pascal Estandar y ELSE END FILE FOR
Turbo Pascal 6.0 FORWARD FUNCTION GOTO IF
IN LABEL MOD NIL
NOT OF OR PACKED
PROCEDURE PROGRAM RECORD REPEAT
SET THEN TO TYPE
UNTIL VAR WHILE WITH
ABSOLUTE ASM DESTRUCTOR
Turbo Pascal IMPLEMENTATION INTERFACE OBJECT
7.0 PRIVATE SHR UNIT
VIRTUAL CONSTRUCTOR EXTERNAL
INLINE INTERRUPT SHL
STRING USES XOR
25. Variables
Las variables deben ser declaradas en la
sección de declaraciones del programa.
var nombre_de_variable: TIPO de DATO;
Var
dia : integer;
pago : real;
letra : char;
exito : boolean;
a, b, c: integer;
2algo: integer; {no es válido)
a#123:real; {no es válido)
26. Constantes
A diferencia de las variables, las constantes no pueden
cambiar su valor durante la ejecución del programa.
La declaración de una constante empieza con la palabra
reservada CONST
Const nombre_constante = valor;
Ej :
Const pi = 3.14;
max = 20;
27. Tipos de Datos Simples
Números Enteros:
Integer (-32768;32767) utiliza 2 bytes
Byte (0;255)
ShorInt (-128;127)
LongInt (-2147483648; 2147483647)
Word (0;65535)
28. Tipos de Datos Simples
Números Reales:
Real (2.9e-39;1.7e38) utiliza 6 bytes
Single(1.5E-45 a 3.4E38) utiliza 8 bytes
Double (5.0E-324 a 1.7E308) utiliza 4 bytes
Los números reales deben llevar por fuerza al menos un dígito de cada lado del
punto decimal, así sea éste un cero.
Ejemplo, el número 5 debe representarse como: 5.0, el .5 como 0.5
29. Tipos de Datos Simples
Caracteres y alfanuméricos:
Boolean (TRUE; FALSE), utiliza 1 bit
Char utiliza 1 byte; alfanumérico. Los caracteres se
especifican entre apóstrofes. Ej. „a‟; „z‟
String longitud máxima 255 caracteres, pero es
posible definir uno mas pequeño utilizando el
siguiente formato: Variable : String[Tamaño];
Ej.: Var
Nombre: String[30];
30. Tipos de Datos
Ejemplo: Program prueba;
var
i:integer;
x:real;
letra:char;
Opcion:Boolean;
palabra:String;
begin
i:=0;
x:=2.85;
letra:=‟z‟;
Encontrado:=TRUE;
palabra:=‟zanahoria‟;
end.
31. Operadores
Aritméticos:
( , ),+, -, *, /.
div : división entera.
mod: resto.
Prioridad:
1. ( )
2. *, /, div , mod
3. + -
Si existe más de un operador perteneciente a un
mismo nivel, la prioridad va de izquierda a derecha.
33. Operadores
Nivel 1 not
Nivel 2 / * div mod and
Nivel 3 + - or
Nivel 4 < > = <= >= <>
ATENCION: Si existe más de un operador perteneciente a un
mismo nivel, la prioridad va de izquierda a derecha.
36. Entradas de Datos
read(lista de variables); Se leen las variables
con espacios en blanco entre ellas, dejando el
cursor en la misma línea.
readln(lista de variables); Se leen las variables
con espacios en blanco entre ellas, dejando el
cursor en la siguiente línea.
37. Salida de Datos
write(lista de variables); Se escriben las
variables sin espacios en blanco entre
ellas, dejando el cursor en la misma línea.
writeln(lista de variables); Se escriben las
variables sin espacios en blanco entre
ellas, dejando el cursor en la siguiente
línea.
38. Ejemplos
En caso de que la variable Nombre almacenara el valor 'Rodrigo ', la variable
ApellidoP 'González ' y la variable ApellidoM 'García„.
Write (Nombre);
Write (ApellidoP);
Write (ApellidoM);
Rodrigo González García
WriteLn (Nombre);
WriteLn (ApellidoP);
WriteLn (ApellidoM);
Rodrigo
González
García