pascal [modo de compatibilidad]

91
FUDAMETOS DE FUDAMETOS DE PROGRAMACIÓ PROGRAMACIÓ

Upload: zamantha-gonzalez-universidad-nacional-abierta

Post on 12-Jun-2015

1.588 views

Category:

Documents


0 download

DESCRIPTION

Fundamentos de programación

TRANSCRIPT

Page 1: Pascal [modo de compatibilidad]

FU�DAME�TOS DE FU�DAME�TOS DE PROGRAMACIÓ�PROGRAMACIÓ�

Page 2: Pascal [modo de compatibilidad]

Es un conjunto prescrito de instrucciones o reglas biendefinidas, ordenadas y finitas que permite realizar unaactividad mediante pasos sucesivos que no generen dudasa quien lo ejecute. Siempre viene definido un inicio y unfin

Algoritmo

fin

• Pseudocódigo

• Diagrama de flujo

Page 3: Pascal [modo de compatibilidad]

El pseudocódigo (falso lenguaje, elprefijo pseudo significa falso) es una descripción de altonivel de un algoritmo que emplea una mezcla de lenguajenatural con algunas convenciones sintácticas propias de

Pseudocódigo

natural con algunas convenciones sintácticas propias delenguajes de programación, como asignaciones, ciclos ycondicionales, aunque no está regido por ningún estándar

Page 4: Pascal [modo de compatibilidad]

Los diagramas de flujo son descripciones gráficas dealgoritmos; usan símbolos conectados con flechas paraindicar la secuencia de instrucciones

Los diagramas de flujo son usados para representar

Diagrama de flujo

Los diagramas de flujo son usados para representaralgoritmos pequeños

Por su facilidad de lectura son usados como introducción alos algoritmos, descripción de un lenguaje y descripción deprocesos a personas ajenas a la computación

Page 5: Pascal [modo de compatibilidad]

EJEMPLO:

Diagrama de flujo

Page 6: Pascal [modo de compatibilidad]

Diagrama de flujo

LEYENDA

Page 7: Pascal [modo de compatibilidad]

LEYENDA

Diagrama de flujo

LEYENDA

Page 8: Pascal [modo de compatibilidad]

• Los Diagramas deben ir de arriba hacia abajo o de izq. a der

• Los símbolos se unen con flechas que indica la dirección que fluyela información procesos

• Se debe evitar el cruce de líneas

Reglas para los diagrama

• No deben quedar líneas de flujo sin conectar

• Todo texto escrito dentro de un símbolo debe ser legible, preciso,evitando el uso de muchas palabras

• Todos los símbolos pueden tener más de una línea de entrada, aexcepción del símbolo final

• Los símbolos de decisión deben tener mas de una línea de flujo desalida.

Page 9: Pascal [modo de compatibilidad]

BINARIO11011000011100

CONVERSION DE BINARIO A DECIMAL

Binario

CONVERSION DE BINARIO A DECIMAL• A cada numero binario se le asigna una posición de

derecha a izquierda comenzando por cero• Se multiplica cada numero binario por 2^posicion• Luego se suma

Ejemplo: 101 = (2^2)*1 + (2^1)*0 + (2^0)*1 = 5

Page 10: Pascal [modo de compatibilidad]

CONVERSION DE DECIMAL A BINARIO• Se divide entre 2 el numero decimal• El resto si es uno o cero se va listando• La resultado de la división entera se vuelve a dividir• Cuando el resultado es cero se termina

Binario

• Cuando el resultado es cero se termina• El numero binario es la ordenación de abajo hacia

arriba de los restos

Ejemplo: Transformar el número decimal 4 en binario.

4 dividido entre 2 da 2 y el resto es igual a 02 dividido entre 2 da 1 y el resto es igual a 01 dividido entre 2 da 0 y el resto es igual a 1

Ordenamos los restos, del último al primero: 100

Page 11: Pascal [modo de compatibilidad]

Pascal

Es un lenguaje de alto nivel desarrollado enAlemania a fines de la década del 70 por �iklaus

