Módulo 5: Lenguaje Pascal: tipos de datos estructuras de ...

Post on 29-Oct-2021

8 views 0 download

Transcript of Módulo 5: Lenguaje Pascal: tipos de datos estructuras de ...

Técnologías en la educación matemática – Dra. Marcela Capobianco – 1 de 37

Tecnologías en la Educación Tecnologías en la Educación MatemáticaMatemática

Dra. Marcela CapobiancoDCIC - UNS

Módulo 5: Módulo 5: Lenguaje Pascal:Lenguaje Pascal:tipos de datos ­ tipos de datos ­ 

estructuras de controlestructuras de control

Técnologías en la educación matemática – Dra. Marcela Capobianco – 2 de 37

CopyrightCopyright● Copyright © 2010 M. Capobianco

● Se asegura la libertad para copiar, distribuir y modificar este documento de acuerdo a los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation, sin secciones invariantes ni textos de cubierta delantera o trasera.

● Una copia de esta licencia está siempre disponible en la página http://www.gnu.org/copyleft/fdl.html.

Técnologías en la educación matemática – Dra. Marcela Capobianco – 3 de 37

Tipos de datos en PascalTipos de datos en Pascal● Tipo de dato: es el conjunto de valores que

puede tomar un dato (en Pascal: una variable, una constante o una función)

● Tipos predefinidos en Pascal:– Integer: es un subconjunto de los números enteros

– Real: es un subconjunto de los números reales

– Boolean: es el conjunto {true, false} (valores lógicos)

– Char: es el conjunto de caracteres del código ASCII (letras, dígitos, y símbolos)

Técnologías en la educación matemática – Dra. Marcela Capobianco – 4 de 37

Ejercicios de repasoEjercicios de repaso● Escribir las siguiente expresiones aritméticas

en lenguaje Pascal:

2x+3y2-4z

x+yx-y

zx.y

a.x+b.y3

a.w-b.y

-a+br2-1

√a-1

√2 + a

Técnologías en la educación matemática – Dra. Marcela Capobianco – 5 de 37

Ejercicios de repasoEjercicios de repaso● Escribir un programa en Pascal para

intercambiar el contenido de dos variables leídas por teclado

● Para cada uno de los siguientes casos, definir dos constantes utilizando nombres significativos: precios, años, días, letras

Técnologías en la educación matemática – Dra. Marcela Capobianco – 6 de 37

Tipos de datos en PascalTipos de datos en Pascal● Indicar un tipo de dato apropiado para cada

una de las siguientes variables

Precio: Es_Nro_Primo:Letra:Dia:Mes:

Precio: Es_Nro_Primo:Letra:Dia:Mes:

NombreDia:

NombreMes:

ColorPrimario:

PaloDeBarajaEspanola:

NumeroDeCarta:

NombreDia:

NombreMes:

ColorPrimario:

PaloDeBarajaEspanola:

NumeroDeCarta:

Técnologías en la educación matemática – Dra. Marcela Capobianco – 7 de 37

Tipos de datos en PascalTipos de datos en PascalREALBOOLEAN: {true, false},CHAR {código ASCII}INTEGER {-32768, ..., 0, 1, ... 32767}

REALBOOLEAN: {true, false},CHAR {código ASCII}INTEGER {-32768, ..., 0, 1, ... 32767}

Tipos Predefinidos

Tipos Predefinidos

Tipos enumeradosTipos subrangosTipos enumeradosTipos subrangosTipos definidos

por el programador

Tipos definidos por el

programador

nos permiten ser más específicos, dando claridad y abstracción

nos permiten ser más específicos, dando claridad y abstracción

Técnologías en la educación matemática – Dra. Marcela Capobianco – 8 de 37

Dónde se definenDónde se definen

PROGRAM <nombre>;CONST {aquí se definen las constantes}TYPE {aquí el programador define los tipos }VAR {aquí declara las variables con su tipo}...

