jueves, 10 de febrero de 2011

CLASE 5

LA SENTENCIA IF

+DADO QUE LAS EXPRESIONES LOGICAS TOMAN EL VALOR VERDDERO O FALSO, ES NECESARIO UNA SENTENCIA DE CONTROL QUE DIRIJA A LA COMPUTADORA PARA EJECUTAR UNA SENTENCIA SI LA EXPRESION ES VERDADERO YOTRA EN CASO DE SER FALSA. PARA ELLO EXISTE EN PASCAL LA SENTENCIA DE CONTROL CONDICIONAL if-then-else, O ESTRUCTURA SELECTIVA.

DIAGRAMA DE FLUJO

ESCRITURA DEL if

if expresion logica

then

sentencia A

else

sentencia B

DIAGRAMA DE SINTAXIS


EJEMPLO:

program numeros;

var

numero: real;

begin

writeln (´introduzca un numero´);

read (numero); . end.

if numero > 0.0

then

writeln (´el numero intro es positivo´);

else

writeln (´el numero intro es positivo´);

write (´esto se imprime si numero es positivo o negativo´);

end.

NOTA: SI SOLO SE DESEA QUE UNA DETERMINADA ACCION SOLO SE EJECUTE SI UNA CONDICION ES VERDADERA Y NO REALIZAR NINGUNA OTRA SI LA CONDISION ES FALSA, SE OMITE DEL FORMATO LA CLAUSULA else.

SENTENCIAS COMPUESTAS

+EN LUGAR DE REALIZAR SOLO UNA ACCION, CUANDO SE CUMPLA O NO UNA CONDICION, SE PODRA DESEAR REALIZAR VARIAS ACCIONES. ESTO SE HACE MEDIANTE SENTENCIAS COMPUESTAS.

+UNA SENTENCIA COMPUESTA ES UN CONJUNTO DE SENTENCIAS SEPARADAS POR PUNTOS Y COMAS Y ENCERRADAS POR LAS PALABRAS begin y end.

+FORMATO DE UNA SENTENCIA COMPUESTA:

begin

sentencia 1;

sentencia 2;

sentencia n

end (no punto)


begin

Read (Numero);

N:= N+1;

Write ( ´El numero es´, Numero :4 );

Bandera=1.

end

EJEMPLO:

program Numeros;

var

x:integer;

begin

Read (x);

if x > o

then

begin

WriteLn (x,´es positivo´);

WriteLn (´en esta ocasion´, x, ´es positivo´)

end

else

begin

WriteLn ( x, ´es negativo´);

WriteLn (´o bien es cero´)

end;

end.

LA SENTENCIA VACÍA

+PASCAL TIENE UNA SENTENCIA QUE NO HACE ABSOLUTAMENTE NADA, ESTA ES LA SENTENCIA NULA O VACÍA.LOS PUNTOS Y COMAS SEPARAN SENTENCIAS EN PASCAL.

+SUPONGAMOS QUE SE ESCRIBE PUNTO Y COMA AL FINAL DE LA SENTENCIA DE ASIGNACIÓN .


begin

ReadLn (x);

Total:= Total + x; {sentencia vacía}

end

+COMO END NO ES UNA SENTENCIA, EL NUEVO PUNTO Y COMA NO APARECE COMO SEPARACIÓN DE DOS SENTENCIAS. EL COMPILADOR DECIDE QUE HAY UNA SENTENCIA ENTRE LA SENTENCIA DE ASIGNACIÓN Y END, ES DECIR, LA SENTENCIA NULA QUE NO PRODUZCA NINGUNA ACCIÓN NI CAMBIO.

SENTENCIAS if ANIDADAS

+LA SENTENCIA QUE SIGUE A LA PALABRA RESERVADA THEN O ELSE PUEDE SER CUALQUIERA, INCLUSO OTRA SENTENCIA if-then-else. CUANDO UNA O AMBAS BIFORCACIONES DE UNA SENTENCIA if-then-else CONTIENEN TAMBIÉN UNA SENTENCIA if-then-else, SE DICE QUE DICHAS SENTENCIAS if ESTÁN ANIDADAS Y AL PROCESO ANIDAMIENTO. EL ANIDAMIENTO SE PUEDE UTILIZAR PARA CONSTRUIR DECISIONES CON DIFERENTES ALTERNATIVAS.