Wirth. La idea fue crear un lenguaje que permitiesela enseñanza y el aprendizaje de la programación. Ala enseñanza y el aprendizaje de la programación. Atal fin, la sintaxis del Pascal es muy similar a la delidioma inglés y los programas son fáciles de leer einterpretar. Además, Pascal no toma enconsideración el hecho que las letras estén enmayúsculas o minúsculas.

Page 12: Pascal [modo de compatibilidad]

CompiladoresEn el Laboratorio de Informática se emplea elcompilador de Pascal de Borland, que ofrecemuchas facilidades para el aprendizaje, como elrealzado de sintaxis y la ubicación de los errores enla línea de código en que ocurren.

Page 13: Pascal [modo de compatibilidad]

Tres conceptos fundamentalesAntes de ver en mayor detalle el lenguaje deprogramación Pascal, es bueno tener claro que son :

•las constantes,

•las variables y•las variables y

•los identificadores.

Para eso debe tener una noción (por vaga que sea)de programa.

Page 14: Pascal [modo de compatibilidad]

¿Qué es un programa?

Un programa no es más que una serie de líneas detexto, cada una de las cuales contiene algunadefinición sobre la información a ser usada en eldefinición sobre la información a ser usada en elprograma o bien alguna instrucción que se desea quela computadora ejecute.

Page 15: Pascal [modo de compatibilidad]

Definiciones

Constante:

como su nombre lo indica, es un valor que a lolargo de la ejecución de un programa no varía.

Variable:

este es un espacio o contenedor, es como un vaso,que puede almacenar diversos valores durante laejecución del programa.

Page 16: Pascal [modo de compatibilidad]

DefinicionesIdentificador:

Es una combinación de letras, números y el caracter'_', pudiendo empezar con cualquiera de ellosexcepto números.

Es un concepto muy importante en Pascal, ya quesirve para nombrar las constantes, las variables eincluso el mismo programa.

Page 17: Pascal [modo de compatibilidad]

Tipos de Datos

En Pascal se debe especificar a la computadora quéclase de datos va a contener una variable.

A simple vista, podemos distinguir entre una palabracomo 'Hola' o un número como 47.

Page 18: Pascal [modo de compatibilidad]

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^y1.7*10^38

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

Page 19: Pascal [modo de compatibilidad]

Tipos de Datos

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

Boolean: Pueden tomar dos valores True

(verdadero) False (falso).

Existen otros tipos de datos

Page 20: Pascal [modo de compatibilidad]

Tipos Definidos por el Usuario

Existen dos tipos de datos simples definidos por elusuario:

Tipos enumerados: Se componen de una lista deidentificadores encerrados entre paréntesis yidentificadores encerrados entre paréntesis yseparados por comas.

Tipos subrango: Es un subconjunto de un tipoordinal (enteros, boolean, carácter y enumerado)que se especifica indicando el primero y el últimoelemento del conjunto.

Page 21: Pascal [modo de compatibilidad]

Cada uno lleva asociado un número entero: alprimero se le asigna el O, al segundo un 1, y asísucesivamente, por lo que no es independiente elorden de declaración.

Tipos Enumerados

orden de declaración.

Un valor de tipo enumerado no puede pertenecer ados declaraciones de tipo distintas y no puedenleerse desde teclado, ni escribirse en pantalla.

Page 22: Pascal [modo de compatibilidad]

Type

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

Tipos Enumerados. Ejemplos

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

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

Page 23: Pascal [modo de compatibilidad]

Tipos Subrango. Ejemplos

�otación:Type

Identificador = primerelemento..ultimoelemento;Identificador = primerelemento..ultimoelemento;

Ejemplos:

Type Dias = 1..31;Meses = 1..12;

Page 24: Pascal [modo de compatibilidad]

Asignación de tipos a variables

Para decirle a Pascal el tipo de una variable,se usa una de las siguientes palabras clave enel lugar indicado en el esqueleto delprograma.programa.

Ejemplo:

var i: integer;a: boolean;

Page 25: Pascal [modo de compatibilidad]

Esqueleto de un Programa en Pascal

Todos los programas de Pascal comparten ciertascaracterísticas comunes, algunas de las cuales sonopcionales. Esto se llama esqueleto del programa yopcionales. Esto se llama esqueleto del programa yse muestra a continuación.

