Foros del Web » Programación para mayores de 30 ;) » Programación General »

Comenzando a programar: 6a- Condiciones booleanas y selección simple

Estas en el tema de Comenzando a programar: 6a- Condiciones booleanas y selección simple en el foro de Programación General en Foros del Web. LECCIÓN 6 - Parte a: Condiciones y Selección Ya tuvimos un vistazo de esto en la lección anterior. Ahora volveremos a retomar el mismo tema. ...
  #1 (permalink)  
Antiguo 03/11/2011, 09:40
 
Fecha de Ingreso: enero-2011
Mensajes: 51
Antigüedad: 13 años, 3 meses
Puntos: 21
Comenzando a programar: 6a- Condiciones booleanas y selección simple

LECCIÓN 6 - Parte a: Condiciones y Selección

Ya tuvimos un vistazo de esto en la lección anterior. Ahora volveremos a retomar el mismo tema. Comenzaremos a ver la instrucción IF...THEN tal como ya lo hicimos, la cual sirve para elegir un camino en caso de que una condición sea verdadera. Luego veremos como utilizar la instrucción IF...THEN...ELSE que sirve para tomar un camino en caso de que una condición sea verdadera u otro en caso contrario.

Trabajaremos con la anidación de estas instrucciones, o sea, con la composición de las mismas. Esto es, usar varias instrucciones IF juntas, para finalmente ver la instrucción CASE...ELSE que sirve para tomar distintos caminos según las condiciones dadas.

De este modo nuestros programas podrán hacer una cosa u otra, abriendo un abanico de posibilidades nuevas. Sin embargo, aún estaremos muy limitados porque nos hace falta la repetición, tema que se vendrá en la lección siguiente a esta.

----------------------------------------------------------------------------------

Instrucción IF...THEN:

Vimos en la lección anterior que la sintaxis genérica de esta instrucción es
Código Pascal:
Ver original
  1. If condicion then
  2.    instruccion;
Vimos además que la condición es algo del tipo BOOBLEAN, o sea, algo que puede ser verdadero o falso (TRUE, FALSE).

Estas condiciones se verán generalmente con comparaciones tales como las que ejemplifiqué en la lección anterior. Sin embargo, dichas pueden no ser numéricas, o sea, está bien comparar si un numero es mayor que otro, menor o igual, pero podemos hacer lo mismo con los demás tipos de datos.

Podemos ver si dos Strings son iguales o no, si dos caracteres son iguales o si uno es mayor que otro tal como los números.

Los caracteres están en un cierto orden que para FreePascal está designado según la Tabla Ascii, pero esto lo veremos más adelante. Lo que diré ahora que las letras están de menor a mayor o sea que

'a' es menor que 'b' que es menor que 'c', etc. De modo que es posible preguntar

'a'<'j' lo cual dará TRUE como resultado porque la 'a' es menor que la 'j' en el orden.

Las letras mayúsculas están antes que las minúsculas y también respetan el orden alfabético, por tanto

'A'<'B'<'C' etc

y además 'A'<'a'. De este modo, al igual que los número están en este orden

0 1 2 3 4 5 6 7 8 9 10 11 12 13....

las letras están en este

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g ...

Siempre que nos referimos a caracteres debemos colocarlos entre comillas simples al igual que a los strings. Un caracter corresponde al tipo char, cuando es más de un caracter entonces pasa a ser string.

'a' es del tipo char al igual que 'B' porque ambos son un solo caracter, pero 'aB' no porque son dos caracteres juntos, por tanto es un String.

Veamos un ejemplo sencillo del uso del tipo char, donde el usuario ingresará dos letras en la entrada y luego las comparamos.

Código Pascal:
Ver original
  1. PROGRAM Caracteres;
  2.  
  3. VAR
  4.     letra1, letra2: char;  //Una variable para cada letra.
  5.  
  6. BEGIN
  7.     Write('Ingrese dos letras separadas por espacios: ');
  8.     Readln(letra1,letra2);  //Leemos la entrada y la asignamos a las variables.
  9.     Writeln;   //Dejamos una línea en blanco.
  10.    
  11.    If letra1<=letra2 then
  12.       writeln('La primera letra es menor o igual a la segunda');
  13.  
  14.    If letra1>=letra2 then
  15.       writeln('La primera letra es mayor o igual a la segunda');
  16.  
  17.    Readln;
  18. END.

Este programa es bien sencillo. Tenemos dos variables del tipo char, letra1 y letra2. Las leemos tal como si fueran variables numéricas.

En la línea 11 tenemos nuestra primera sentencia IF, donde si la primera letra es menor o igual que la segunda escribimos el mensaje informativo.

En la línea 14 tenemos otra sentencia IF con una condición inversa a la primera, o sea, si letra1 es mayor o igual a letra2 escribimos el mensaje.

Prueben este programa ingresando letras. Si ingresan strings el programa se caerá porque las variables son char.

¿Qué pasa si se ingresan letras iguales? Aparecerán los dos mensajes en pantalla. Esto es porque las condiciones de ambos IF contemplan la posibilidad de que las letras sean iguales, o sea

'a'<='a' es verdadero porque la letra a no es menor que la misma a pero sí es igual.

'a'>='a' también es verdadero por la misma razón.

-------------

¿Qué pasa si se ingresan números de una cifra en la entrada? ¿Se cae el programa? Pues no. Y ustedes dirán ¿por qué no si los números no son letras?
El programa no caerá porque el tipo char admite caracteres cualesquiera de la entrada o asignación, entonces, hay que tener presente que no es lo mismo el número 1 que el caracter '1'.

Si tengo una variable a del tipo integer y una variable b del tipo char yo puedo hacer estas asignaciones:

Código:
a:= 1;
b:= '1';
Noten que para la variable b asigné el 1 entre comillas simples, o sea, el caracter 1, no el número. Un caracter es un símbolo y nada más, tal como lo son las letras, los números y todo otro caracter extraño que se les ocurra.

Si yo hago

write(a+2) mostraré en pantalla el número entero 3 porque a valía 1.

Sin embargo, si hago write(b+2) tengo un error en tiempo de compilación porque no puedo sumarle el número 2 al caracter '1', es como intentar sumarle 2 a una letra.

Tengan mucho ojo con esto.

NOTA: Vean que al final de este programa he colocado una instrucción

Código:
readln;
sin parámetros ni nada. Normalmente read y readln se usan para leer un valor de la entrada y guardarlo en una variable, sin embargo si los usamos sin parámetros, el programa quedará a la espera de que se presione ENTER para continuar ya que lea lo que lea no lo guardará en ningún lado.
De este modo el programa queda detenido al final permitiéndonos visualizar los resultados de una forma más sencilla. Sin embargo no es correcto, por lo tanto, lo mejor es que usen esta sutileza solo mientras prueban sus programas y luego, cuando estan seguros de que anda bien, la borran.

Continuaremos entonces en la parte b.

Última edición por Kyshuo; 17/11/2011 a las 10:25 Razón: Mejorar las vistas de código fuente

Etiquetas: condiciones, entrada, programa, simple, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:00.