Módulo 8: Primitivas en Pascal

Documentos relacionados
Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación)

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Módulo 6: Condicionales y otros

5. Subprogramas Fundamentos de Informática

Módulo 5: Lenguaje Pascal

llamada a la función Val(num) cambiosigno(n) redondeo(num,3)

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

El lenguaje C. 1. Identificadores, constantes y variables

Estructura de Datos: Archivos

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Definición de Tipo de Dato Abstracto (TDA)

PRÁCTICA ALGORÍTMICA: EJERCICIOS PROPUESTOS

Ejercicio 1.- En las construcciones siguientes para qué valores de la variable RangoI se ejecutará la sentencia de asignación?

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

Programación en Pascal

Estatutos de Control C# Estatutos de Decisión (Selección)

2.2 Nombres, Ligado y Ámbito

Estructuras de control

Este es un arreglo de números enteros, o sea que guarda una serie de variables de tipo INTEGER, todas agrupadas en una sola estructura.

Estructuras de Control

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Funciones como Subprogramas en C++

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

UNIDAD 3: TIPOS ABSTRACTOS DE DATOS

GUÍA BÁSICA DE SCHEME v.4

Java para no Programadores

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Guía práctica de estudio 05: Diagramas de flujo

7. PROCEDIMIENTOS Y FUNCIONES

Estructura If Esta sentencia, es considerada de alternativa doble (si se cumple condición entonces..., sino... / If... then... else... ).

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Clase adicional 2. Estructuras básicas de control. Temas

Estructuras de Repetición (Hacer-Mientras)

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

Fundamentos de Programación. Flujo de Control I: Estructuras selectivas

SENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro

Estructura de datos (arreglos) Vectores y Matrices

Universidad de Puerto Rico en Arecibo Departamento de Matemáticas Sec. 5.1: Polinomios

Capítulo 1. Algoritmos, diagramas de flujo y programas.

Aprender a programar con Turbo Pascal. Turbo pascal

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Funciones. Parámetros por valor

Procedimientos almacenados en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

Instituto de Computación - Facultad de Ingeniería - Universidad de la República

Pero nos están faltando otros operadores imprescindibles:

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS.

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

Los Conjuntos de Números

Programación en Visual Basic Ricardo Rodríguez García

Estructuras de Repetición (Repita para)

Introducción a la Programación Ingenieria en Informática Junio 2008

TEMA 4. ESTRUCTURAS DE CONTROL

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

Procedimientos en MAPLE

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

Introducción a la calidad de código

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Computación II. Introducción a Visual Basic


Tema 3.- Predicados y sentencias condicionales

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Se guardan en archivos con extencion c y los cabezales con extension h

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013

PROGRAMACION / Clave: 11214

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

4. Operadores Operador asignación

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Operando1 operador de relación Operando2

Tema 2. El lenguaje JAVA

Semántica Denotacional

Visual Basic y.net: Procedimientos Sub y funciones Function. Parámetros. Organizar programas en módulos. (CU00338A)

GUÍA DE ESTILO EN JAVA

ALGORITMOS Y ESTRUCTURAS DE DATOS

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Enunciado de la tercera práctica de programación I

Curso de Java Introducción a la Programación III

Principios de Computadoras II

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

Metodología y Tecnología de la Programación

UTN FRR Ingeniería en Sistemas de Información Algoritmos y Estructuras de Datos Archivos Directos GUIA DE ESTUDIO: ARCHIVOS DIRECTOS

AMBITO DE VARIABLES EN C. GLOBALES Y LOCALES. UNDECLARED (FIRST USE IN THIS FUNCTION). EJEMPLOS (CU00548F)

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

6. Vectores. 1. Introducción. 2. Declaración (I) Fundamentos de Informática Dpto. Lenguajes y Sistemas Informáticos.

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

ESTRUCTURAS REPETITIVAS EN PHP

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

3.2. Programación estructurada. Principal. Modulo 1 Modulo 2 Modulo 3 Modulo 4. Modulo Modulo Modulo 3 1 Modulo 4 1 Modulo 4 2. Pág.

Elementos de un programa en C

= RETURN =3 7-. ELSE K

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