Page 26: Pascal [modo de compatibilidad]

Convención

En este esqueleto, lo que se ponga entre signos demayor y menor (<>) indicarán elementos quedeben reemplazarse en un programa real.deben reemplazarse en un programa real.

Page 27: Pascal [modo de compatibilidad]

Esqueleto de un Programa en Pascal

Program <identificador>;UsesWinCrt;

Const {constantes}

<identificador> = <valor>;

Var {variables}

<identificador> : <tipo>;

Begin {instrucciones}. . .End.

Page 28: Pascal [modo de compatibilidad]

La línea Program es opcional y sirve para ponerle un nombreal programa.

Componentes del Esqueleto de un programa

La línea Uses WinCrt es una forma de que Pascal active la capacidad de leer desde el teclado y de escribir hacia la pantalla; en Windows, se hace esto sobre una pequeña ventana blanca, y en DOS sobre la pantalla completa (se debe escribir 'Uses Crt' en compiladores de DOS).

Page 29: Pascal [modo de compatibilidad]

Las secciones llamadas Const y Var son para declarar las constantes y las variables, respectivamente.

Son opcionales e intercambiables. Se pone un identificador que será el nombre con el que, tanto Pascal como el

Componentes del Esqueleto de un programa

que será el nombre con el que, tanto Pascal como el programador, la conocerán.

• A una constante no se le especifica el tipo, sólo el valor.

• A una variable no se le puede dar un valor cuando se la declara.

Page 30: Pascal [modo de compatibilidad]

Componentes del Esqueleto de un programa

La sección entre las palabras Begin y End es la parteprincipal del programa y es aquí donde van lasinstrucciones del programa.

Estas palabras actúan como paréntesis.

El último End debe terminar con un punto, para quePascal sepa que el programa ha terminado.

Page 31: Pascal [modo de compatibilidad]

Componentes del Esqueleto de un programa

Al final de varias líneas del esqueleto aparece unpunto y coma. En general, todas las líneas de códigoPascal terminan en punto y coma, a menos queterminen en una palabra reservada.terminen en una palabra reservada.

Las palabras entre llaves ({}) son comentarios, yPascal las ignora por completo. Son una formavaliosa de incluir información para los humanosdentro del código para la computadora.

Page 32: Pascal [modo de compatibilidad]

Operaciones de Entrada/Salida

Sentencias de salida o escritura.

Write o Writeln (NombreArchivo, Nomvarl ,Nomvar2...):

Realizan conversión de tipos de datos antes de que la salidallegue al archivo de salida. Las variables o argumentos de estallegue al archivo de salida. Las variables o argumentos de estasentencia pueden ser: expresiones. constantes o variablesnuméricas, de carácter, de cadena o booleanas.

Page 33: Pascal [modo de compatibilidad]

Operaciones de Entrada/Salida

Sentencia de entrada o lectura.

Read o Readln (NombreArchivo,Nomvarl ,Nomvar2..);

Page 34: Pascal [modo de compatibilidad]

Operadores AritméticosOperador Función

- Operador unario. Invierte el signo.

+ Operador binario suma.

- Operador binario resta.

* Operador binario producto.

/ Operador binario división real.

div Operador binario división entera.

Mod Operador binario resto entero.

Page 35: Pascal [modo de compatibilidad]

Operador de asignaciónLa combinación de símbolos := es el operador deasignación y sirve, al igual que el ReadLn, paradarle valor a una variable.

El valor que se da a la variable no se lee del teclado,El valor que se da a la variable no se lee del teclado,sino que se toma de una constante, de otra variable,o de una expresión aritmética (situadas a la derechadel operador de asignación) y se copia hacia lavariable cuyo nombre está a la izquierda.

Page 36: Pascal [modo de compatibilidad]

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.

Funciones Predefinidas

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.

Ord(x) Ordinal de una variable tipo ordinal x.

Pred(x) Ordinal anterior a la variable ordinal x.

Page 37: Pascal [modo de compatibilidad]

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.

Funciones Predefinidas

Sqr(x) Cuadrado de x.

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