PROGRAM <nombre>;CONST {aquí se definen las constantes}TYPE {aquí el programador define los tipos }VAR {aquí declara las variables con su tipo}...

Técnologías en la educación matemática – Dra. Marcela Capobianco – 9 de 37

Redefinición de tiposRedefinición de tipos● El programador puede redefinir tipos TYPE Entero = integer;

Logico = boolean;NroReal = real;Letra = char;

VAR Precio : NroReal; Num: Entero;Es_Primo: Logico; Inicial: Letra;

. . . .

Inicial := ‘A’;Es_Par := (Num MOD 2 ) = 0

TYPE Entero = integer;Logico = boolean;NroReal = real;Letra = char;

VAR Precio : NroReal; Num: Entero;Es_Primo: Logico; Inicial: Letra;

. . . .

Inicial := ‘A’;Es_Par := (Num MOD 2 ) = 0

Técnologías en la educación matemática – Dra. Marcela Capobianco – 10 de 37

ConvencionesConvenciones● Se puede anteponer una T a las definiciones

de tipos (no es obligatorio, pero sí recomendable hacerlo)TYPE TEntero = integer;

TLogico = boolean; TNroReal = real;TLetra = char;

VAR Precio : TNroReal; Num: TEntero;

esPrimo: TLogico; Inicial: TLetra;

. . . .

TYPE TEntero = integer; TLogico = boolean; TNroReal = real;TLetra = char;

VAR Precio : TNroReal; Num: TEntero;

esPrimo: TLogico; Inicial: TLetra;

. . . .

Técnologías en la educación matemática – Dra. Marcela Capobianco – 11 de 37

Tipos enumeradosTipos enumerados● El programador puede definir nuevos tipos,

enumerando los valores que lo forman● Esos valores deben ser identificadores de

Pascal● Este tipo definido por el usuario se denomina

enumerado

Técnologías en la educación matemática – Dra. Marcela Capobianco – 12 de 37

Tipos enumeradosTipos enumerados

<nombre-tipo-enum>= ( ident-1, ident-2, ..., ident-N)<nombre-tipo-enum>= ( ident-1, ident-2, ..., ident-N)

valores posibles para el tipo (lista de identificadores

separados con coma)

valores posibles para el tipo (lista de identificadores

separados con coma)

nombre del tipo (identificador)

nombre del tipo (identificador)

Computadoras = ( IBM, Compaq, Toshiba , Sun, Apple)Computadoras = ( IBM, Compaq, Toshiba , Sun, Apple)

EjemploEjemplo

Técnologías en la educación matemática – Dra. Marcela Capobianco – 13 de 37

EjemplosEjemplosTYPE TipoColorprimario = (rojo, azul,amarillo);TipoPaloBaraja = (Oro,Copa,Espada,Basto);TDiasSemana = (lunes,martes,miercoles,jueves, viernes,sabado,domingo);VARNombreDia: TDiasSemana; ColorPrimario:TipoColorPrimario;PaloDeCarta:TipoPaloBaraja; ....

NombreDia := lunes; PaloDeCarta:=Basto;

TYPE TipoColorprimario = (rojo, azul,amarillo);TipoPaloBaraja = (Oro,Copa,Espada,Basto);TDiasSemana = (lunes,martes,miercoles,jueves, viernes,sabado,domingo);VARNombreDia: TDiasSemana; ColorPrimario:TipoColorPrimario;PaloDeCarta:TipoPaloBaraja; ....

NombreDia := lunes; PaloDeCarta:=Basto;

Técnologías en la educación matemática – Dra. Marcela Capobianco – 14 de 37

Tipos enumeradosTipos enumerados● Cuidado! Pascal prohibe utilizar las sentencias

write, writeln, read o readln con tipos enumerados definidos por el programador.

● Si V es una variable de un tipo enumerado definido por el programador, entonces....

read(V)read(V) readln(V)readln(V) write(V)write(V) writeln(V)writeln(V)