USO DE SUBRUTINAS, TRANSMISIÓN DE PARÁMETROS Y COMPILACIÓN CONDICIONAL EN C++

INTRODUCCIÓN AL TURBO PASCAL.

Transcripción:

Módulo 8: Primitivas en Pascal Tecnologías en la Educación Matemática Dr. Carlos Gonzalía DCIC - UNS Técnologías en la educación matemática Dr. Carlos Gonzalía 1 de

Copyright Copyright 2010, 2012 M. Capobianco, C. Gonzalía 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 Dr. Carlos Gonzalía 2

Primitivas en Pascal Cuando dividimos el problema en subproblemas, nos quedan varios algoritmos que trabajan en conjunto. Potencia Cubo Suma Técnologías en la educación matemática Dr. Carlos Gonzalía 3

Primitivas en Pascal En Pascal podemos escribir estos algoritmos en bloques separados. Program Serie; Potencia Cubo Subprogramas Suma Begin... End. Técnologías en la educación matemática Dr. Carlos Gonzalía 4

Subprogramas Existen dos tipos de subprogramas en Pascal, las funciones y los procedimientos. Dijimos que cuando un algoritmo tiene un único dato de salida se puede invocarlo desde una expresión. Estas primitivas se pueden considerar como nuevas funciones a utilizar en los algoritmos. En Pascal se pueden construir funciones que tienen un cierto número de datos de entrada pero un único dato de salida. Se utiliza la palabra reservada FUNCTION Técnologías en la educación matemática Dr. Carlos Gonzalía 5

Ejemplo Algoritmo Potencia ALGORITMO Potencia D. Entrada : Base, Exp {naturales} D. Salida : Pot {Base Exp } COMIENZO REPETIR Exp VECES Pot Pot Base FIN ALGORITMO Técnologías en la educación matemática Dr. Carlos Gonzalía 6

Ejemplo Función Potencia FUNCTION Potencia (Base,Exponente:integer): integer; VAR aux, P: integer; BEGIN P := 1; FOR aux := 1 TO Exponente DO P := P * Base; Potencia:= P; END; Técnologías en la educación matemática Dr. Carlos Gonzalía 7

Ejemplo Función Potencia Parámetros Tipo de Resultado FUNCTION Potencia (Base,Exponente:integer): integer; VAR aux,p: integer; BEGIN variables locales P := 1; FOR aux:= 1 TO Exponente DO P := P * Base; Potencia:= P; END; asignación del resultado Técnologías en la educación matemática Dr. Carlos Gonzalía 8

Funciones en Pascal Toda función tiene: un nombre cero o más parámetros tipo del resultado posiblemente variables locales sentencias asignación del valor de salida al nombre de la función Para llamar (invocar) a una función debe: 1. utilizarse su nombre en una expresión 2. coincidir la cantidad de parámetros y tipo de cada uno 3. el tipo del resultado debe coincidir con el tipo de la expresión en la que se lo llama Técnologías en la educación matemática Dr. Carlos Gonzalía 9

Ejercicios Escribir una función Cuadrado que dado un número real R devuelva el cuadrado de R. Escribir una función CuartaPot que devuelva R a la 4ta. potencia. Técnologías en la educación matemática Dr. Carlos Gonzalía 10

Ejercicios Escribir una función Cuadrado que dado un número real R devuelva el cuadrado de R. FUNCTION Cuadrado ( R : Real ) : Real ; BEGIN Cuadrado := R * R ; END ; Escribir una función CuartaPot que devuelva R a la 4ta. potencia. FUNCTION CuartaPot ( R : Real ) : Real; BEGIN CuartPot := Cuadrado(R) * Cuadrado(R) ; END ; Técnologías en la educación matemática Dr. Carlos Gonzalía 11

Ejercicios Escriba una función en Pascal que dado un número N, determine si es o no un número par. Técnologías en la educación matemática Dr. Carlos Gonzalía 12

Ejercicios Escriba una función en Pascal que dado un número N, determine si es o no un número par. FUNCTION EsPar (N :Integer ):Boolean ; var aux:boolean; BEGIN IF N mod 2 = 0 THEN aux := TRUE ELSE aux := FALSE; EsPar := aux; END ; FUNCTION EsPar (N :Integer ):Boolean ; BEGIN EsPar := ( (N mod 2)=0 ); END ; Técnologías en la educación matemática Dr. Carlos Gonzalía 13