Trunc(x) Parte entera de x.

Page 38: Pascal [modo de compatibilidad]

Estructuras de Control

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

Existen dos tipos de estructuras de control:

•alternativas o de selección

•repetitivas o de iteración.

Page 39: Pascal [modo de compatibilidad]

Estructuras Alternativas

Son aquellas que bifurcan o dirigen la ejecución deun programa hacia un grupo de sentencias u otrodependiendo del resultado de una condición. Lasdependiendo del resultado de una condición. Lasdos sentencias alternativas de Pascal son:

• Sentencia alternativa simple IF-THEN-ELSE

• Sentencia alternativa múltiple CASE-OF.

Page 40: Pascal [modo de compatibilidad]

IF THE� ELSE

IF (expresión lógica o booleana) THE�THE�

Sentencia1 (simple o compuesta)ELSE

Sentencia2 (simple o compuesta);

Page 41: Pascal [modo de compatibilidad]

Ejemplo

Ejemplo:

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

IF n>O thenWriteln (`Número positivo')

ELSE

Writeln (`Negativo o cero');

No puede existir un punto y coma inmediatamente antes deuna palabra ELSE ya que sería interpretado como final deIF.

Page 42: Pascal [modo de compatibilidad]

CASE OF

CASE (expresión o variable) OF

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

(lista de constantesN):(sentenciaN);ELSE (SENTENCIA)...

END;

Page 43: Pascal [modo de compatibilidad]

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 OfCase numerodia Of

1:Writeln ('Lunes');

2:Writeln ('Martes');

3:Writeln ('Miercoles');

4:Writeln ('Jueves');

5:Writeln ('Viernes');

6:Writeln ('Sábado')

Else Writeln ('¡¡¡Domingo!!! No es día laborable');

End.

Page 44: Pascal [modo de compatibilidad]

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.condición.Las tres sentencias repetitivas de Turbo Pascal son:

• SENTENCIA WHILE

• SENTENCIA REPEAT-UNTIL

• SENTENCIA FOR

• CUÁNDO SE USA CADA UNO

Page 45: Pascal [modo de compatibilidad]

Sentencia While

Indica al ordenador que se ejecuten una o mássentencias mientras se cumpla una determinadacondición establecida por una variable o expresiónbooleana.

Page 46: Pascal [modo de compatibilidad]

Sentencia While

Esta sentencia comprueba inicialmente si lacondición es verdadera. Si la condición esverdadera se ejecutan las sentencias mientras laverdadera se ejecutan las sentencias mientras lacondición de su enunciado sea verdadera y finalizacuando la condición es falsa.

Dado que la condición puede ser falsa inicialmente,es decir antes de comenzar el bucle, habrá casos enque el bucle no se ejecute.

Page 47: Pascal [modo de compatibilidad]

Sentencia While

WHILE condición DO

BEGI�

(sentencia1);

... ...

(sentenciaN);

E�D;

WHILE condición DO

(sentencia);

Page 48: Pascal [modo de compatibilidad]

Características del Bucle While

Se ejecuta mientras la condición sea verdadera, y dentro delbucle debe existir, por lo menos, una sentencia quemodifique el valor de la variable o expresión, de lomodifique el valor de la variable o expresión, de locontrario se puede producir una situación de bucle infinito.Si la expresión lógica es falsa al comenzar el bucle, éste nose realizará.

Page 49: Pascal [modo de compatibilidad]

Ejemplo

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

Program escribeenteros;Var N,contador: integer;BeginBegin

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

Write (contador:5); Contador:=contador+1;End;Writeln ('Fin de programa. Contador = ',contador);

End.

Page 50: Pascal [modo de compatibilidad]

Características del Bucle For

Aunque a primera vista pueda resultar más atractivo FOR,existen limitaciones en su aplicación ya que en el bucle FORsiempre se incrementa o decrementa (de uno en uno) losvalores de la variable de control de bucle y no de dos en doso de tres en tres, o con valores fraccionarios.o de tres en tres, o con valores fraccionarios.

El número de iteraciones de un bucle FOR siempre es fijo yse conoce de antemano:

Valor final - Valor inicial +1.

Page 51: Pascal [modo de compatibilidad]

Ejemplo

Program escribeenteros;Var N,contador: integer;BeginBegin

Write ('Introduzca numero máximo de enteros: ');Readln (N);For contador:=1 to n do

Write (contador:5);Writeln

End.

Page 52: Pascal [modo de compatibilidad]

Cuándo Utilizar While/Repeat/For

Utilizar la sentencia o estructura FOR cuando se conozca el número de iteraciones, y siempre que la variable de control de bucle sea de tipo ordinal.

Utilizar la estructura REPEAT-UNTIL cuando el bucle se realice por lo menos una vez.

En todos los demás casos utilizar la sentencia WHILE

Page 53: Pascal [modo de compatibilidad]

Sentencia Repeat Until

Ejecuta las sentencias comprendidas entre laspalabras reservadas REPEAT y U�TIL hasta quela expresión o variable sea verdadera.la expresión o variable sea verdadera.

Page 54: Pascal [modo de compatibilidad]

Sentencia Repeat Until

REPEAT

begin

(Sentencia);(Sentencia);(Sentencia);

...end;

U�TIL condición;

Page 55: Pascal [modo de compatibilidad]

Características del Bucle Repeat

Se ejecutan siempre una vez, por lo menos, y laterminación del bucle se produce cuando el valor dela expresión lógica o condición de salida esla expresión lógica o condición de salida esverdadera. Se ejecuta hasta que la expresión esverdadera, es decir, se ejecuta mientras la expresiónsea falsa.

Page 56: Pascal [modo de compatibilidad]

Ejemplo

Program escribeenteros;Var N,contador:integer;Begin

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

Contador:=contador+1;Write (contador:5)

Until contador = N;Writeln ('Fin de programa. Contador = ',contador)

End.

Page 57: Pascal [modo de compatibilidad]

Sentencia For

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

Necesita una variable de control del bucle que esNecesita una variable de control del bucle que esnecesariamente de tipo ordinal, ya que el bucle seejecuta mientras la variable de control toma unaserie consecutiva de valores de tipo ordinal,comprendidos entre dos valores extremos (inferiory superior).

Page 58: Pascal [modo de compatibilidad]

Sentencia For

Formato ascendente:

FOR variablecontrol:=valorinicial TO valorfinal DO(sentencia);

Formato descendente:

FOR variablecontrol:=valorincial DOW�TO valorfinal DO

(sentencia);

donde (sentencia) puede ser una sentencia simple o compuesta.

Page 59: Pascal [modo de compatibilidad]

La Estructura ArrayEs una estructura homogénea de datos de tamañoconstante accediendo a cada uno de sus elementosmediante un identificador común y uno o variosíndices.

• Todos los elementos del array son del mismo tipo.

• El número de ellos no varía durante la ejecucióndel programa.

Page 60: Pascal [modo de compatibilidad]

La Estructura Array

Accedemos a un elemento de la estructura medianteun identificador común, el nombre del array, y conel valor que toman uno o varios índices. Al númerode índices necesarios para designar un elemento delarray se le denomina dimensión del array.array se le denomina dimensión del array.

El número máximo de valores posibles que puedetomar cada índice se denomina rango de esadimensión o índice. Los valores han de serconsecutivos, por lo que el índice ha de ser de untipo ordinal

Page 61: Pascal [modo de compatibilidad]

Declaración de tipos y variables Array

La declaración más general de un array es la siguiente:

Type

Rango1 = tipoordinal1;Rango1 = tipoordinal1;Rango2 = tipoordinal2;...rangon = tipoordinaln;tipobase = (*cualquier predefinido o definido por el

usuario*)tipoarray = array [rango1,rango2,...,rangon] of tipobase,

Page 62: Pascal [modo de compatibilidad]

Ejemplo 1

Arreglo de una dimensión:

const n = 10;

var arr: array [1..n] of integer;

Page 63: Pascal [modo de compatibilidad]

Ejemplo 2

Arreglo de varias dimensiones: Para almacenar las notas correspondiente a todos los alumnos de un colegio. Suponiendo lo siguiente:

Numero de cursos 5Numero de cursos 5

Grupos por curso 3

Numero de evaluaciones 3

Numero de asignaturas 6

Numero de alumnos por curso 20

Page 64: Pascal [modo de compatibilidad]

Const

Numcurso=5;Numasig=6;Numalum=20;

Ejemplo 2.1

Type

Cursos=1.. nurneurso;Grupos='A'..'C';Eval=(primera,segunda,tercera);Asign=1.. numasin;Alum=1. .numalum;Tiponotas=array[cursos,grupos,eval,asign,alum] of real;

Page 65: Pascal [modo de compatibilidad]

Ejemplo 2.2

Var

Notas: tiponotas;Curso: cursos;Grupo: grupos;Grupo: grupos;Evaluacion: eval;Materia: asign;Alumno: alum;

Con los elementos de un array podemos realizar las mismas operaciones que el tipo base al que pertenecen.

Page 66: Pascal [modo de compatibilidad]

String: Cadenas de CaracteresLas cadenas de caracteres son arrays especiales.

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

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

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

Longitud lógica: corresponde al número decaracteres que tiene en un instante determinado.

Page 67: Pascal [modo de compatibilidad]

Operaciones y Tratamiento de cadenas

Las dos operaciones básicas son:

•Comparación

•Concatenación.

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

Ejemplo: Cad1:='esto es un ejemplo';Cad2:='de concatenación de cadenas';Cadr:=cad1+cad2;

Write (cadr);

esto es un ejemplo de concatenación de cadenas

Page 68: Pascal [modo de compatibilidad]

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 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';

cad1[1] devuelve el primer elemento, la letra ´e’.

Page 69: Pascal [modo de compatibilidad]

Operaciones y Tratamiento de cadenas

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

Ejemplo:

Longitud:=length(cad1);

La variable longitud tomaría el valor 7.

Page 70: Pascal [modo de compatibilidad]

Funciones de tratamiento de cadenas

Instrucción Función

COPY Extrae una subcadena de caracteres de otracadena 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 enterosPo 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)

