• No se han encontrado resultados

Fundamentos de Lenguajes de Programación Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

N/A
N/A
Protected

Academic year: 2019

Share "Fundamentos de Lenguajes de Programación Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos"

Copied!
62
0
0

Texto completo

(1)

Lenguaje Pascal:

Conceptos básicos

Fundamentos de Lenguajes de Programación

(2)

Indice

 Introducción

 Estructura del programa  Reglas sintácticas

 Tipos de datos

 Estructuras de control  Array: vectores

(3)

•Lenguaje de alto nivel

•Desarrollado en Alemania a fines de la década del 70 por Niklaus Wirth.

•La idea fue crear un lenguaje que permitiese la enseñanza y el aprendizaje de la programación.

•No toma en consideración las letras estén en mayúsculas o minúsculas.

(4)
(5)
(6)

Estructura de un programa

 La estructura de un programa en pascal consta de un

encabezamiento y un bloque.

 En el encabezamiento se especifica nombre del

programa, y los nombres de los archivos externos que se usan para entrada de datos y salida de

resultados.

 En el bloque esta dividido en dos partes:

 Parte de declaraciones: donde se declaran todos los datos

y las rutinas.

 Sección ejecutable: que contiene todas las sentencias

(7)

Reglas sintácticas

 El punto y coma ( ; ) y el punto ( . ) son

delimitadores en Pascal.

 ( ; ): separa sentencias consecutivas, también se usa

para terminar encabezamiento de un programa y las declaraciones de los datos.

 ( . ): indica final del programa.

BEGIN y END son delimitadores no son sentencias,

con ellas se indica el inicio y el final de la sección ejecutable.

(8)

Identificadores: Reglas

 Sirven para nombrar las constantes, las variables, etc.

 Reglas:

 Pueden estar compuestos de caracteres alfabéticos, numéricos,

y el carácter de subrayado ( _ ).

 Deben comenzar con un carácter alfabético o carácter de

subrayado.

 Pueden ser de cualquier longitud (solo los 63 caracteres son

significativos)

 No se hace distinción entre mayúsculas y minúsculas.

(9)

Ejemplos de identificadores

Identificadores validos:

 Nombre

 Cadena

 Edad_maxima

 x_y_z  Etiqueta1

Identificadores no validos

 Num&dias (carácter & no valido)

(10)

Declaraciones:

Sección declaraciones:

 Todas las entidades definidas por el usuario que se usan en un programa debe ser declarados en esta sección, indicando un identificador y lo que representa:

Etiquetas ( Label ) Constantes ( const ) Tipos (Type ) Variables ( var )

(11)

Declaraciones

 No es necesario que un programa contenga

declaraciones en toda sus categorías anteriores.

 Ejemplos:

Type estaciones =(primavera, verano, otoño,

invierno);

(12)

Operador de asignación

La combinación de símbolos := es el operador de

(13)

Tipos de Datos

Integer: número entero entre -32,768 y 32,767

LongInt: número entero entre -2*10^31 y 2*10^31 - 1  Real: número con coma decimal entre 2.9*10-39^y

1.7*10^38

String: cadena de caracteres (conjunto de números, letras, símbolos; palabras y frases)

Char: un caracter (un dígito o una letra o un símbolo)

Boolean: Pueden tomar dos valores True (verdadero) False (falso).

(14)

Tipos Ordinales

Un tipo ordinal representa una secuencia ordenada de valores individuales, a los que se pueden aplicar los conceptos de predecesor y sucesor (Ej. enteros, carácter, booleanos).

(15)

Tipos Definidos por el Usuario

Existen dos tipos de datos simples definidos por el usuario:

Tipos enumerados: Se componen de una lista de identificadores encerrados entre paréntesis y separados por comas.

(16)

• Los tipos enumerados son ordinales. Cada uno lleva asociado un número entero: al primero se le asigna el 0, al segundo un 1, y así sucesivamente, por lo que no es independiente el orden de declaración.

• Un valor de tipo enumerado no puede pertenecer a dos declaraciones de tipo distintas y no pueden leerse desde teclado, ni escribirse en pantalla.

(17)

Type

Estaciones = (primavera, verano, otoño, invierno);

Colores = (rojo, amarillo, verde, azul, violeta);

(18)

Tipos Subrango. Ejemplos

Notación:

Type

Identificador = primerelemento..ultimoelemento;

Ejemplos:

(19)

Operaciones de entrada y

salida

 Salida:

 write o writeln(nombreArchivo, nombreVariable)

 Salida o escritura:

 write o writeln(argumento)

 Sentencia de entrada o lectura:

(20)

Array

Es una estructura homogénea que esta

constituido por componentes del mismo tipo, llamado tipo base.

Sintaxis:

Type T = ARRAY [ I ] of To

(21)

Ejemplos Tipos

Type

Vector = ARRAY[1..5] OF INTEGER; Vec_1 = ARRAY[1..5] OF REAL;

Linea = ARRAY[1..80] OF CHAR; nombres = array[1..30] OF CHAR; Var

v1 : Vector ; a : Vec_1; L : Linea;

(22)

Ejemplos Tipos