Ejercicios Realice los siguientes ejercicios. Recuerde dividir el problema en subproblemas si es necesario. 1) Escriba como función de Pascal los ejercicios algorítmicos realizados anteriormente. 2) Escriba una función en Pascal que dado un número N, indique si N es o no número primo. 3) Escriba una función en Pascal que dado un número N y un dígito d, indique si d está presente en N. 4) Escriba una función en Pascal que dados dos números N y M indique si existe algún número primo entre N y M. Técnologías en la educación matemática Dr. Carlos Gonzalía 14

Ejercicios Realice los siguientes ejercicios. Recuerde dividir el problema en subproblemas si es necesario. 1. Escriba una función en Pascal que dados dos números M y N indique si la suma de los dígitos de M es igual al producto de los dígitos de N. 2. Escriba una función en Pascal que dados cuatro números N,M,P y Q calcule el promedio de los dígitos de cada uno de ellos y devuelva el mayor. Técnologías en la educación matemática Dr. Carlos Gonzalía 15

Ejercicio Realice una primitiva para multiplicar fracciones. ALGORITMO MultiplicarFracciones DATOS DE ENTRADA: Num1,Den1,Num2,Den2 DATOS DE SALIDA : NumRes, DenRes COMIENZO NumRes Num1 * Num2 DenRes Den1 * Den2 FIN ALGORITMO Este algoritmo no puede implementarse mediante una (? qué FUNCION ( por Técnologías en la educación matemática Dr. Carlos Gonzalía 16

Procedimientos en Pascal Si un algoritmo tiene varios datos de salida, vimos que se podía invocarlo indicando su nombre y los datos de entrada y los de salida. En Pascal se pueden construir procedimientos que tienen un número cualquiera de datos de entrada (cero o más), y un número cualquiera de datos de salida (cero o más). Se utiliza la palabra reservada PROCEDURE Técnologías en la educación matemática Dr. Carlos Gonzalía 17

Procedimientos en Pascal ALGORITMO MultiplicarFracciones DATOS DE ENTRADA: Num1, Den1, Num2, Den2 DATOS DE SALIDA : NumRes, DenRes COMIENZO NumRes Num1 * Num2 DenRes Den1 * Den2 FIN ALGORITMO Técnologías en la educación matemática Dr. Carlos Gonzalía 18

Procedimientos en Pascal PROCEDURE MultiplicarFracciones ( Num1, Den1, Num2, Den2: INTEGER; VAR NumRes, DenRes: INTEGER); BEGIN NumRes := Num1 * Num2; DenRes := Den1 * Den2; END; Técnologías en la educación matemática Dr. Carlos Gonzalía 19

Procedimientos en Pascal PROCEDURE MultiplicarFracciones ( Num1, Den1, Num2, Den2: INTEGER; VAR NumRes,DenRes: INTEGER); BEGIN NumRes := Num1 * Num2; DenRes := Den1 * Den2; END; Parámetros La llamada a un PROCEDURE se realiza como una sentencia: MultiplicarFracciones ( 1, 4, 3, 5, Num, Den); Técnologías en la educación matemática Dr. Carlos Gonzalía 20

Programa y procedimiento PROGRAM Prueba; VAR N1, D1, N2, D2, Nresul, Dresul :Integer; PROCEDURE MultiplicarFracciones (Num1, Den1, Num2, Den2: Integer; VAR NumRes, DenRes: Integer); BEGIN... END; BEGIN write( Ingrese dos fracciones: ); readln(n1,d1,n2,d2); MultiplicarFracciones (N1,D1,N2,D2,Nresul,Dresul); writeln( Fraccion resultado:,nresul, /,DResul); END. Técnologías en la educación matemática Dr. Carlos Gonzalía 21

Programa y procedimiento PROGRAM Prueba; VAR N1,D1,N2,D2, Nresul,Dresul :Integer; PROCEDURE MultiplicarFracciones (Num1,Den1,Num2,Den2:Integer; VAR NumRes,DenRes:Integer); BEGIN... Parámetros Formales END; BEGIN write( Ingrese dos fracciones: ); Parámetros Efectivos readln(n1,d1,n2,d2); MultiplicarFracciones (N1,D1,N2,D2,Nresul,Dresul); writeln( Fraccion resultado:,nresul, /,DResul); END. Técnologías en la educación matemática Dr. Carlos Gonzalía 22

Ejercicios 1. Escriba un procedimiento en Pascal que dados un número M y un dígito d, imprima por pantalla si el dígito d está en M. Por ejemplo, si N=5432 y d=4 debe imprimir El dígito 4 está en 5432. Si N=7235 y d=1 debe imprimir El dígito 1 no está en 7235 2. Escriba un procedimiento en Pascal que permita ingresar por teclado dos números N y M y un dígito d, e imprima para todos los números entre N y M, si el dígito d se encuentra en ellos, usando el procedimiento anterior. Técnologías en la educación matemática Dr. Carlos Gonzalía 23

Parámetros Parámetros formales: (formal parameters) son los que figuran en la cabecera del procedimiento PROCEDURE CUANTOS DIGITOS (NUM, DIGITO:INTEGER; VAR CANTIDAD: INTEGER); Parámetros efectivos (o actuales): (actual parameters) son los que figuran en la llamada al procedimiento NUMERO:= 32342; CUANTOS DIGITOS(NUMERO, 3, CANTIDAD); WRITELN(CANTIDAD); Técnologías en la educación matemática Dr. Carlos Gonzalía 24

Invocación a procedimientos Un procedimiento se identifica por su nombre, y sus parámetros formales (datos de entrada y de salida). Para usar (invocar o llamar) un procedimiento como una primitiva : debe invocarse su nombre. deben indicarse los parámetros efectivos, los cuales deben coincidir en cantidad y tipo con los parámetros formales. Técnologías en la educación matemática Dr. Carlos Gonzalía 25

Invocación a procedimientos Los parámetros formales antecedidos por la palabra VAR se denominan parámetros por variable o parámetros por referencia. Son datos de entrada-salida Los parámetros formales que no están antecedidos por la palabra VAR se denominan parámetros por valor. Son datos de entrada. Técnologías en la educación matemática Dr. Carlos Gonzalía 26

Parámetros formales Los parámetros formales definen la interfaz del subprograma: aquellos datos que ingresarán al subprograma y aquellos que nos devolverá el subprograma. Procedimiento Parámetros formales Parámetros por valor Parámetros por referencia ( variable ( o por Técnologías en la educación matemática Dr. Carlos Gonzalía 27

Parámetros formales Parámetros por valor PROCEDURE CUANTO_SDIGITOS (NUM, DIGITO:INTEGER; VAR CANTIDAD: INTEGER); Parámetros por referencia Técnologías en la educación matemática Dr. Carlos Gonzalía 28

Parámetros efectivos Los parámetros efectivos son aquellos que figuran en la invocación al procedimiento PROCEDURE CUANTOSDIGITOS ( NUM, DIGITO:INTEGER; VAR CANTIDAD: INTEGER); CUANTOSDIGITOS( N, Dig, CantDig ) Parámetros efectivos Técnologías en la educación matemática Dr. Carlos Gonzalía 29

Parámetros efectivos CUANTOSDIGITOS( N,Dig, CantDig ) CuantosDigitos 4341 4 2 NUM DIGITO CANTIDAD N Dig CantDig 2 Técnologías en la educación matemática Dr. Carlos Gonzalía 30

Parámetros efectivos Si el parámetro formal correspondiente es por valor entonces el parámetro efectivo puede ser: un valor una expresión una variable con valor CUANTOSDIGITOS( N, Dig, CantDig ) CUANTOSDIGITOS( 12232, Dig, CantDig ) CUANTOSDIGITOS( 12+43+Aux, 4, CantDig ) Técnologías en la educación matemática Dr. Carlos Gonzalía 31

Parámetros efectivos Si el parámetro formal es por referencia, entonces debe ser llamado UNICAMENTE con una variable en ese lugar... CUANTOSDIGITOS( A, B, CantDig ) CUANTOSDIGITOS( A, B, 23 ) Técnologías en la educación matemática Dr. Carlos Gonzalía 32

Resumen de Parámetros Formales Por valor : <nombre>: <tipo> Por referencia: VAR <nombre>: <tipo> Parámetros si corresponde a un parámetro formal por valor, puede ser... un valor una expresión una variable Efectivos si corresponde a un parám. formal por referencia, debe ser... una variable Técnologías en la educación matemática Dr. Carlos Gonzalía 33

Invocaciones VAR N1, D1, N2, D2, NResul, DResul: Integer; PROCEDURE MultiplicarFracciones (Num1, Den1, Num2, Den2: Integer; VAR NumRes, DenRes: Integer); BEGIN... END; BEGIN... MultiplicarFracciones (N1,D1,N2,D2,Nresul,Dresul);... MultiplicarFracciones (3,4,2,5,Nresul,Dresul);... MultiplicarFracciones (2*1,2+2,2,4,Nresul,Dresul);... END Técnologías en la educación matemática Dr. Carlos Gonzalía 34

Ejercicios Escriba un procedimiento en Pascal que dados dos números M y N, intercambie sus valores. Escriba un procedimiento en Pascal que dados tres números M,N y P, intercambie sus valores de la siguiente forma: M quedará con el valor de P, P quedará con el valor de N y N quedará con el valor de M. Escriba un procedimiento en Pascal que devuelva la cantidad de números primos entre 1 y 1000 y el último primo encontrado. Técnologías en la educación matemática Dr. Carlos Gonzalía 35

Procedimientos y parámetros Puede haber procedimientos sin parámetros? Ejemplo PROCEDURE PAUSA; Puede haber procedimientos con solo datos de entrada? PROCEDURE LINEAS_EN_BLANCO(CANTIDAD:INTEGER); Puede haber procedimientos con sólo datos de salida? PROCEDURE LEER_LETRA(VAR L: CHAR); Puede haber procedimientos con un solo dato de salida? PROCEDURE CUANTAS_VECES(NUM,DIGITO:INTEGER VAR CUANTOS:INTEGER); Técnologías en la educación matemática Dr. Carlos Gonzalía 36

PROGRAM MIPROGRAMA CONST... TYPE... VAR... PROCEDURE Proc1 CONST... TYPE... VAR... BEGIN... END; FUNCTION Fun1 CONST... TYPE... VAR BEGIN... END; BEGIN... END. Bloques en Pascal No hay limitación en la cantidad de bloques. En Pascal, un bloque puede a su vez tener otros bloques Un procedimiento o función puede incluir una declaración interna de otro procedimiento o función Se denominan bloques anidados Técnologías en la educación matemática Dr. Carlos Gonzalía 37

PROGRAM MIPROGRAMA CONST... TYPE... VAR... PROCEDURE Proc1 FUNCTION Fun1 CONST... TYPE... VAR BEGIN... END; BEGIN... END; BEGIN... END. Bloques en Pascal Como los bloques están anidados, sólo pueden usarse datos y subprogramas declarados en el mismo bloque, o en uno que lo contenga. En el ejemplo, desde MiPrograma no puede invocarse a Fun1. Puede invocarse a Proc1 porque es declarado en ese bloque. Desde Proc1 puede invocarse a Fun1 porque es declarado en ese bloque Técnologías en la educación matemática Dr. Carlos Gonzalía 38

PROGRAM MIPROGRAMA PROCEDURE Proc1 FUNCTION Fun1 BEGIN... END; BEGIN... END; FUNCTION Fun2 BEGIN... END; BEGIN... END. Nivel 1 Nivel 2 Nivel 1 Nivel 0 Bloques en Pascal Podemos enumerar el nivel de profundidad de los bloques. Desde el nivel 0 (el programa principal) puede usarse aquello declarado en el nivel 0 Desde el nivel 1 (el procedimiento proc1) puede usarse aquello declarado en el nivel 1 o nivel 0 Desde el nivel 2 (la función fun1) puede usarse aquello declarado en el nivel 2, en el nivel 1 o en el nivel 0. Técnologías en la educación matemática Dr. Carlos Gonzalía 39