Técnologías en la educación matemática – Dra. Marcela Capobianco – 15 de 37

Tipos subrangosTipos subrangos● Los tipos ordinales son todos aquellos donde los

elementos están ordenados (según cierto criterio) ● Cada elemento (excepto el último) tiene un

sucesor y cada elemento (excepto el primero) tiene un predecesor

● Tipos ordinales predefinidos: integer, boolean, char● El programador puede definir nuevos tipos

subrangos, indicando un valor inicial y un valor final de un tipo ordinal cualquiera

Técnologías en la educación matemática – Dra. Marcela Capobianco – 16 de 37

Tipos ordinalesTipos ordinales

........ 00-32768-32768 -32767-32767 ........11 327663276622

Ej: INTEGEREj: INTEGERpredecesorpredecesor sucesorsucesor

MaxIntMaxInt

Ej: CHAREj: CHAR

........ ‘Z’‘Z’ ‘A’ ‘A’ ........‘a’‘a’ ‘b’‘b’ ‘c’‘c’........

predecesorpredecesor sucesorsucesor

Técnologías en la educación matemática – Dra. Marcela Capobianco – 17 de 37

Tipos SubrangosTipos Subrangos<nombre-subrango> = <valor-inicio>.. <valor-tope><nombre-subrango> = <valor-inicio>.. <valor-tope>

valores posibles para el tipo (todos los valores desde valor_inicio hasta valor_tope)

valores posibles para el tipo (todos los valores desde valor_inicio hasta valor_tope)

nombre del tipo (identificador)

nombre del tipo (identificador)

NotaAprobado = 4..10 ;NotaAprobado = 4..10 ;

EjemploEjemplo

Técnologías en la educación matemática – Dra. Marcela Capobianco – 18 de 37

EjemplosEjemplosTYPE

TNumeroMes = 1..12;

TNumeroDeCarta = 1..12;

TLetrasMayusculas = ‘A’ .. ‘Z’;

TDiasSemana = (lun,mar,mie,jue,vie,sab,dom);

TDiasLaborables = lun.. vie ;

TFinDeSemana = sab..dom;

Técnologías en la educación matemática – Dra. Marcela Capobianco – 19 de 37

Tipos OrdinalesTipos OrdinalesBOOLEAN: {false, true},CHAR {código ascii}INTEGER {-32768, ..., 0, 1, ... 32767}

BOOLEAN: {false, true},CHAR {código ascii}INTEGER {-32768, ..., 0, 1, ... 32767}

Tipos enumeradosTipos subrangosTipos enumeradosTipos subrangos

OperacionesCaracterísticas

OperacionesCaracterísticas

¿Por qué REAL no es ordinal?

¿Por qué REAL no es ordinal?

Tipos Ordinales

Tipos Ordinales

Pueden usarse los operadores relacionales< <= > >= <>

Pueden usarse los operadores relacionales< <= > >= <>

Pueden usarse las funciones pred, ord y succ

Pueden usarse las funciones pred, ord y succ

Técnologías en la educación matemática – Dra. Marcela Capobianco – 20 de 37

Funciones para Funciones para tipos ordinalestipos ordinales

● ORD ( V ): dado un valor V de un tipo ordinal T, devuelve la posición de V en la sucesión de valores de T

● Ejemplos: ORD(‘B’) es 66 ORD(3) es 3

Técnologías en la educación matemática – Dra. Marcela Capobianco – 21 de 37

EjemplosEjemplos● Dado el tipo

Tdias=(lun, mar, mie, jue,vie, sab,dom)ord(lun) es 0ord(mar) es 1ord(dom) es 6

● ord(false) es 0 y ord(true) es 1● lun < mar y sab < dom

Técnologías en la educación matemática – Dra. Marcela Capobianco – 22 de 37

Funciones para Funciones para tipos ordinalestipos ordinales

● PRED ( V ): dado un valor V de un tipo ordinal T, devuelve el valor anterior a V en la sucesión de valores de T

● PRED(‘B’) es ‘A’, PRED(3) es 2 y PRED(true) es false

● En Tdias=(lun, mar, mie, jue,vie, sab,dom)pred (dom) es sabpred(sab) es viepred(lun) no existe

Técnologías en la educación matemática – Dra. Marcela Capobianco – 23 de 37

Funciones para Funciones para tipos ordinalestipos ordinales

● SUCC( V ): dado un valor V de un tipo ordinal T, devuelve el valor siguiente a V en la sucesión de valores de T

● SUCC(‘A’) es ‘B’, SUCC(3) es 4 y SUCC(false) es true

● En Tdias=(lun, mar, mie, jue,vie, sab,dom)succ (lun) es marsucc(sab) es domsucc(dom) no existe

Técnologías en la educación matemática – Dra. Marcela Capobianco – 24 de 37

EjerciciosEjercicios● Definir tipos enumerados para representar los

siguientes datos:

a)Las provincias argentinas.

b)Los días de la semana.

c)Los meses del año.

d)Las cuatro estaciones del año.

e)Las vocales.

f) Los colores del arco iris.

g)Los doce signos del zodíaco.

Técnologías en la educación matemática – Dra. Marcela Capobianco – 25 de 37

EjerciciosEjercicios● Definir tipos subrangos para representar datos

como los siguientes. Se pueden usar los enumerados definidos anteriormente.– Las provincias de la mesopotamia argentina.

– Los días laborales de la semana.

– Los días del fin de semana.

– Las letras mayúsculas

– Los enteros no negativos.

– Los números naturales de tres cifras.

Técnologías en la educación matemática – Dra. Marcela Capobianco – 26 de 37

Estructuras de controlEstructuras de control● Las sentencias o estructuras de control nos

permiten especificar el flujo de control del programa

● Las sentencias de control en Pascal, que permiten programación estructurada son: – Asignación

– Secuencia

– Condicionales

– Repetitivas

– Llamadas a procedimientos

Técnologías en la educación matemática – Dra. Marcela Capobianco – 27 de 37

Sentencias simples y Sentencias simples y compuestascompuestas

Sentencia

o proposición

Sentencia

o proposición

simplesimple

compuestacompuesta

BEGIN <sentencia1>; <sentencia2>; ... <sentenciaK>END

BEGIN <sentencia1>; <sentencia2>; ... <sentenciaK>END

a:=1a:=1

Técnologías en la educación matemática – Dra. Marcela Capobianco – 28 de 37

Sentencia compuestaSentencia compuesta● Permite definir una secuencia de acciones.

Comienza con BEGIN y termina con END● Las sentencias que forman una sentencia

compuesta se separan una de otra con punto y coma

Técnologías en la educación matemática – Dra. Marcela Capobianco – 29 de 37

EjemploEjemploBEGIN

PrecioBase := 200;

Iva:= Precio * 0.20;

PrecioFinal:= PrecioBase + Iva;

END

BEGIN

PrecioBase := 200;

Iva:= Precio * 0.20;

PrecioFinal:= PrecioBase + Iva;

END

Técnologías en la educación matemática – Dra. Marcela Capobianco – 30 de 37

Uso del punto y comaUso del punto y coma

● El punto y coma se lo utiliza en Pascal como un “separador” de sentencias

writeln(‘Hola!’);

i := 1; j:=2; k:= 3;

writeln(‘Nada más’);

writeln(‘Hola!’);

i := 1; j:=2; k:= 3;

writeln(‘Nada más’);

writeln(‘Hola!’);

i := 1;

j:=2;

k:= 3;

writeln(‘Nada más’);

writeln(‘Hola!’);

i := 1;

j:=2;

k:= 3;

writeln(‘Nada más’);

equivalente

Técnologías en la educación matemática – Dra. Marcela Capobianco – 31 de 37

Uso del punto y comaUso del punto y coma● ¿Qué sucede cuando nos olvidamos de un