DELETE Suprime el numero de caracteres que le

digamos de una cadena a partir de la posición

que le indiquemos

Delete (Cad,Po,Num)

Page 71: Pascal [modo de compatibilidad]

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 insertarDestino: Cadena donde se va a insertar

Posicion: Lugar a partir del cual se va a

insertar

UPCASE Devuelve el caracter mayúscula

Upcase(x)

Donde x es una variable de tipo char.

STR Convierte un valor numérico a la correspondiente

cadena de caracteres que lo representa.

Str(valor,cad)

Page 72: Pascal [modo de compatibilidad]

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) Val(cad,variable,codigo) Cad: la cadena a convertir en valor numérico.Variable: el numero que se obtenga.Codigo: cero si se ha podido convertir.

Page 73: Pascal [modo de compatibilidad]

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 laantes de poder ser utilizado debe ser declarado en lasección de tipos.

La única operación (a parte de la lectura) que se puederealizar con una variable registro como tal es laasignación, es decir, se pueden copiar todos los camposde una variable registro a otra variable registro del mismotipo. Además un registro puede ser pasado comoparámetro a una función o procedimiento.

Page 74: Pascal [modo de compatibilidad]

Ejemplo

Type

Tiporegistro = recordCampo 1 :tipol;

.

..

Campo N : tipoN;End;