Modelo 1

if CONDICIÓN 1

then

sentencias x

else

if condición 2

then

sentencias y

else

sentencias z

Modelo 2

if CONDICIÓN 1

then

sentencias x

else if condición 2

then

sentencias y

else if...

EJEMPLO: SE DESEA HACER UN PROGRAMA QUE LEA UN NUMERO Y DETERMINE SI ÉSTE ES POSITIVO, NEGATIVO, O CERO.

program IdentificadordeNumeros;

var

Numero: integer;

begin

WriteLn (´Introduzca un numero´);

read (Numero);

if (Numero <>

then

WriteLn (´El numero´, Numero,´es positivo´)

else

if (Numero <>

then

WriteLn (´El numero´, Numero,´es negativo´)

else

WriteLn (´El numero es cero´);

end.


EJEMPLO 2:

DADOS TRES NUMEROS ENTEROS, DETERMINAR CUÁL ES EL MAYOR (LOS TRES NUMEROS SE SUPONEN DISTINTOS)

program MayorNumero ;

var

Num1, Num2, Num3: integer; {valores de entrada}

El mayor : integer; {valores de salida}

begin

{ introducción de los datos en memoria}

WriteLn (´Introduzca tres numeros enteros´);

ReadLn ( Num1,Num2,Num3);

{determinar el numero mayor}

if Num1 > Num2

then

if Num1 > Num3

then

El mayor := Num1

else

El mayor := Num3

else

if Num2 > Num3

then

El mayor := Num 2

else

El mayor := Num3;

{visualizacion del numero mayor}

WriteLn (´El numero mayor es : ´, El mayor es : ´, El mayor);

end.





La sentencia Case (Clase 6)

+ La sentencia case se utiliza para elegir entre diferentes alternativas. Una sentencia case se compone de varias sentencias simples. Cuando case se ejecuta, una (y sólo una) de las sentencias simples se selecciona y ejecuta.


+ Formato


case selector of
lista de constantes 1: sentencia 1;

lista de constantes 2: sentencia 2;

.

.

.
lista de constantes n: sentencia n;


[else


sentencia x]


end;


+ Reglas


1.- La expresión selector se evalúa y se compara con las listas de constantes; Las listas de constantes son listas de uno o más valores de selector separados por comas. Sólo se ejecuta una sentencia. Si el valor del selector esta en lista constantes 1, se ejecuta sentencia 1. El control se pasa seguidamente a la primera sentencia a continuación de end. Cada sentencia puede ser a su vez una sentencia Pascal simple o compuesta.


2.- La claúsula else es opcional como en la sentencia if.


3.- Si el valor del selector no está comprendido en ninguna lista de constantes y no existe la claúsula else, no sucede nada y sigue el flujo del programa; Si el valor del selector no coincide con alguna constante, se ejecuta (n) la(s) sentencia(s) a continuación de la claúsula else.


4.- El selector debe ser de tipo ordinal (integer, char, boolean, enumerado). Los números reales no pueden ser utilizados ya que que no son ordinales. Los valores ordinales de los límites inferiores y superiores deben estar dentro del rango -32786 a 32767. Por lo tanto los tipos string, longint y word no son válidos.


5.- Todas las constantes case deben ser únicas y de un tipo ordinal compatible con el tipo de selector.


6.- Cada sentencia, excepto la última, deben ir seguidas de punto y coma.


+ Diagrama de Sintaxis Case






+ Ejemplos:

WriteLn ('Introduzca un valor');
ReadLn (Valor)
case valor of
'+': Resultado:=Resultado + 5;
'-': Resultado:=Resultado - 5;
'*': Resultado:=Resultado * 5;
'/': Resultado:=Resultado / 5;
end;

case Caracter_Leido of

'0' ... '9' : Write ('cifra');
'a' ... 'z' : Write ('Minuscula´');
'A' ... 'Z' : Write ('Mayuscula');
end;

case Caracter OF
'a', 'e', 'i', 'o', 'u' : Write ('es vocal');
else
Write ('es otro caracter')
end;

+Sentencias if anidadas VS sentencias case
1.- Se pueden utilizar sentencias if anidadas, en lugar de la sentencia case para realizar una decisión de alternativa multiple. La sentencia case, es más legible y práctica.

2.- Los programas deben presentar con mucha frecuencia menís, donde se presentan al usuario opciones entre las cuales debe elegir una, en estos casos la sentencia case resulta de gran utilidad.

EJERCICIO
Hacer un programa que presente un menú en donde las opciones representen a la operacion suma, resta, mult y división y acepte valores para realizar cada una de ellas.

lunes, 31 de enero de 2011

LA SENTENCIA IF (CLASE 5)





• Dado que las expresiones lógicas toman el valor verdadero o falso, es necesario una sentencia de control que dirija a la computadora para ejecutar una sentencia si la expresión es verdadero y otra en caso de ser falsa. Para ello existe en pascal la sentencia de control condicional if-then-else, o estructura selectiva.







(DIAGRAMA DE FLUJO)























ESCRITURA DEL IF DIAGRAMA DE SINTAXIS


If if-->expresión lógica-->then-->sentencia A
Expresión lógica else-->sentencia B
Then
Sentencia A
Else
Sentencia B

EJEMPLO:



program Numeros;
Var
Numero:real;
begin
writeln ( ‘ introduzca un numero ’ );
read (numero);
if numero > 0.0
then
writeln (‘el numero intro es positivo)
else
writeln (‘el numero intro es negativo);
write (‘esto se imprime si numero es positivo o negativo’);
end.

NOTA: si solo se desea que una determinada acción solo se ejecute si una condición es verdadera y no realizar ninguna otra si la condición es falsa, se omite del formato la clausula else.


SENTENCIAS COMPUESTAS

• En lugar de realizar solo una acción, cuando se cumpla o no una condición, se podría desear realizar varias acciones. Esto se hace mediante sentencias compuestas.
• Una sentencia compuesta es un conjunto de sentencias separadas por puntos y comas y encerradas por las palabras begin y end.



FORMATO DE UNA SECUENCIA COMPUESTA:


begin begin
sentencia1; read (numero);
sentencia2; N:= N+1;
sentencia n write (‘el numero es’, numero:4);
end (no punto) bandera=1
end

EJEMPLO:



program Numeros;

var

x:integer;

begin

read(x);

if x > 0

then

begin

writeln(x,' espositivo');

writeln('en esta ocasion',' es positivo')

end

else

begin

writeln(x,'es negativo');

writeln(' o bien es cero')

end;

end.



LA SENTENCIA VACIA




  • pascal tiene uan sentencia que no hace absolutamente nada, esta es la sentencia nula o vacia. los puntos y comas separan sentencias en pascal.


  • supongamos que se escribe punto y coma al final de la sentencia de asignacion.



begin
readln (x);
Total:=Total + x ; {sentencia vacía}
end


• Como end no es una sentencia, el nuevo punto y coma no aparece como separación de dos sentencias. El compilador decide que hay una sentencia entre la sentencia de asignaicion y end, es decir, la sentencia nula. Esta sentencia se puede utilizar en cualquier parte que necesite una sentencia que no produzca ninguna acción ni cambio.



SENTENCIAS IF ANIDADAS



• La sentencia que sigue a la palabra reservada then o else puede ser cualquiera, incluso otra sentencia if-then-else. Cuando una o ambas bifurcaciones de una sentencia if-then-else contienen también una sentencia if-then-else, se dice que dichas sentencias if están anidadas y al proceso anidamiento. El anidamiento se puede utilizar para construir decisiones con diferentes alternativas.



Modelo 1 Modelo2
If condición 1 if condición 1
then then
sentencias x sentencias x
else else If condición 2
If condición 2 then
then sentencias y
Sentencias y else if…
else
sentencias z

EJEMPLO:

Se desea hacer un programa que lea un numero y determine si este es positivo, negativo, o cero.

program IdentificadorDeNumeros;
var
numero:integer;
begin
writeln (‘introduzca un numero’);
read (numero);
if (numero > 0)
then
writeln (‘el numero’,’Numero,’es positivo’)
else
if (numero <>

then

writeln (‘el numero’,’Numero,’es negativo’)

else

writeln (‘el numero es cero’);

end.

clase 2 isdentificadores, constantes, variables.palabras reservadas.

clase 2

OBJETOS DEL PROGRAMA
IDENTIFICADORES, CONSTANTES VARIABLES, PALABRAS RESERVADAS

Un programa pascal se construye a base de objetos (tokens) yseparadores (blacos o comentarios).Los objetos son las unidades significativas mas pequeñas de texto de un programa pascal y se dividen en:
*simbolos especiales *identificadores *etiquetas *numertos *constantes
*variables *directivas *etc.

*IDENTIFICADORES
*representan los objetos de un programa (cont, var)
*es un asecuencia de caracteres de cualquier longitud (significativos hasta 63)
*Reglas de un identificador:
*debe comenar con una letray no contener espacios en blanco
*letras, digitos y caracteres subrayados( _ ), estan permitidos despues del primer
caracter.
*no se puede usar un palabra reservada coo identificador
ejempos validos: ejempos no validos:
nombre Letras1 Peso_Kilo
PesoKilo Impuesto_IVA La@Luna
NOMBRE begin

*PALABRAS RESERVADAS
*estas palabras tienen un significado especial y no se pueden utilizar para otros propsitos .
Esta no se puede usar como identificador.
*generalmente estas plabras se escriben en minusculas negritas
*const, var, begin, do, for, if, program, uses.

*CONSTANETES
*como su nombre lo indica son objetos que mantienen su valor durante toda la ejecucion del
programa
*puede ser letras, palabras, y/o numeros
*generalmenre se escriben/identificadores con letras mayusculas

*VARIABLES
*son objetos que cambian su valor a los largo de la ejeuacion del programa
*el identificador de una variable puede utilizar las reglas de un identificador

DIAGRAMA DE SINTAXIS

*REGLAS DE SINTAXIS
*son las reglas de gramatica de un lenguaje de programacion
*determinan si la secuenia de caracteres que forman un programa se puede traducir pr el
compilador a codigo maquina
*las reglas de sintaxis se representan mediante diagramas denominados, diagramas de
sintaxis o diagramas de conway




*TIPOS DE DATOS PRIMITIVOS
*los diferentes objetos de informacion con los que un programa Pascal trabaja se conocen
colectivamenre como datos
*todos los datos tienen un tipo asociado con ellos
*Pasal es "fuertemente tipificado", es decir, que todos los datos utilizados deben tener sus tipos
declarados explicitamente y el enguaje limita lamezcla de tios en las expresiones
*el tipo de un dato determina la naturaleza del conjunto de valores que puede tomar una
variable
*el tipo de un dato determina la representacion. Internade los numeros, o al menos el espacio
de una memoria ocupado por una variable de un tipo dado

CLASIFICACION DE LOS TIPOS DE DATOS

TIPOS ENTEROS
*byte
*enteros entre 0 y 225
*se almacenan como byte (8bits)
*integer
*enteros entre -323768....32767
*el bit de mayor peso de los dos bytes es el bit de signo (si=1=negativo)
*longint
*enteros entre -2,47,483,684 y 2,147,483,647
*se almacenan como 4 bytes
*shortin
*enteros entre -128 y 127
*se almacenan como 1 byte
*word
*enteros entre 0 y 65535
*se lamacena en bytes

TIPOS REALES (FLOAT)
*representan al conjunto de los numeros reales en rango de 10
*se almacean como 6 bytes
*lacaena binaria que los representa no es igual a la de los enteros

TIPOS CARACTER (CHAR)
*es un tipo dedatos que puede cpntener un solo caracter
*puede ser epresado gracias al codigo ASCII (256 caracteres)
*un literal char se debeencerrar en comilla simple (apostrofos)
'A' 'B' '*' ' '
*la funcion char permite referenciar todos los caracteres: chr (65) equivale a la letra A
*tambien podemos designar caracteres con numero seguido del codigo cacacter
8
TIPOS OGICOS (BOOLEAN)
*PUEDEN TOMAR SOLO DOS VALORES:TRUE OR FALSE