viernes, 25 de marzo de 2011
JERARQUIA DE OPERACIONES
Ejemplos:
2+ 3* 4 := 20(incorrecto)
:= 14 (correcto)
b) si calif1=60 y calif2=80 y si entonces en programa se usa
promedio := calif1 + calif2/2
la pc daria como resultado promedio = 100
Recordar siempre, que antes de plantear una formula en un programa se debera evaluar contra el siguiente:
Orden de operaciones:
1.- Parentesis
2.- Potencias y raices
3.- Multiplicaciones y divisiones
4.- Sumas y restas
5.- Dos o mas de la misma jerarquia u orden, entonces resolver de izquierda a derecha
Nota: Si se quiere alterar el orden normal de operaciones, entonces usar parentesis.
Nota: Tampoco es bueno usar parentesis de mas en una operacion, esto solo indica que no se evaluo bien la formula, como en el siguiente ejemplo;
aqui los parentesis estan de mas, porque por orden de operaciones, multiplicacion y division tienen la misma jerarquia y entonces se resuelven de izquierda a derecha, en otras palabras ni que falten parentesis ni que sobren parentesis.
PROGRAMACION ENTRADA/SALIDA
PROGRAM NOMPROG;
CONST
VAR
BEGIN
INSTRUCCIONES;
END.
EJEMPLO Prog1.pas
program prog1;
var
area,base,altura :real;
begin
(* area de captura *)
write('Dame Base :');
readln(base);
write('Dame Altura:');
readln(altura);
(* area de operaciones *)
area := base * altura / 2;
(* area de despliegue *)
writeln('El Area es =',area:0:2);
readln;
end.
Corrida:
Reglas para escribir un programa en PASCAL :
a) Se sigue la estructura del programa, escrita al principio del tema.
b) Primero declarar la variables.
c) El cuerpo de instrucciones del programa debera encerrarse entre el begin —- end.
d) Todas las instrucciones ejecutables terminan con punto y coma.
e) Los comentarios se ponen encerrados entre (* comentario *)
f La declaracion de variables ocupa la primera posicion.
g) Se utiliza una instruccion llamada write() o writeln() para desplegar mensajes u otros elementos en el dispositivo de salida standar(pantalla).
h.- Se utiliza una instruccion llamada read() o readln() para capturar datos desde el dispositivo de entrada standar (teclado).
i.- Se usa una instruccion readln; al final para detener la pantalla hasta que el usuario pulse la tecla “any key” para continuar o el programa responde tan aprisa que no se alcanza a ver y se regresa al editor.
Ya creadas y cargadas las variables normales se efectuan los procesos u operaciones normales con ellas.
Este programa se debera crear usando el editor del turbo pascal y grabarlo como prog1.pas en el folder de su preferencia, para ejecutarlo usar la opcion RUN del propio editor.
RECORDAR nunca grabarlo con un nombre que contenga mas de 8 letras o caracteres, recordar que estamos hablando de los tiempos de msdos
INSTRUCCION WRITE() y WRITELN()
Es una de las mas poderosas herramientas de despliegue de datos que posee el lenguaje.
Su formato completo es:
WRITE(lista de parametros);
* Donde lista de parametros pueden ser:
a).- Mensaje o texto
b).- variables
c).- Combinacion de los dos
ejemplos;
write('el area es')'
write('el area es=',area);
write('base=',base,'altura='altura');
Ademas cada argumento ya sea texto o variable puede incluir el sguiente modificador;
Texto o variable:tamanocampo:tamanodecimal
Ejemplo
Write('mama':10); ←- se desplegara centrado en los 10 primeros espacios de los 80 espacios que tiene una pantalla de msdos.
Si el texto es mayor que el tamano asignado, TP ignora el tamano asignado y despliega todo el texto.
Ejemplo
Pi:real;
Begin
Pi:=3.1416;
Write(pi:10:2);
End.
Estamos pidiendo desplegar todo el numero en 10 espacios, en este caso TP centra y redondea al entero mas cercano, es decir la slida es 3.14.
La diferencia entre WRITE y WRITELN, es que el segundo incluye un cambio de renglon al final del despligue.
RECORDAR que en este compilador, cuando esten capturando una string y luego un dato numerico con read(), el compilador se va a saltar la captura del dato numerico, esto es un bug del compilador, para resolver este problema, solo agregar uno o varios readln; sin nada despues del read de captura de string o mejor aun solo usar readln() para captura.
INSTRUCCION READ() Y READLN();
Esta instruccion permite que el dato entrado desde el teclado sea capturado y almacenado en la variable correspondiente su formato completo es:
read(lista de variables);
ejemplo
read(base,altura,nombre,edad);
Aqui se pretende capturar cuatro variables en una sola pasada.
Lo mas sensato es usar un read(variable) por cada variable que se ocupe capturar en el programa.
Recordar tambien que en el caso de captura de reales es preferible agregar un cero (0) para decimales que no lo contengan, es decir no capturar .234 sino 0.234
La diferencia entre read() y readln(), es que el primero deja el cursor en el renglon de captura y readln() lo avanza un renglon.
FORMATO DE PANTALLA
Esta libreria se pone despues del program prog; y antes de CONST o VAR o BEGIN dependiendo del problema.
1.- ClrScr(); Limpia pantalla
ESTA INSTRUCCION NO OCUPA ACLARACION
2.- Gotoy(#de col,#de ren); posiciona cursor en lugar indicado
RECORDAR QUE UNA CONSOLA NORMAL TIENE 24 RENGLONES Y 80 COLUMNAS
En particular poner un gotoxy(); antes de cada write() en el programa.
Recordar ademas que en el folder TP esta tambien el programa THELP que les da un miniprograma residente con ayuda para pascal.
ISNTRUCCIONES DE CONTROL DE PROGRAMA
Estas instrucciones se dividen en tres grandes categorias:
Instrucciones Condicionales que en pascal se implementan con las instrucciones if y case.
Instrucciones de ciclos con, for, while, repeat until.
Instruccion de salto incondicional goto.
INSTRUCCIONES CONDICIONALES
Es decir al comparar dos alternativas diferentes el computador puede tomar una decision, basandose en la evaluacion que hace de alguna condicion.
ejemplo de instrucciones condicionales ;
a)
si sueldo > 3000
desplegar “rico”
si no
desplegar “pobre”
fin-si
b)
si sexo = 'm'
imprime mujer
si no
imprime hombre
fin-si
De los ejemplos observar que los caminos por el computador dependeran de la evaluacion que el computador hace con y de la condicion.
Todo lenguaje de programacion debe tener instrucciones que permitan formar condiciones e instrucciones que pueden evaluar esas condiciones.
El formato general de una instruccion condicional es:

Como se observa son cuatro partes bien diferenciadas entre si;
La propia instruccion condicional en si
La condicion
El grupo cierto de instrucciones
El grupo falso de instrucciones
Cuando el computador evalua una condicion, el resultado de esa evaluacion solo es evaluado de dos maneras o la condicion es CIERTA o la condicion es FALSA.
Esto dependera del valor que tenga asignado o que se haya capturado para la variable que esta en la condicion, por ejemplo si se capturo 6000 en sueldo en el ejemplo a), entonces el computador indicaria que la condicion es CIERTA, pero en otro caso, si a la variable sueldo primero se le asigno un valor de 250 entonces el computador indicaria que la condicion es FALSA.
Ya dependiendo del resultado de la evaluacion, el computador ejecuta las instrucciones contenidas en la parte CIERTA o en la parte FALSA de la condicion.
Empezaremos el analisis por la CONDICION.
CONDICIONES SIMPLES
En general todas las condiciones simples se forman con:
variables operadores relacionales constante o var.
sexo = 'm'
sueldo > 300000
Una condicion simple se define como el conjunto de variables y/o constantes unidas por los llamados operadores relacionales.
Los operadores relacionales que reconoce el lenguaje pascal son:
| Operador | Significado |
| = | Igual que |
| > | Mayor que |
| < | Menor que |
| >= | Mayor o igual que |
| ⇐ | Menor o igual que |
| <> | No es igual que o es diferente que |
| IN | Pertenece A |
NOTA IMPORTANTE, Para el caso de objetos de tipo string, los operadores mencionados arriba funcionan, es decir es valido usar la siguiente condicion:
string carrera;
if (carrera=“informatica) etc, etc, etc,
INSTRUCCIONES IF
Es la instruccion condicional mas usada en los diversos lenguajes de programacion, su formato completo y de trabajo en pascal es :
cargar o asignar la variable de condicion;
if condicion Then
begin
grupo cierto de instrucciones;
end
else
brgin
grupo falso de instrucciones;
end;
Primus.- Observar donde van y donde no van los puntos y comas;
Secundus.- Si un if no ocupa un grupo falso de instrucciones, entonces no se pone el else y el end antes del else si terminaria con punto y coma.
PROG2.pas
program prog2; uses crt; var edad:integer; ciudad,nombre:string; begin clrscr; (* area captura datos *) gotoxy(20,5);write('dame nombre :'); readln(nombre); gotoxy(20,6);write('dame ciudad :'); readln(ciudad); gotoxy(20,7);write('dame edad :'); readln(edad); (* area de condicion *) if ciudad = 'tijuana' then begin edad:=edad*12; gotoxy(20,10);write(nombre,' tienes ',edad,' meses'); end else begin gotoxy(20,10);write('no cumple la condicion'); end; readln; readln; end. CORRIDA: