• No se han encontrado resultados

Estructura If Esta sentencia, es considerada de alternativa doble (si se cumple condición entonces..., sino... / If... then... else... ).

N/A
N/A
Protected

Academic year: 2021

Share "Estructura If Esta sentencia, es considerada de alternativa doble (si se cumple condición entonces..., sino... / If... then... else... )."

Copied!
11
0
0

Texto completo

(1)

ESTRUCTURAS SELECTIVAS

En el capítulo 3 se vio que cada instrucción se ejecutaba en el orden en que se había escrito, pero esto no siempre ocurre así, ya que muchas veces es necesario usar estructuras de decisión del tipo si...entonces...sino.

Para realizar acciones alternativas o tomar decisiones se usan condiciones que son verdaderas o falsas y se llaman expresiones lógicas o booleanas. Las expresiones lógicas se forma utilizando los operadores relacionales siguientes: >, <, =, >=, <=, <>.

Las expresiones lógicas se pueden combinar dando expresiones más complejas, usando los operadores lógicos que presentan el siguiente orden de evaluación: not, and y or, y sus significados se pueden ver en las tablas de verdad.

Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan denominar estructuras de decisión o de alternativas. Son dos: la sentencia if y la sentencia case.

Estructura If

Esta sentencia, es considerada de alternativa doble (si se cumple cierta condición entonces ... , sino .... / If ... then ... else... ).

Pseudocódigo en castellano si <condición> entonces < acción S1> sino < acción S2 > Código de programa if <condición> then < acción S1> else < acción S2>

Su estructugrama tiene la siguiente forma:

<condición>

si no

< acción S1> < acción S2>

Es decir si la expresión que se evalúa es verdadera se ejecutará la sentencia siguiente al then, de otro modo (falso) se ejecutará la sentencia siguiente al else. Cuando se desea que se ejecute una acción determinada sólo si la condición es verdadera y no se desea ejecutar ninguna si es falsa se puede omitir el else quedando: Pseudocódigo en castellano si <condición> entonces < acción S1> Código de programa if <condición> then < acción S1>

(2)

Se observa que el punto y coma anterior al end final del if es opcional y se puede suprimir. En los ejemplos 4.1 y 4.2 se pueden ver las aplicaciones de esta estructura.

Ejemplo 1: Se leen dos valores enteros A, B. Si A es mayor que B se debe realizar la suma de ambos, en caso contrario, se debe hacer el producto.

Pseudocódigo del programa Diagrama N-S

nombre selección1(program); nombre selección1 Declaraciones (uses)

Crt, Dos;

Declaraciones Crt, Dos Variables(var);

A (valor que ingresa) : entero;

Variables

A, B, R :enteros B (valor que ingresa) : entero; Comienzo (programa) R (resultado de la oper.): entero Limpieza

inicio (begin); Ingreso

Limpieza de la pantalla A > B

Ingreso de datos Si A>B entonces

Entonces R ← A + B R ← A + B R ← A * B

Sino R ← A * B

salida resultados: Resultado

fin(end.) fin (programa)

Aquí se pueden observar varios de los pasos ya vistos. Por lo tanto sólo se desarrollará el pseudocódigo y el diagrama estructurado de la alternativa.

Pseudocódigo de la alternativa procedimiento alternativa inicio (begin); si A > B entonces R ← A + B sino R ← A * B fin(end;) Diagrama N-S A > B R ← A + B R ← A * B

(3)

El código del procedimiento es: if A > B then R := A + B else R := A * B; Ejemplo 2

Se leen dos valores enteros A, B. Si A es mayor que B se deberá realizar la suma de ambos e imprimir un cartel diciendo R es la suma de A y B. En el caso contrario, se pide hacer el producto y se debe imprimir otro cartel que diga R es el producto de A y B.

Por ser muy similar al anterior sólo se realizará la parte del programa de la decisión.

Como dentro de la alternativa se colocó la impresión de resultados el algoritmo estructurado quedará de la siguiente manera.

Algoritmo alternativa Pseudocódigo de la alternativa

si A > B

entonces R ← A + B

Imprimir cartel suma y resultados sino R ← A * B

Imprimir cartel producto y resultados

Diagrama N-S A > B R ← A + B R ← A * B Imp. Resultado y carteles Imp. Resultado y carteles

El código de la estructura es: if A > B then

begin {* comienzo del then *}

R := A + B;

writeln ( 'R es la suma de A y B = ', R); end {* fin del then *}

else

begin {* comienzo del else *}

R := A * B; {* producto *}

writeln ( 'R es el producto de A y B = ', R); end; {* fin del else *}

Nota: Cuando alguna de las opciones tiene más de una instrucción, dicha opción deberá llevar un begin con su correspondiente end. Debe notarse que el end del then no tiene puntuación y en cambio el del else si lleva punto y coma (;) esto se

(4)

SALIDAS MÚLTIPLES

Si se tiene más de dos posibles salidas, aquí aparecen dos soluciones similares al problema.

IF anidado

En esta solución se utiliza un if dentro de otro y siempre se anida por la salida Else (sino).

Ejemplo 3

Se pide un programa donde se ingrese un número entre 1 y 5, incluidos ambos y que se imprima en pantalla su expresión de caracteres es decir si ingresa 2 → imprime Dos.

En este caso se tienen cinco salidas probables (uno, dos, tres, cuatro o cinco), lo que indica que habrá 4 if anidados.

Si a = 1

Entonces impre = Uno Sino Si a = 2

Entonces impre = Dos Sino Si a = 3

Entonces impre = Tres Sino Si a = 4

Entonces impre = Cuatro Sino impre = Cinco

fin_si {* fin_si no tiene equivalente en Pascal *} fin_si fin_si fin_si <condición 1> <condición 2> < acción S1> <condición 3> < acción S2> <condición 4>

< acción S3> < acción S4> < acción S5>

El código de la estructura es:

if A = 1 then {* pregunta por uno *} writeln ( 'U n o ') {* salida por uno *} else if A = 2 then {* pregunta por dos *} writeln ( 'D o s ') {* salida por dos *}

(5)

else if A = 3 then {* pregunta por tres *} writeln ( 'T r e s ') {* salida por tres *}

else if A = 4 then {* pregunta por cuatro *} writeln ( 'C u a t r o ') {* salida por cuatro *} else writeln ( 'C i n c o '); {* salida por cinco *} Case

Esta solución se utiliza en reemplazo del if anidado. Es más práctica y eficiente y su pseudocódigo genérico es:

según...sea E hacer E1: sentencia 1 E2: sentencia 2 E3: sentencia 3 ... ... En: sentencia n [sino sentencia x ] fin...según Variable

Opción 1 Opción 2 Opción 3 Opción .. Opción n else <acción S1> <acción S2> <acción S3> <acción S..> <acción Sn> <acción Sm>

Para el problema anterior (del Ejemplo 4.3) el pseudocódigo será: según...sea A hacer

1: Imprimir “U n o” 2: Imprimir “D o s” 3: Imprimir “T r e s” 4: Imprimir “C u a t r o” sino Imprimir “C i n c o” fin...según El diagrama N - S es: A 1 2 3 4 Else Imprimir “UNO” Imprimir “DOS” Imprimir “TRES” Imprimir “CUATRO” Imprimir “CINCO”

(6)

El código de la estructura es:

case A of {* comienza seleccion *} 1 : writeln ( 'U n o '); {* salida por uno *} 2 : writeln ( 'D o s '); {* salida por dos *} 3 : writeln ( 'T r e s '); {* salida por tres *} 4 : writeln ( 'C u a t r o '); {* salida por cuatro *} else writeln ( 'C i n c o '); {* salida por cinco *} end; {* fin del case *}

(7)

P

RÁCTICA DE

S

ELECTIVAS

1. Ingrese los valores numéricos enteros A, B, C, D, E y diga si su promedio es mayor o igual a 7.

2. Dado un conjunto de 3 números A, B, C. Hacer un programa que determine cuál de los tres es el mayor valor y cuál es el menor

3. Una universidad privada cobra como arancel 150 dólares por materia que se cursa, pero si la cifra supera los 800 dólares, se cobra esa cifra (así un estudiante que cursa 3 materias paga 450 dólares y uno que cursa 10 paga 800 dólares). Hacer un programa que solicite el nombre del alumno y la cantidad de materias a cursar y saque por pantalla los dos datos ingresados y el valor a pagar (como en el ejemplo).

Alumno XXXXXXXXXXXX

Número de materias YY

Monto U$ RRR

4. Escriba un programa que le pida al usuario que ingrese una letra (minúscula), y le indique si es una vocal (a, e, i, o, u), ó si es una consonante.

5. Ingrese los valores numéricos reales a, b, c, que son coeficientes de una ecuación cuadrática y obtenga los valores X1 y X2 reales. Si la solución de la

raíz diera como resultado un valor negativo, imprima un cartel que diga “La solución son dos números complejos conjugados”.

6. Ingrese los valores numéricos reales a, b, c, que son coeficientes de una ecuación cuadrática y obtenga los valores X1 y X2 reales. Si la solución de la

raíz diera como resultado un valor negativo, imprima el resultado como “m + ni; m -ni”.

7. Escriba un programa que le pida a un usuario un número entre 20 y 99 en forma numérica y luego lo saque por pantalla en palabras.

8. Haga un programa que permita ingresar un número de 1 a 7 y salga el correspondiente día de la semana (Ej: 1 → Lunes; 2 → Martes; ...). Si ingresa un valor que no esté comprendido entre 1 y 7 deberá imprimir un cartel que diga “ERROR ... valor fuera de rango”

9. Escriba un programa que lea un número entero (variable tipo integer), y escriba cuántos dígitos tiene. Ejemplo 1285 tiene 4 dígitos.

10. Escriba un programa que ingresados tres valores enteros y positivos (A, B y C), determine si son lados de un triángulo rectángulo. En caso de serlo, indicar si A, B o C es la hipotenusa.

11. Haga un programa que permita ingresar dos números reales y el símbolo de la operación, obteniéndose el correspondiente resultado. Si el símbolo no es correcto, deberá imprimir un mensaje que indique “Error en símbolo”

12. El dueño de la pizzería de la práctica anterior ha decidido optimizar su servicio, para lo cual ha reducido a 3 los tamaños de las mismas: personal (12 cm de diámetro), chica (22 cm), grande (33 cm). Por este motivo ha solicitado una modificación al programa de manera tal que al usuario le aparezcan la tres posibilidades, y el usuario solo pueda elegir entre una de esas posibilidades.

(8)

P

RÁCTICA DE

E

STRUCTURAS

C

ÍCLICAS

1. Leer una lista de 10 valores enteros, calcular e informar: − La suma de los valores positivos.

− El producto de los valores negativos. (ignorar los valores nulos).

2. Ingresar 5 juegos de cuatro valores cada uno: calcular y emitir el promedio de cada juego.

3. Ingresar N juegos de cuatro valores cada uno; calcular y emitir el promedio de cada juego. El proceso finaliza al encontrarse un juego cuyo primer valor es 0. 4. Ingresar dos números enteros positivos y calcular el producto de los mismos por

sumas sucesivas.

5. Leer una lista de números positivos que finaliza en cero y emitir el valor mínimo de la lista.

6. Leer una lista de números enteros que finaliza en cero y emitir el valor máximo de lista.

7. Idem a 5, emitiendo además la ubicación del máximo dentro de la lista. (suponer un único máximo).

8. Leer 4 juegos de N valores enteros cada uno, donde N se informa al comienzo de cada juego, y emitir el valor máximo de cada grupo. (suponer un único máximo). 9. Dada una lista de valores numéricos positivos, finalizada en cero, indicar si está

ordenada en forma ascendente.

10. Una empresa informa para cada uno de sus 20 vendedores: Código de vendedor 3 dígitos

Importe de ventas del mes Real

Se desea emitir el importe máximo de ventas del mes y cuántos vendedores alcanzaron dicho importe

11. En una central telefónica se procesan los llamados realizados en la siguiente forma por cada llamada que ingresa:

Código de la llamada 3 dígitos (cero al finalizar el proceso) Tipo de día "1" hábil y "2" feriado

Duración de la llamada

Entero > cero

Los importes son: Primeros 3 minutos Minuto adicional

Días hábiles 10 2

Días feriados 15 3

Se deberá emitir:

− El importe a abonar por cada llamada.

− La cantidad de llamadas que superen los tres minutos

− El porcentaje de llamados que superen los tres minutos. (Sobre el total de llamadas informadas).

(9)

12. Se leen 30 valores reales (comprendidos entre 5 y 40), que representan la temperatura máxima de cada uno de los día de un mes, se pide hallar:

La temperatura máxima del mes y el día que se produjo. (se supone única).

− Cuántos días la temperatura superó los 25 grados centígrados. − El promedio de las temperaturas del mes:

13. Se ingresan los resultados de la evaluación de un grupo de un curso de programación, por cada alumno se informa:

Número de matrícula 4 dígitos (1-9999)

Asistencia 1 para presente, 0 para ausente Calificación 2 dígitos (0-10)

A partir de esta información se debe calcular e informar: − Cantidad y porcentaje de alumnos presentes.

− Porcentaje de alumnos aprobados (sobre el total de alumnos presentes). 14. En la pizzería de las prácticas anteriores se ha determinado que los costos de los

complementos no son en todo los caso iguales: sus valores son los siguientes en $/cm2: Doble muzzarella 0.003 Morrones 0.004 Jamón 0.006 Longaniza 0.005 Roquefort 0.008 Palmitos 0.010 Aceitunas negras 0.002

Por lo tanto, se pide un modificación que le permita al usuario elegir si desea o no complementos y cuáles desea.

Para pensar....

15. Realice un programa que permita resolver un sistema de dos ecuaciones con dos incógnitas del tipo Ax + By + C = 0.

16. Realice un programa que permita calcular la intersección de dos rectas de la forma y= mx + b.

(10)

Bibliografía

1. De Giusti A. Algoritmos, Datos y Programas. Pearson. 2002

2. Joyanes Aguilar L.: Turbo Pascal 5.5 6.0 y 7.0. Editorial Mc. Graw-Hill. 2001.

3. Leetsma S. Y Nyhoff L. Programación en Pascal. Prentice Hall 1999

4. Lopez Leobaldo. Programación estructurada en Turbo Pascal 7. Alfaomega.

5. Dale N. y Lilly S.: Pascal y Estructura de datos. Editorial Mc. Graw-Hill.

6. O´Brien y Nameroff. Turbo Pascal 7 Manual de Referencia. Mac Graw Hill

7. Weiss. Estructuras de Datos y Algoritmos. Addison Wesley

8. Grogono P.: Programación en Pascal. Editorial Prentice Hall.

9. Alcalde E. y otros (1988): Informática Básica. Editorial Mc Graw Hill. (Cap 2)

10. Wirth N.: Algorithms + Data Structures = Programs. Editorial Prentice Hall.

11. Wirth N.: Introducción a la Programación Sistemática. Editorial El Ateneo.

12. Braunstein y Gioia: Introducción a la Programación y Estructuras de Datos.

Editorial Eudeba.

13. Carroll: Turbo Pascal. Editorial Mc. Graw-Hill.

14. Schildt: Programación y técnicas en Pascal avanzado. Editorial Mc. Graw Hill.

15. Dijkstra-Hoare: Structured Programming. Academic Press.

16. Cataldi Z. y Lage F., 2000 - Algoritmos I. Recopilación de los Algoritmos

(11)

Referencias

Documento similar

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

Sanz (Universidad Carlos III-IUNE): &#34;El papel de las fuentes de datos en los ranking nacionales de universidades&#34;.. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y

En la parte central de la línea, entre los planes de gobierno o dirección política, en el extremo izquierdo, y los planes reguladores del uso del suelo (urbanísticos y