punto y coma?● ¿Cómo nos advierte el compilador de los

errores sintácticos?

Técnologías en la educación matemática – Dra. Marcela Capobianco – 32 de 37

Condicionales en Condicionales en PascalPascal

SI <condición>ENTONCES

< secuencia de acciones >

SI NO < secuencia de acciones >

SI <condición>ENTONCES

< secuencia de acciones >

SI NO < secuencia de acciones >

IF <expresión BOOLEAN>THEN < sentencia(simple o

compuesta) >

ELSE < sentencia (simple ocompuesta >

IF <expresión BOOLEAN>THEN < sentencia(simple o

compuesta) >

ELSE < sentencia (simple ocompuesta >

AlgoritmosAlgoritmos PascalPascal

Técnologías en la educación matemática – Dra. Marcela Capobianco – 33 de 37

EjemploEjemploPROGRAM Intercambio;

VAR A,B,AUX: INTEGER;BEGINREADLN(A);READLN(B);IF A = BTHEN WRITE(‘IGUALES’)ELSEBEGIN AUX := A; A := B; B := AUX;END;END.

PROGRAM Intercambio;

VAR A,B,AUX: INTEGER;BEGINREADLN(A);READLN(B);IF A = BTHEN WRITE(‘IGUALES’)ELSEBEGIN AUX := A; A := B; B := AUX;END;END.

ALGORITMO Intercambio;DATOS DE ENTRADA: A,B DATOS DE SALIDA: A,BDATOS AUXILIARES: AUX

COMIENZOPIDO(A)PIDO(B)SI A = BENTONCES MOSTRAR(‘IGUALES’)SINO AUX ← A A ← B B ← AUXFIN.

ALGORITMO Intercambio;DATOS DE ENTRADA: A,B DATOS DE SALIDA: A,BDATOS AUXILIARES: AUX

COMIENZOPIDO(A)PIDO(B)SI A = BENTONCES MOSTRAR(‘IGUALES’)SINO AUX ← A A ← B B ← AUXFIN.

Técnologías en la educación matemática – Dra. Marcela Capobianco – 34 de 37

EjerciciosEjercicios● Escribir un programa para que dados tres

números a, b, y c, calcule el producto de a y b si la diferencia entre a y b es mayor que c, de lo contrario, calcule el cociente entre a y b.

● Escribir un programa para determinar si un número n es par.

● Escribir un programa que reciba dos números naturales n y d, y determine si n es divisible por d.

Técnologías en la educación matemática – Dra. Marcela Capobianco – 35 de 37

EjerciciosEjercicios● Dado el sueldo básico de un empleado,

escribir un programa que calcule el monto final que debe abonársele sabiendo que si el sueldo básico es de p pesos por mes, debe agregarse un incremento calculado como un porcentaje a partir de p según la categoría a la que pertenezca:

– 0 < p < 800 : 10%– 800 <= p <2000 : 5%– 2000=p : 3%

Técnologías en la educación matemática – Dra. Marcela Capobianco – 36 de 37

EjerciciosEjercicios● Definir el tipo enumerado LetrasGriegas con

identificadores ALFA, BETA, DELTA, GAMMA y OMEGA ordenados en forma tal que respeten el siguientes conjuntos de criterios. Recordar que el ordinal del primer valor definido en el enumerado es 0– Pred(DELTA) es GAMMA

– OMEGA < GAMMA es False

– Ord(BETA) = 2

– Succ(OMEGA) = ALFA.

Técnologías en la educación matemática – Dra. Marcela Capobianco – 37 de 37

EjerciciosEjercicios● En una materia de la escuela, un alumno

aprueba un examen con A,B o C y lo desaprueba si se saca D o E. ¿Cuál de las siguientes definiciones de tipos es conveniente usar para una variable que represente la nota de un alumno? ¿Por qué?

a)Type Notas=(A,B,C,D,E);

b)Type Notas='A'..'E';

c)Type Notas=char;