You are on page 1of 46

Estructuras de decisin simple

y doble
Programacin 1
Ctedra de Programacin
Departamento de Computacin
Escuela de Ingeniera de Sistemas

Estructuras no secuenciales
z Los programas que hemos escrito hasta ahora han
consistido en una serie de sentencias que se ejecutan
secuencialmente, una despus de la otra (asignacin,
lectura y escritura).
z Flujo de control: Habilidad de definir el orden en el
cual las sentencias de un programa son ejecutadas

{Estructuras de decisin o seleccin


{Estructuras de repeticin

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

Estructuras de decisin
z Permite seleccionar la prxima sentencia a ejecutarse
basndose en una condicin (expresin lgica o una
variable lgica) que es evaluada y, en funcin del
resultado (cierto o falso) de la evaluacin, se bifurcar
a un determinado punto para continuar la ejecucin del
programa
z Tipos:
{Simple
{Doble
{Mltiple
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

Estructura de decisin simple


Diagrama de flujo

condicin
cierto
acciones

Marzo 2004

falso

z Pseudocdigo en espaol
Si (<condicin>) entonces
S1
.
Sn
fsi
z Cdigo en C/C++
if (<condicin>)
{
S1
.
Sn
}
Departamento de Computacin. Ctedra de Programacin.
Programacin 1.

Estructura de decisin simple

zEsta estructura evala la condicin


{Si la condicin es cierta entonces ejecuta
el conjunto de sentencias definidas por Si
con i = 1 .. N
{Si la condicin es falsa entonces NO
ejecuta el conjunto de sentencias definidas
por Si con i = 1 .. N

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

Estructura de decisin simple


Diseo

Cdigo en C/C++

Si ( x > 0.0 ) entonces


if( x > 0.0) cout << x es positivo <<
escribir x es positivo endl;
fsi
Si (a < b ) entonces
b=a+b
fsi

if(a < b) b=a+b;

NOTA: Cuando hay una sola sentencia asociada al if no se escribe { }.

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

Estructura de decisin simple


Diseo
Si ( nota > 15 ) entonces
conta=conta+1
escribir Eximido
fsi
Si (x 0.0 ) entonces
y=x+y
cont=cont+1
fsi

Cdigo en C/C++
if( nota > 15 )
{ conta++;
cout << Eximido << endl;
};
if( x >= 0.0 )
{ y += x;
cont++;
};

NOTA: Cuando hay mas de una sentencia asociada al if se coloca { }


Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

Ejemplo 1
#include <iostream.h>
#define falso 0
#define cierto 1
void main ()
{
int miPrimeraLogica, miSegundaLogica;
miPrimeraLogica = cierto;
miSegundaLogica = !miPrimeraLogica;
if ( miSegundaLogica == cierto)
cout << "miSegundaLogica debe tener el valor cierto" << endl;
if ( !miSegundaLogica == cierto)
cout << "miSegundaLogica debe tener el valor falso" << endl;
}

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

Ejemplo 2
Dados tres nmeros enteros, determinar si la suma de cualquier
pareja de ellos es igual al tercer nmero. Si se cumple esta
condicin, escribir Iguales y, en caso contrario, escribir
Distintos.
Anlisis E-P-S
Entradas: A, B, C Z
Proceso:
- Determinar si A + B = C
Iguales
- Determinar si A + C = B
Iguales
- Determinar si B + C = A
Iguales
- Si no se cumple ninguno de los anteriores Distintos
Salida: Mensaje indicando si la suma de dos nmeros es
igual Iguales o diferente Distintos a un tercero.
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

Diseo del ejemplo 2


Ejemplo2
{pos: A, B, C }

{pre: ninguna}
1
2
3
4
5
6

1
2

Escribir Introduzca tres numeros enteros


Leer A, B, C
Si (A+B = C) entonces
Escribir Iguales
fsi
Si (A+C = B) entonces
Escribir Iguales
fsi
Si (B+C = A) entonces
Escribir Iguales
Fsi
Si ((A+BC) (A+CB) (B+CA)) entonces
Escribir Distintos
fsi

zA, B, C: Entero. Valores de


entrada para determinar si la suma de
cualquier pareja de ellos es igual al
tercer nmero

A = 0, B = 0, C = 0 -> Iguales
A = 4, B = 3, C = 8 -> Distintos

Caso exitoso
Caso exitoso

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

10

Cdigo del ejemplo 2


Codificacin
#include <iostream.h>
void main ()
{
int A, B, C;
cout << Introduzca tres nmeros enteros << endl;
cin >> A >> B >> C;
if (A + B == C)
cout <<Iguales << endl;
if (A + C == B)
if((A+B == C) && (A+C == B) && (B+C == A))
cout << Iguales\n;
cout <<Iguales << endl;
if (B + C == A)
cout << Iguales << endl;
if ((A + B != C) && (A + C != B) && (B + C != A))
cout << Distintos << endl;
if !((A+B == C) && (A+C == B) && (B+C == A))
}
cout << Distintos\n;
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

11

Anidamiento de estructuras de
decisin
z Se anidan colocando una en el interior de la otra
Diseo

Cdigo en C/C++

Si ( condicin1 ) entonces if( condicion1 )


..
{
Si (condicin2) entonces
if( condicion2 )
..
{ ..
fsi
}
fsi
};
Anidamiento NO vlido
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

12

Ejemplo de anidamiento
Diseo

Cdigo en C/C++

if( edad < 18 )


Si ( edad < 18 ) entonces
{ cout << Menor de edad << endl;
Escribir Menor de edad
menores++;
menores=menores+1
if( sexo == F )
Si (sexo = F) entonces
{ cout << Sexo femenino << endl;
Escribir Sexo femenino
femenino++;
}
femenino=femenino+1
};
fsi
fsi

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

13

Ejemplo de anidamiento
Diseo

Cdigo en C/C++

if( edad < 18 )


Si ( edad < 18 ) entonces
{ cout << Menor de edad << endl;
Escribir Menor de edad
menores++;
menores=menores+1
if( sexo == F || sexo == f )
Si (sexo = F) entonces
{ cout << Sexo femenino << endl;
Escribir Sexo femenino
femenino++;
}
femenino=femenino+1
};
fsi
fsi

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

14

Ejemplo de anidamiento

Diseo

Cdigo en C/C++

if( edad < 18 )


Si ( edad < 18 ) entonces
if( sexo == F || sexo == f )
Si (sexo = F) entonces
{ cout << Sexo femenino << endl;
Escribir Sexo femenino
femenino++;
femenino=femenino+1
};
fsi
fsi

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

15

Ejercicios
1. Si x = 15 determinar su valor despus de la ejecucin
del siguiente segmento de programa en C++:
if( x > 0 )

x+=32;

2. Si z = 6.7 determinar el valor de la variable conta


despus de la ejecucin del siguiente segmento de
programa en C++:
conta = 0;
neg = 0;
if (z < 0.0) neg = neg + z;
conta = neg + 1;
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

16

Ejercicios
3. Si z = 6.7 determinar el valor de la variable conta despus
de la ejecucin del siguiente segmento de programa en
C++:
conta = 0;
neg = 0;
if (z < 0.0)
{
neg = neg + z;
conta = neg + 1;
conta = 0
}
neg = 0
(6.7 < 0.0) falso

conta = 0

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

17

Ejercicios
4.

Determinar el precio de un pasaje de ida y vuelta en avin,


conociendo la distancia a viajar, cuando el nmero de das de
estancia es superior a 7 y la distancia superior a 800 km. El precio
por km. es p Bs.
Anlisis E-P-S
{ Entrada:
z El precio por Km.
(p +)
z La distancia a viajar (d +)
z El nmero de das de estancia
(dias Z+)
{ Proceso:
Si el nmero de das de estancia es > 7 y la distancia es > 800
km, el precio es 2dp
sino el precio es dp
{ Salida: Precio del pasaje (precio +)

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

18

Ejercicios
precioPasajeAvion
{pos: precio +}

{pre: ninguna}

zd: Real+. Distancia en km. a viajar.


zp: Real+. Precio por kilometro
recorrido.
zdias: Entero+. Nmero de das de
estada en el lugar.
zprecio: Real+. Precio en bolvares
del pasaje ida y vuelta en avin.

Escribir Introduzca la diatancia en km. a viajar


Leer d
Escribir Introduzca el precio por km.
Leer p
Escribir Introduzca cuantos das de estadia
Leer dias
precio = pd
Si ((dias > 7) (d > 800)) entonces
precio = 2dp
fsi
Escribir Precio a pagar , precio

1
2
3

d = 0.0, p = 0.0, dias = 0 -> precio = 0.0


d = 450.0, p = 500.0, dias = 8 -> precio = 225000.00
d = 950.0, p = 300.0, dias = 8 -> precio = 570000.00

Caso exitoso
Caso exitoso
Caso exitoso

1
2
3
4
5
6
7
8

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

19

Estructura de decisin doble


Diagrama de flujo
cierto

condicin

acciones

Marzo 2004

falso

acciones

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

20

Estructura de decisin doble


Pseudocdigo en espaol
Si (<condicin>)entonces
S11
.
S1n
sino
S21
.
S2m
fsi

Marzo 2004

Cdigo en C/C++
if (<condicin>)
{
S11
.
S1n
}
else
{
S21
.
S2m
}

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

21

Estructura de decisin doble


z Permite elegir entre dos opciones o alternativas
posibles, en funcin del cumplimiento o no de la
condicin:
{Si el resultado de evaluar la condicin el CIERTO se
ejecutar un determinado grupo de sentencias S1i, i =
1, .., n.
{Si el resultado de evaluar la condicin es FALSO se
ejecutar un determinado grupo de sentencias S2k, k =
1, .., m

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

22

Estructura de decisin doble


Pseudocdigo en Espaol

Cdigo en C/C++

Si (nota > 10) entonces


Escribir Aprobado
sino
Escribir Reprobado
fsi

if ( nota >= 10 ) cout << Aprobado\n


else cout << Reprobado\n;

Si (nota > 10) entonces


notaMas=notaMas+nota
Escribir Aprobado
sino
Escribir Reprobado
fsi

if ( nota >= 10 )
{ notaMas+=nota;
cout << Aprobado\n
}
else cout << Reprobado\n;

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

23

Estructura de decisin doble


Pseudocdigo en Espaol

Cdigo en C/C++

Si (nota > 10) entonces


Escribir Aprobado
sino
reprobado=reprobado+1
Escribir Reprobado
fsi

if ( nota >= 10 ) cout << Aprobado\n


else
{ cout << Reprobado\n;
reprobado++;
};

Si (nota > 10) entonces


aprobado=aprobado+1
Escribir Aprobado
sino
reprobado=reprobado+1
Escribir Reprobado
fsi

if ( nota >= 10 )
{ aprobado++;
cout << Aprobado\n;
}
else
{ reprobado++;
cout << Reprobado\n;
};

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

24

Ejemplo 3
#include <iostream.h>
void main ( )
{
int miEntero;
cout << Introduzca un numero entero << endl;
cin >> miEntero;
if ( miEntero == 0 )
cout << "miEntero es igual a cero << endl;
else
cout << "miEntero no es igual a cero << endl;
cout << termino el programa << endl;
}
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

25

Ejemplo 4
#include <iostream.h>
void main ()
{
int m;
cout << Introduzca un numero entero << endl;
cin >> m;
if ( (m >= 1) && (m <= 10) )
cout << m << esta entre 1 y 10" << endl;
else
cout << m << no esta entre 1 y 10" << endl;
}
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

26

Ejemplo 5
Calcular el salario mensual de un empleado, sabiendo que ste se
calcula en base a las horas semanales trabajadas y de acuerdo a un
precio especificado por hora. Si se pasa de las 40 horas
semanales, las horas extras se pagarn a razn de 1,5 veces la
hora ordinaria.
Anlisis E-P-S
Entradas: Horas semanales trabajadas (HST + )
Precio por hora (PH + )
Proceso: - Si horas semanales trabajadas (HST) <= 40
Calcular salario mensual (SM) = HST * PH
- Si horas semanales trabajadas (HST) > 40
Calcular salario mensual
(SM) = 40 * PH + PH*1,5*(HST-40)
Salida: salario mensual (SM + )
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

27

Diseo ejemplo 5
salarioMensual
{pre: ninguna}
1
2
3
4
5

{pos: SM + }
-HST: Real+. Horas
semanales trabajadas.
-PH: Real+. Precio por
horas.
-SM: Real+. Sueldo
mensual.

Escribir Introduzca el numero de horas trabajadas


Leer HST
Escribir Introduzca el precio por hora
Leer PH
Si ( HST 40 ) entonces
SM=HST*PH
sino
SM = 40 * PH + PH*1,5*(HST-40)
fsi
Escribir Sueldo mensual = , SM

1
2
3

HST = 44.0, PH = 850.0 -> SM = 39100.0


HST = 0.0, PH = 950.0 -> SM = 0.0
HST = 47.0, PH = 0.0 -> SM = 0.0

Caso exitoso
Caso exitoso
Caso exitoso

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

28

Ejemplo 6
Escriba un programa que lea un nmero entero y compruebe
si es correcto. En caso de que sea correcto, el programa
imprimir el mensaje CORRECTO, si no es correcto, el
programa imprimir el mensaje "ERROR - nmero
incorrecto". Considere los siguientes casos para decidir si un
nmero es o no correcto:
a) El nmero es correcto si se encuentra en el rango
definido por dos valores constantes MINIMO y MAXIMO.
(MINIMO < num < MAXIMO)
b) El nmero es correcto si es uno de los tres valores
constantes VALOR1, VALOR2 o VALOR3.
(num = VALOR1 o num = VALOR2 o num = VALOR3)

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

29

Continuacin ejemplo 6
c) El nmero es correcto si se encuentra en el
rango definido por dos valores constantes MINIMO
y MAXIMO, o bien es igual al valor constante
VALOR1.

(MINIMO < num < MAXIMO o num = VALOR1)

d) El nmero es correcto si se encuentra en el


rango definido por dos valores constantes MINIMO1
y MAXIMO1, o bien en el definido por los valores
constantes MINIMO2 y MAXIMO2.
(MINIMO1 < num < MAXIMO1 o
MINIMO2 < num < MAXIMO2 )

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

30

Anlisis ejemplo 6
Anlisis E-P-S
Entradas: numero entero (num Z)
Proceso:
- Si (MINIMO < num < MAXIMO) o
(num = VALOR1 o num = VALOR2 o num = VALOR3) o
(MINIMO < num < MAXIMO o num = VALOR1) o
(MINIMO1 < num < MAXIMO1 o
MINIMO2 < num < MAXIMO2 ) el nmero es correcto
si el nmero no cumple ninguna de estas condiciones es
incorrecto

Salidas: Mensaje indicando si el nmero es o no


correcto
Los valores de las constantes MINIMO, MAXIMO, VALOR1, VALOR2, VALOR3,
MINIMO1, MAXIMO1, MINIMO2 y MAXIMO2 deben ser conocidos
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

31

Diseo ejemplo 6
numeroCorrecto
{pre: ninguna}

{pos: ninguna }

1
2
3

Escribir Dame un numero entero


Leer num
Si ((4 num num 65) (num = 3 num = 12
num = 23) (4 num num 65 num = 3)
(34 num num 128 43 num num 45))
entonces
Escribir Correcto
sino
Escribir ERROR - numero incorrecto
fsi

-num: Entero.
Numero a verificar
su correctitud.

1
2

num = 20 -> Correcto


num = -8 -> ERROR - numero incorrecto

Caso exitoso
Caso exitoso

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

32

Codificacin ejemplo 6
#include <iostream.h>
#define MINIMO
#define MAXIMO
#define VALOR1
#define VALOR2
#define VALOR3
#define MINIMO1
#define MAXIMO1
#define MINIMO2
#define MAXIMO2

Marzo 2004

4
65
3
12
23
34
128
43
45

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

Los valores
constantes se
definen al inicio del
programa

33

Codificacin ejemplo 6
void main ()
{
int num;
cout << Introduzca el numero << endl;
cin >> num;
if ((num >= MINIMO && num < = MAXIMO) ||
(num == VALOR1 || num == VALOR2 || num == VALOR3) ||
(num >= MINIMO && num < = MAXIMO || num ==
VALOR1) || (num >= MINIMO1 && num < = MAXIMO1 ||
num >= MINIMO2 && num < = MAXIMO2))
cout << CORRECTO << endl;
else
cout << ERROR - numero incorrecto << endl;
}
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

34

Estructuras de decisin doble


anidadas
Pseudocdigo en Espaol
Si (<condicin1>) entonces
sentencias1
sino
Si (<condicin2>) entonces
sentencias2
sino
Si (<condicin 3>) entonces
sentencias3
fsi
fsi
fsi

Marzo 2004

If (<condicin1>)
{
sentencias1
}
else if(<condicin2>)
{ sentencias2
}
else if(<condicin3>)
{
sentencias3
}

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

Codificacin en C/C++

35

Ejemplo 7
#include <iostream.h>
void main ()
{
int a1;
cout << Introduzca un valor entero << endl;
cin >> a1;
if ( a1 >= 0 )
if ( a1 <= 10 )
cout << el numero esta entre 0 y 10 << endl;
else
cout << el numero no esta entre 0 y 10 << endl;
}
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

36

Ejemplo 8
#include <iostream.h>
void main ()
{
int a1;
cout << Introduzca un valor entero << endl;
cin >> a1;
if ( a1 >= 0 )
{
if ( a1 <= 10 )
cout el numero esta entre 0 y 10 << endl;
a1++;
}
else
cout << el numero es negativo << endl;
}

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

37

Ejemplo 9
z Dados tres nmero enteros, decidir cual es el central
Anlisis E-P-S
Entradas: A, B, C Z
Proceso: - Determinar si A es central o B es central o C es central
C
B
A
A > B > C B es central
B
C
A
A > C > B C es central
B > A > C A es central
B
C
A
B > C > A C es central
B
C
A
C > A > B A es central
B
C
A
C > B > A B es central
A

A = B = C No hay central
A = B A = C B = A No hay central
Salida: valor central, si lo hay

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

38

Diseo ejemplo 9
{pre: ninguna}

numeroCentral

{pos: ninguna }

1
2
3

Escribir (Introduzca tres nmeros enteros)


Leer (A, B, C)
Si ((A = B) (A = C) (B = C)) entonces
Escribir No hay central, los tres valores son iguales
sino Si ((A = B) (A = C) (B = C)) entonces
Escribir No hay central, hay dos valores iguales
sino Si (A > B) entonces
Si (B > C) entonces
central = B
sino
Si (A > C) entonces
central = C
sino
central = A
fsi
fsi
sino Si (A > C) entonces
central = A
sino Si (C > B) entonces
central = B
sino
central = C
fsi
fsi
fsi
Escribir El valor central es , central
fsi
fsi

-A, B, C: Entero. Nmeros ledos para


encontrar cual de ellos es el central
-central: Entero. Nmero central

1
2
3
4

A = 20, B = 40, C = 50 -> central = 40


A = 35, B = 10, C = 100 -> central = 35
A = 0, B = 0, C = 0 -> No hay central, los tres valores son iguales
A = 3, B = 100, C = 100 -> No hay central, hay dos valores iguales

Caso exitoso
Caso exitoso
Caso exitoso
Caso exitoso

Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

39

Codificacin ejemplo 9
#include <iostream.h>

else if (A > C)
central = A;
else if (C > B)
central = B;
else
central = C;
cout << el nmero central es =
<< central << endl;
}

void main ()
{
int A, B, C, central;
cout << Introduzca tres nmeros enteros
<< endl;
cin >> A >> B >> C;
if((A == B) && (A == C) && (B == C))
cout << No hay central, los tres valores
son iguales\n;
else if((A == B) || (A == C) || (B == C))
cout << No hay central, hay dos
valores iguales\n;
else
{ if (A > B)
if (B > C)
central = B;
else if (A > C)
central = C;
else
central = A;
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

40

Ejercicios
Realice el anlisis E-P-S, algoritmo y codificacin para
cada uno de los siguientes problemas:
1.

2.

Marzo 2004

Leer un nmero entero n y calcular e imprimir su


inverso 1/n. Considerar el caso especial del valor 0, en
cuyo caso el programa deber escribir el mensaje
"ERROR -divisin por cero".
Leer el valor de un ao e indicar si es o no un ao
bisiesto. Recordar la regla:
"Un ao es bisiesto si es divisible por 400, o bien si es
divisible por 4 pero no por 100

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

41

Ejercicios
3.

Marzo 2004

Leer un instante de tiempo expresado en horas y


minutos y escribir como respuesta uno de los
mensajes "Buenos das", "Buenas tardes" o
"Buenas noches", de acuerdo con las siguientes
reglas:
a) Se considera que es de da desde las 7:30 horas
hasta las 14:00 horas.
b) Se considera que es por la tarde desde las 14:01
horas hasta las 20:30 horas.
c) Se considera que es de noche desde las 20:31
horas hasta las 7:29 horas.
Departamento de Computacin. Ctedra de Programacin.
Programacin 1.

42

Ejercicios
4. Leer un caracter y deducir si est o no
comprendido entre las letras I y M ambas
inclusive.
5. Emitir la factura correspondiente a una compra de
un artculo determinado del que se adquieren una
o varias unidades. El IVA a aplicar es del 12% y
si el precio bruto (precio de venta + IVA) es
mayor de 50.000 Bs., se aplicar un descuento del
5%.
6. Leer las coordenadas cartesianas (x, y) de un
punto del plano y calcular e imprimir el cuadrante
al cual pertenece el punto (I, II, III, IV).
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

43

Ejercicios
7.

Marzo 2004

Se desea obtener la nmina semanal -salario neto- de los


empleados de una empresa cuyo trabajo se paga por horas y
del modo siguiente:
{ Las horas inferiores o iguales a 35 horas (normales) se
pagan a una tarifa determinada que se debe introducir
por teclado al igual que el nmero de horas.
{ Las horas superiores a 35 se pagarn como extras al
precio de 1.5 horas normales.
{ Los impuestos a deducir a los trabajadores varan en
funcin de su sueldo mensual:
z Sueldo < 80.000 libre de impuestos
z Los siguientes 100.000 Bs. al 20%
z El resto al 30%
Departamento de Computacin. Ctedra de Programacin.
Programacin 1.

44

Ejercicios
8.

9.

Marzo 2004

Determinar el precio de un pasaje de ida y vuelta en avin,


conociendo la distancia a viajar y sabiendo que si el nmero
de das de estancia es superior a 7 y la distancia superior a
800 km. el pasaje tiene una reduccin del 30%. El precio
por km. es 2500 Bs.
Dado un reloj de 24 horas y un tiempo representado en
forma de entero de la forma hhmm, donde hh representa
las horas (00 a 23) y mm representa los minutos (00 a 59),
determinar el tiempo despus de que han pasado h horas y
m minutos.

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

45

Ejercicios
10. Resolver una ecuacin de primer grado. Si la ecuacin es
ax + b = 0, las posibles soluciones son:

{ a 0 entonces x = -b/a
{ a = 0 y b 0 entonces la solucin es imposible
{ a = 0 y b = 0 entonces la solucin es
indeterminada

11. Escribir un programa que convierta de grados Fahrenheit a


Celsius y viceversa. El programa deber leer en primer lugar
un nmero entero que indicar si se va a convertir de
grados Fahrenheit a Celsius (1) o de grados Celsius a
Fahrenheit (2). Seguidamente leer el valor de la
temperatura, realizar la conversin aplicando la frmula
adecuada e imprimir.
Marzo 2004

Departamento de Computacin. Ctedra de Programacin.


Programacin 1.

46

You might also like