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

37
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ática Matemática Dra. Marcela Capobianco DCIC - UNS Módulo 5: Módulo 5: Lenguaje Pascal: Lenguaje Pascal: tipos de datos - tipos de datos - estructuras de control estructuras de control

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

Page 1: 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

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

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.

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

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)

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

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

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

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

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

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:

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

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

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

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}...

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

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

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

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;

. . . .

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

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

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

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

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

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;

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

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)

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

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

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

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

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

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

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

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;

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

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

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

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

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

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

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

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

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

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

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

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.

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

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.

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

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

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

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

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

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

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

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

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

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

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

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?

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

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

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

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.

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

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.

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

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%

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

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.

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

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;