{programa que inicializa un vector de 0..5 elementos}

Program demo7;

Uses crt;

Type vector = array[1..5] of integer;

Var

a : vector; i : integer;

Begin clrscr;

for i:=0 to 5 do begin

a[ i ] := 0;

(23)

String: Cadenas de Caracteres

Las cadenas de caracteres son arrays especiales.

Una cadena de caracteres (string) consiste en una serie o secuencia de caracteres cuyo número (longitud) puede estar entre 0 y 255.

Se puede definir la longitud de la cadena poniendo string [n] donde n está entre 0 y 255.

Longitud física: corresponde al máximo número de caracteres que puede almacenar.

(24)

Operaciones y Tratamiento de

cadenas

Las dos operaciones básicas son: •Comparación

Concatenación.

Operador de concatenación (+) Se utiliza para reunir varias cadenas en una sola

Ejemplo: Cad1:='esto es un ejemplo ';

(25)

Operaciones y Tratamiento de

cadenas

La función concat realiza la misma función que el operador de concatenación. La sintaxis es:

Function concat (cad1,cad2,...:string): string;

La cadena vacía o nula se representa con dos caracteres

apóstrofes seguidos ' '.

El acceso a los elementos de una cadena individualmente se hace como si fuera un array.

Ejemplo: cad1:='ejemplo';

(26)

Operaciones y Tratamiento de

cadenas

La función Length proporciona la longitud lógica de una cadena de caracteres.

Ejemplo:

Longitud:=length(cad1);

(27)

Funciones de tratamiento de

cadenas

Instrucción Función

COPY Extrae una subcadena de caracteres de otra cadena de caracteres

Copy (cadl,po,num) po: primera posición del caracter a extraer. Num: número de caracteres que se extraen. Po y Num deben ser enteros

POS Determina si una cadena es subcadena de otra, en caso afirmativo devuelve la posición donde comienza la subcadena, en caso negativo devolvería cero.

Pos (subcadena,cadena)

(28)

Funciones de tratamiento de

cadenas

Instrucción Función

INSERT Inserta una cadena de caracteres en otra a partir de una posicion dada.

Insert (subcadena,destino,posicion)

Subcadena: Cadena a insertar

Destino: Cadena donde se va a insertar

Posicion: Lugar a partir del cual se va a insertar

UPCASE Devuelve el caracter mayúscula

Upcase(x)

(29)

Funciones de tratamiento de

cadenas

Instrucción Función

VAL Procedimiento inverso a Str, es decir, devuelve el valor numérico de una cadena.

Val(cad,variable,codigo)

Cad: la cadena a convertir en valor numérico. Variable: el numero que se obtenga.

(30)

Instrucción Función

Abs(x) Proporciona el valor absoluto de una variable numérica x. ArcTan(x) El arco cuya tangente es x.

Chr(x) Devuelve el carácter ASCII de un entero entre O y 255. Cos(x) Proporciona el valor del coseno de x.

Exp(x) La exponencial de x(eX). Frac(x) Parte decimal de x.

Int(x) Parte entera de x.

Ln(x) Logaritmo neperiano de x.

Odd(x) True si x es impar, y false si es par.

(31)

Instrucción Función.

Round(x) Entero más próximo al valor x.

Succ(x) Ordinal siguiente a la variable ordinal x. Sin(x) Seno de x.

Sqr(x) Cuadrado de x.

Sqrt(x) Raiz cuadrada de x, para x>=O. Trunc(x) Parte entera de x.

(32)

Estructuras de Control

Se denominan estructuras de control a aquellas que determinan qué instrucciones deben ejecutarse y qué número de veces.

Existen dos tipos de estructuras de control: •alternativas o de selección

(33)

Estructuras Alternativas

Son aquellas que bifurcan o dirigen la ejecución de un programa hacia un grupo de sentencias u otro dependiendo del resultado de una condición. Las dos sentencias alternativas de Pascal son:

(34)

IF THEN ELSE

IF (expresión lógica o booleana)

THEN

Sentencia1 (simple o compuesta)

ELSE

(35)

Ejemplo

Ejemplo:

IF n>0 then Writeln (`Número positivo');

IF n>0 then

Writeln (`Número positivo');

ELSE

Writeln (`Negativo o cero');

(36)

CASE OF

CASE (expresión o variable) OF

(lista de constantes1):(sentencia1); (lista de conslantes2):(sentencia2); (lista de constantes3):(senteneia3); ...

(37)

Ejemplo

Program menu;

Var

numerodia: integer;

Begin

Write('introduzca el ordinal de un día laborable de la semana:'); Readln (numerodia);

Write (`Hoy es ');

Case numerodia Of

(38)

Estructuras Repetitivas

Son aquellas que crean un bucle (repetición continua de un conjunto de instrucciones) en la ejecución de un programa respecto de un grupo de sentencias en función de una

condición.

Las tres sentencias repetitivas de Turbo Pascal son:  SENTENCIA WHILE

(39)

Sentencia While

(40)

Sentencia While

WHILE condición DO

BEGIN

(sentencia1);

...

(sentenciaN);

(41)

Ejemplo

Escribir los N primeros números naturales, donde N es un valor introducido por el usuario.

Program escribeEnteros;

Var N,contador: integer;

Begin

Write ('Introduzca numero máximo de enteros: '); Readln (N); Contador:=1;

While contador<=N do

Begin

(42)

Sentencia Repeat Until

Ejecuta las sentencias comprendidas entre

las palabras reservadas

REPEAT

y

UNTIL

(43)

Sentencia Repeat Until

REPEAT

begin

(Sentencia); (Sentencia);

... end;

(44)

Ejemplo

Program escribeEnteros;

Var N,contador:integer;

Begin

Write ('Introduzca número máximo de enteros: '); Readin (N); Contador:= 0;

Repeat

(45)

Sentencia For

Repite la ejecución de una o varias sentencias un número fijo de veces. previamente establecido.

Necesita una variable de control del bucle que es necesariamente de tipo ordinal, ya que el bucle se ejecuta mientras la variable de control toma una serie consecutiva de valores de tipo ordinal, comprendidos entre dos valores extremos (inferior y superior).

(46)

Sentencia For

Formato ascendente:

FOR variablecontrol:=valorinicial TO valorfinal DO

(sentencia);

Formato descendente:

FOR variablecontrol:=valorincial DOWNTO valorfinal DO

(sentencia);

(47)

Ejemplo

Program escribeEnteros;

Var N,contador: integer; Begin

Write ('Introduzca numero máximo de enteros: '); Readln (N);

For contador:=1 to n do

Write (contador); Writeln;

(48)

Registros

Un registro es una estructura heterogénea de datos, denominados campos y a los que accedemos por nombre.

Al igual que cualquier otro dato, el tipo registro (Record) antes de poder ser utilizado debe ser declarado en la sección Type.

(49)

Ejemplo

Type

Tiporegistro = record

Campo 1 :tipol;

. .

Campo N : tipoN; End;

Var

(50)

Ejemplo

Type

Empleado = record

apeynom : string;

EstadoCivil: (casado, viudo, soltero, divorciado); Sexo: (M, F);

Antig: integer; Salario: real; End;

Var

emp1 : Empleado;

(51)

Procedimientos y Funciones

Pascal ofrece dos herramientas básicas para realizar programación descendente:

•los procedimientos (procedure) •las funciones (function),

(52)

Declaración de procedimiento

Cabecera procedure nombreproced (lista de parámetros);

Declaraciones const

Locales

Type...

Var...

Declaración de otros procedimientos y funciones

Cuerpo begin

(53)

Ejemplo: Procedimiento

Ejemplo.:

Procedure Identificador (PF1 :tipol ;PF2:típo2; var PW:tipo3);

PFl y PF2 se pasan por valor.

(54)

Declaración de función

Cabecera function nombrefunc (lista de parámet.):tiporetornado;

Declaraciones const

Locales

Type...

Var...

Declaración de otros procedimientos y funciones

Cuerpo begin

(55)

Ejemplo: Función

Ejemplo.:

function Identificadorf (PF1 :tipol ;PF2:típo2):integer;

(56)

Llamada a un procedimiento

Se realiza desde el programa principal indicando el identificador del procedimiento seguido de la lista de parámetros actuales encerrados entre paréntesis y separados por comas.

(57)

Llamada a una función

Se realiza desde el programa principal indicando el identificador de la función seguido de la lista de parámetros actuales encerrados entre paréntesis y separados por comas. Asignándolo a una variable o invocándolo dentro de una condición.

Ejemplo:

a := Identificadorf (PAl ,PA2);

(58)

Ejemplo: Procedimiento para intercambiar los valores de dos variables.

Procedure intercambio (var pfl ,p12:integer);

Var

Aux:integer; {variable local uso exclusivo en procedimiento}

Begin

Aux := pfl; Pfl := pf2; Pfl := aux

(59)

{La llamada a este procedimiento se haría ...} {... por ejemplo desde el siguiente programa:}

Program Uno;

Uses crt;

Var Entero 1 ,entero2 : integer;

Procedure intercambio (var pfl ,p12:integer); ...

begin

clrscr; {*borrado de pantalla*}

Write ('introduzca 2 variables enteras: '); Readln(entero1,entero2);

Writeln ('valores de las variables antes de la llamada'); Writeln ('Entero 1 = ',enterol,'entero 2 = ',entero2);

intercambio (enterol,entero2); {llamada al procedimiento} Writeln ('Valor de las variables después de la llamada'); Writeln ('entero 1 = ',enterol,'entero 2 = ',entero2);

(60)

Ejemplo: Función que, dados dos números a y b, retorna a*b si a<b, sino retorna a+b

Function suma_prod (a, b:integer): integer;

Begin

if a<b then suma_prod:=a*b; else suma_prod:=a+b;

End;

(61)
(62)

Próximas clases

Clases prácticas:

 Martes 25/08/15  Jueves 27/08/15

Clase teórica:

Referencias

Documento similar

You may wish to take a note of your Organisation ID, which, in addition to the organisation name, can be used to search for an organisation you will need to affiliate with when you

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)