Académique Documents
Professionnel Documents
Culture Documents
Algoritmo
Es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien lo ejecute. Siempre viene definido un inicio y un fin Pseudocdigo Diagrama de flujo
Pseudocdigo
El pseudocdigo (falso lenguaje, el prefijo pseudo significa falso) es una descripcin de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintcticas propias de lenguajes de programacin, como asignaciones, ciclos y condicionales, aunque no est regido por ningn estndar
Diagrama de flujo
Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos conectados con flechas para indicar la secuencia de instrucciones Los diagramas de flujo son usados para representar algoritmos pequeos Por su facilidad de lectura son usados como introduccin a los algoritmos, descripcin de un lenguaje y descripcin de procesos a personas ajenas a la computacin
Diagrama de flujo
EJEMPLO:
Diagrama de flujo
LEYENDA
Diagrama de flujo
LEYENDA
Binario
BINARIO 11011000011100 CONVERSION DE BINARIO A DECIMAL A cada numero binario se le asigna una posicin 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
Binario
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 divisin entera se vuelve a dividir Cuando el resultado es cero se termina El numero binario es la ordenacin de abajo hacia arriba de los restos Ejemplo: Transformar el nmero decimal 4 en binario.
4 dividido entre 2 da 2 y el resto es igual a 0 2 dividido entre 2 da 1 y el resto es igual a 0 1 dividido entre 2 da 0 y el resto es igual a 1 Ordenamos los restos, del ltimo al primero: 100
Pascal
Es un lenguaje de alto nivel desarrollado en Alemania a fines de la dcada del 70 por iklaus Wirth. La idea fue crear un lenguaje que permitiese la enseanza y el aprendizaje de la programacin. A tal fin, la sintaxis del Pascal es muy similar a la del idioma ingls y los programas son fciles de leer e interpretar. Adems, Pascal no toma en consideracin el hecho que las letras estn en maysculas o minsculas.
Compiladores
En el Laboratorio de Informtica se emplea el compilador de Pascal de Borland, que ofrece muchas facilidades para el aprendizaje, como el realzado de sintaxis y la ubicacin de los errores en la lnea de cdigo en que ocurren.
Qu es un programa?
Un programa no es ms que una serie de lneas de texto, cada una de las cuales contiene alguna definicin sobre la informacin a ser usada en el programa o bien alguna instruccin que se desea que la computadora ejecute.
Definiciones
Constante: como su nombre lo indica, es un valor que a lo largo de la ejecucin de un programa no vara. Variable: este es un espacio o contenedor, es como un vaso, que puede almacenar diversos valores durante la ejecucin del programa.
Definiciones
Identificador: Es una combinacin de letras, nmeros y el caracter '_', pudiendo empezar con cualquiera de ellos excepto nmeros. Es un concepto muy importante en Pascal, ya que sirve para nombrar las constantes, las variables e incluso el mismo programa.
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 palabra como 'Hola' o un nmero como 47.
Tipos de Datos
Integer: nmero entero entre -32,768 y 32,767 LongInt: nmero entero entre -2*10^31 y 2*10^31 -1 Real: nmero con coma decimal entre 2.9*10-39^y 1.7*10^38 String: cadena de caracteres (conjunto de nmeros, letras, smbolos; palabras y frases)
Tipos de Datos
Char: un caracter (un dgito o una letra o un smbolo) Boolean: Pueden tomar (verdadero) False (falso). Existen otros tipos de datos dos valores True
Tipos Enumerados
Cada uno lleva asociado un nmero entero: al primero se le asigna el O, al segundo un 1, y as sucesivamente, por lo que no es independiente el orden de declaracin. Un valor de tipo enumerado no puede pertenecer a dos declaraciones de tipo distintas y no pueden leerse desde teclado, ni escribirse en pantalla.
Estaciones = (primavera, verano, otoo, invierno); Colores = (rojo, amarillo, verde, azul, violeta);
Convencin
En este esqueleto, lo que se ponga entre signos de mayor y menor (<>) indicarn elementos que deben reemplazarse en un programa real.
A una constante no se le especifica el tipo, slo el valor. A una variable no se le puede dar un valor cuando se la declara.
Operaciones de Entrada/Salida
Sentencias de salida o escritura. Write o Writeln (NombreArchivo, Nomvarl ,Nomvar2...): Realizan conversin de tipos de datos antes de que la salida llegue al archivo de salida. Las variables o argumentos de esta sentencia pueden ser: expresiones. constantes o variables numricas, de carcter, de cadena o booleanas.
Operaciones de Entrada/Salida
Sentencia de entrada o lectura. Read o Readln (NombreArchivo,Nomvarl ,Nomvar2..);
Operadores Aritmticos
Operador Funcin + * / div Mod Operador unario. Invierte el signo. Operador binario suma. Operador binario resta. Operador binario producto. Operador binario divisin real. Operador binario divisin entera. Operador binario resto entero.
Operador de asignacin
La combinacin de smbolos := es el operador de asignacin y sirve, al igual que el ReadLn, para darle valor a una variable. 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 expresin aritmtica (situadas a la derecha del operador de asignacin) y se copia hacia la variable cuyo nombre est a la izquierda.
Funciones Predefinidas
Instruccin
Abs(x) ArcTan(x) Chr(x) Cos(x) Exp(x) Frac(x) Int(x) Ln(x) Odd(x) Ord(x) Pred(x)
Funcin
Proporciona el valor absoluto de una variable numrica x. El arco cuya tangente es x. Devuelve el carcter ASCII de un entero entre O y 255. Proporciona el valor del coseno de x. La exponencial de x(eX). Parte decimal de x. Parte entera de x. Logaritmo neperiano de x. True si x es impar, y false si es par. Ordinal de una variable tipo ordinal x. Ordinal anterior a la variable ordinal x.
Funciones Predefinidas
Instruccin
Round(x) Succ(x) Sin(x) Sqr(x) Sqrt(x) Trunc(x)
Funcin.
Entero ms prximo al valor x. Ordinal siguiente a la variable ordinal x. Seno de x. Cuadrado de x. Raiz cuadrada de x, para x>=O. Parte entera de x.
Estructuras de Control
Se denominan estructuras de control a aquellas que determinan qu instrucciones deben ejecutarse y qu nmero de veces. Existen dos tipos de estructuras de control: alternativas o de seleccin repetitivas o de iteracin.
Estructuras Alternativas
Son aquellas que bifurcan o dirigen la ejecucin de un programa hacia un grupo de sentencias u otro dependiendo del resultado de una condicin. Las dos sentencias alternativas de Pascal son: Sentencia alternativa simple IF-THEN-ELSE Sentencia alternativa mltiple CASE-OF.
IF THE ELSE
IF (expresin lgica o booleana) THE Sentencia1 (simple o compuesta) ELSE Sentencia2 (simple o compuesta);
Ejemplo
Ejemplo: IF n>O then Writeln (`Nmero positivo'); IF n>O then Writeln (`Nmero positivo') ELSE Writeln (`Negativo o cero'); No puede existir un punto y coma inmediatamente antes de una palabra ELSE ya que sera interpretado como final de IF.
CASE OF
CASE (expresin o variable) OF (lista de constantes1):(sentencia1); (lista de conslantes2):(sentencia2); (lista de constantes3):(senteneia3); ... (lista de constantesN):(sentenciaN); ELSE (SENTENCIA) ... END;
Ejemplo
Program menu; Var Numerodia: integer; Begin Write('introduzca el ordinal de un da laborable de la semana:'); Readln (numerodia); Write (`Hoy es '); Case numerodia Of 1:Writeln ('Lunes'); 2:Writeln ('Martes'); 3:Writeln ('Miercoles'); 4:Writeln ('Jueves'); 5:Writeln ('Viernes'); 6:Writeln ('Sbado') Else Writeln ('Domingo!!! No es da laborable'); End.
Estructuras Repetitivas
Son aquellas que crean un bucle (repeticin continua de un conjunto de instrucciones) en la ejecucin de un programa respecto de un grupo de sentencias en funcin de una condicin. Las tres sentencias repetitivas de Turbo Pascal son: SENTENCIA WHILE SENTENCIA REPEAT-UNTIL SENTENCIA FOR CUNDO SE USA CADA UNO
Sentencia While
Indica al ordenador que se ejecuten una o ms sentencias mientras se cumpla una determinada condicin establecida por una variable o expresin booleana.
Sentencia While
Esta sentencia comprueba inicialmente si la condicin es verdadera. Si la condicin es verdadera se ejecutan las sentencias mientras la condicin de su enunciado sea verdadera y finaliza cuando la condicin es falsa. Dado que la condicin puede ser falsa inicialmente, es decir antes de comenzar el bucle, habr casos en que el bucle no se ejecute.
Sentencia While
WHILE condicin DO BEGI (sentencia1); ... (sentenciaN); E D; WHILE condicin DO (sentencia);
Ejemplo
Escribir los N primeros nmeros naturales, donde N es un valor introducido por el usuario. Program escribeenteros; Var N,contador: integer; Begin Write ('Introduzca numero mximo de enteros: '); Readln (N); Contador:=1; While contador<=N do Begin Write (contador:5); Contador:=contador+1; End; Writeln ('Fin de programa. Contador = ',contador); End.
Ejemplo
Program escribeenteros; Var N,contador: integer; Begin Write ('Introduzca numero mximo de enteros: '); Readln (N); For contador:=1 to n do Write (contador:5); Writeln End.
Ejemplo
Program escribeenteros; Var N,contador:integer; Begin Write ('Introduzca nmero mximo de enteros: '); Readin (N); Contador:= O; Repeat Contador:=contador+1; Write (contador:5) Until contador = N; Writeln ('Fin de programa. Contador = ',contador) End.
Sentencia For
Repite la ejecucin de una o varias sentencias un nmero 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).
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.
La Estructura Array
Es una estructura homognea de datos de tamao constante accediendo a cada uno de sus elementos mediante un identificador comn y uno o varios ndices. Todos los elementos del array son del mismo tipo. El nmero de ellos no vara durante la ejecucin del programa.
La Estructura Array
Accedemos a un elemento de la estructura mediante un identificador comn, el nombre del array, y con el valor que toman uno o varios ndices. Al nmero de ndices necesarios para designar un elemento del array se le denomina dimensin del array. El nmero mximo de valores posibles que puede tomar cada ndice se denomina rango de esa dimensin o ndice. Los valores han de ser consecutivos, por lo que el ndice ha de ser de un tipo ordinal
Ejemplo 1
Arreglo de una dimensin: const n = 10; var arr: array [1..n] of integer;
Ejemplo 2
Arreglo de varias dimensiones: Para almacenar las notas correspondiente a todos los alumnos de un colegio. Suponiendo lo siguiente: Numero de cursos 5 Grupos por curso 3 Numero de evaluaciones 3 Numero de asignaturas 6 Numero de alumnos por curso 20
Ejemplo 2.1
Const Numcurso=5; Numasig=6; Numalum=20; 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;
Ejemplo 2.2
Var Notas: tiponotas; Curso: cursos; 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.
POS
Pos (subcadena,cadena) DELETE Suprime el numero de caracteres que le digamos de una cadena a partir de la posicin que le indiquemos
Delete (Cad,Po,Num)
Val(cad,variable,codigo) Cad: la cadena a convertir en valor numrico. Variable: el numero que se obtenga. Codigo: cero si se ha podido convertir.
Registros
Un registro es una estructura heterognea 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 seccin de tipos. La nica operacin (a parte de la lectura) que se puede realizar con una variable registro como tal es la asignacin, es decir, se pueden copiar todos los campos de una variable registro a otra variable registro del mismo tipo. Adems un registro puede ser pasado como parmetro a una funcin o procedimiento.
Ejemplo
Type Tiporegistro = record Campo 1 :tipol; . . Campo N : tipoN; End; Var Registro1 : tiporegistro;
Ejemplo
Type Empleado = record NbrApell : string; EstadoCivil: (casado, viudo, soltero, divorciado); Sexo: (M, F); Antig: integer; Salario: real; End; Var emp1 : Empleado; begin brApell:= 'Eduardo Lopez'; emp1.EstadoCivil:= casado; emp1.Salario:= 450.86 end
Procedimientos y Funciones
Pascal ofrece dos herramientas bsicas para realizar programacin descendente: los procedimientos (procedure) las funciones (function), a los que nos referiremos genricamente con el trmino de subprogramas. Turbo pascal incorpora adems el concepto de unidad (unit), que permite aprovechar mdulos independientes ya compilados.
Los Parmetros
Los parmetros son canales de comunicacin para pasar datos entre programas y subprogramas en ambos sentidos. Los parmetros van asociados a variables constantes, expresiones, etc., y por tanto, se indican mediante los correspondientes identificadores o expresiones.
Los Parmetros
Los parmetros que se utilizan en la llamada o invocacin al subprograma se denominan parmetros actuales, reales o argumentos, y son los que entregan la informacin al subprograma. Los parmetros que la reciben en el subprograma se denominan parmetros formales o ficticios y se declaran en la cabecera del subprograma.
Los Parmetros
En una llamada a un subprograma tiene que verificarse que: El nmero de parmetros formales debe ser igual al de actuales. Los parmetros que ocupen el mismo orden en cada una de las Listas deben ser compatibles en tipo.
Declaracin de procedimiento
Cabecera Declaraciones Locales procedure nombreproced (lista de parmetros); const Type... Var... Declaracin de otros procedimientos y funciones Cuerpo begin ... end; (*obseiwar; final de procedimiento*)
Ejemplo: Procedimiento
Ejemplo.: Procedure Identificador (PF1 :tipol ;PF2:tpo2; var PW:tipo3); PFl y PF2 se pasan por valor. PF3 se pasa por variable.
Declaracin de funcin
Cabecera function nombrefunc (lista de parmet.):tiporetornado; Declaraciones const Locales Type... Var... Declaracin de otros procedimientos y funciones Cuerpo begin ...
Nombrefunc:=valorderetorno;
end;
Ejemplo: Funcin
Ejemplo.: function Identificadorf (PF1 :tipol ;PF2:tpo2):integer; PFl y PF2 se pasan por valor.
Llamada a un procedimiento
Se realiza desde el programa principal indicando el identificador del procedimiento seguido de la lista de parmetros actuales encerrados entre parntesis y separados por comas. Ejemplo: Identificador (PAl ,PA2,PA3)
Ejemplo - Declaracin
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 End;
Ejemplo - Invocacin
{La llamada a este procedimiento se hara ...} {... 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 despus de la llamada'); Writeln ('entero 1 = ',enterol,'entero 2 = ',entero2); end;
Ejemplo
Ejemplo: Funcin que, dados dos nmeros 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;
Funciones o procedimientos?
Deben utilizarse funciones cuando solo tenga que devolverse un solo valor simple al programa llamador. En todos los dems casos utilizaremos procedimientos.