Var

Registro1 : tiporegistro;

Page 75: Pascal [modo de compatibilidad]

Ejemplo

Type

Empleado = recordNbrApell : string;

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

Antig: integer;Antig: integer;Salario: real;

End;

Var

emp1 : Empleado;begin

�brApell:= 'Eduardo Lopez';emp1.EstadoCivil:= casado;emp1.Salario:= 450.86

end

Page 76: Pascal [modo de compatibilidad]

Procedimientos y Funciones

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

•los procedimientos (procedure)

•las funciones (function),

a los que nos referiremos genéricamente con el término de subprogramas. Turbo pascal incorpora además el concepto de unidad (unit), que permite aprovechar módulos independientes ya compilados.

Page 77: Pascal [modo de compatibilidad]

Los ParámetrosLos parámetros son canales de comunicación parapasar datos entre programas y subprogramas enambos sentidos.

Los parámetros van asociados a variablesconstantes, expresiones, etc., y por tanto, se indicanmediante los correspondientes identificadores oexpresiones.

Page 78: Pascal [modo de compatibilidad]

Los Parámetros

Los parámetros que se utilizan en la llamada oinvocación al subprograma se denominanparámetros actuales, reales o argumentos, y sonlos que entregan la información al subprograma.los que entregan la información al subprograma.

Los parámetros que la reciben en el subprogramase denominan parámetros formales o ficticios y sedeclaran en la cabecera del subprograma.

Page 79: Pascal [modo de compatibilidad]

Los Parámetros

En una llamada a un subprograma tiene queverificarse que:

El número de parámetros formales debe ser igualal de actuales.

Los parámetros que ocupen el mismo orden encada una de las Listas deben ser compatibles entipo.

Page 80: Pascal [modo de compatibilidad]

Declaración de parámetros formales

Se declaran encerrados entre paréntesis, indicandoel identificador y el tipo correspondiente asociadoa cada uno, separados por ':', y terminando en ';'.La palabra reservada VAR precediendo a unLa palabra reservada VAR precediendo a unidentificador de parámetro formal indica alcompilador que el paso del parámetro es proVariable. Su ausencia u omisión indica que el pasode parámetro se realiza por VALOR.

Page 81: Pascal [modo de compatibilidad]

Estructura, declaración y empleo de procedimientos y funciones

Se declaran inmediatamente después de lasvariables del programa principal, teniendovariables del programa principal, teniendola precaución de que si un subprogramareferencia o llama a otro, el referenciadodebe declararse primero.

Page 82: Pascal [modo de compatibilidad]

Declaración de procedimiento

Cabecera procedure nombreproced (lista de parámetros);

Declaraciones const

LocalesType...Type...Var...Declaración de otros procedimientos y funciones

Cuerpo begin

...end; (*obseiwar; final de procedimiento*)

Page 83: Pascal [modo de compatibilidad]

Ejemplo: Procedimiento

Ejemplo.:

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

PFl y PF2 se pasan por valor. PFl y PF2 se pasan por valor.

PF3 se pasa por variable.

Page 84: Pascal [modo de compatibilidad]

Declaración de funciónCabecera function nombrefunc (lista de parámet.):tiporetornado;

Declaraciones constLocales

Type...Var...Var...Declaración de otros procedimientos y funciones

Cuerpo begin

...

Nombrefunc:=valorderetorno;end;

Page 85: Pascal [modo de compatibilidad]

Ejemplo: Función

Ejemplo.:

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

PFl y PF2 se pasan por valor. PFl y PF2 se pasan por valor.

Page 86: Pascal [modo de compatibilidad]

Llamada a un procedimiento

Se realiza desde el programa principal indicandoel identificador del procedimiento seguido de lalista de parámetros actuales encerrados entreparéntesis y separados por comas.paréntesis y separados por comas.

Ejemplo:

Identificador (PAl ,PA2,PA3)

Page 87: Pascal [modo de compatibilidad]

Llamada a una función

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

Ejemplo:

a := Identificadorf (PAl ,PA2);

if (Identificadorf (PAl ,PA2) > 10) then ...

Page 88: Pascal [modo de compatibilidad]

Ejemplo: Procedimiento para intercambiar los valores de dos variables.

Procedure intercambio (var pfl ,p12:integer);

Ejemplo - Declaración

Procedure intercambio (var pfl ,p12:integer);VarAux:integer; {variable local uso exclusivo en procedimiento}

Begin

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

End;

Page 89: Pascal [modo de compatibilidad]

{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);

...

Ejemplo - Invocación

...

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);

end;

Page 90: Pascal [modo de compatibilidad]

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;

Ejemplo

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

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

End;

Page 91: Pascal [modo de compatibilidad]

¿Funciones o procedimientos?

Deben utilizarse funciones cuando solotenga que devolverse un solo valorsimple al programa llamador. En todoslos demás casos utilizaremosprocedimientos.