algoritmos

19
EJERCICIO 1 Desarrollar un algoritmo que calcule el volumen de aire que contiene una pelota, perfectamente esférica: ANALISIS DE(datos de entrada): Radio de la esfera DS(datos de salida): Volumen de la esfera Debo saber que: Volumen= 4/3 * PI * radio^3 DISEÑO Algoritmo Vesfera Léxico Radio, volumen : R Inicio Escribir ("ingrese el valor del radio de la esfera" ) Leer (Radio) Volumen ← 4/3 * π * radio^3 Escribir ("El volumen de la esfera es", Volumen) Fin PASCAL Program Ejuno; Var Radio, Volumen, Con , con2 : Real; Begin Con := 3.14; Con2:= 3/4; Writeln ('Ingrese el valor del radio de la esfera'); Readln (Radio); Volumen := Radio*Radio*Radio*con*con2; Writeln ('El volumen de la esfera es', Volumen); End. EJERCICIO 2

description

algoritmos

Transcript of algoritmos

Page 1: algoritmos

EJERCICIO 1 

Desarrollar un algoritmo que calcule el volumen de aire que contiene una pelota, perfectamente esférica: 

ANALISIS 

DE(datos de entrada): Radio de la esfera DS(datos de salida): Volumen de la esfera Debo saber que: Volumen= 4/3 * PI * radio^3 

DISEÑO 

Algoritmo Vesfera Léxico Radio, volumen : R Inicio Escribir ("ingrese el valor del radio de la esfera" ) Leer (Radio) Volumen ← 4/3 * π * radio^3 Escribir ("El volumen de la esfera es", Volumen) Fin 

PASCAL 

Program Ejuno; Var Radio, Volumen, Con , con2 : Real; Begin Con := 3.14; Con2:= 3/4; Writeln ('Ingrese el valor del radio de la esfera'); Readln (Radio); Volumen := Radio*Radio*Radio*con*con2; Writeln ('El volumen de la esfera es', Volumen); End. 

EJERCICIO 2 

Desarrollar un algoritmo que convierta un numero de segundos en su equivalente en minutos y segundos. Por ejemplo dado 1300 segundos el algoritmo deberá calcular 21 minutos 40 segundos.. 

ANALISIS 

Page 2: algoritmos

DE: Segundos transcurridos DS: Su equivalente en Min-Seg Debo saber que: El DIV me devuelve el valor entero de la división, y el MOD su resto. 

DISEÑO 

Algoritmo Léxico seg, seg2, min : Z Inicio Escribir ("Ingrese segundos" ) Leer (seg) min ← seg div 60 seg ← seg mod 60 Escribir (" Los minutos y segundos equivalentes son " min "y" seg) Fin 

PASCAL 

Program Minseg; Uses crt; Var seg, seg2, min : Integer; Begin Clrscr; Writeln ('Ingrese segundos'); Readln (seg); min:= seg div 60; seg2:= seg mod 60; Writeln ('El equivalente en minutos y segundos es ', min, ' minutos ',seg2,' segundos'); End. 

EJERCICIO 3 

Desarrollar un algoritmo que encuentre el máximo entre 3 números: FORMULA máximo entre dos números---> Máximo = ((a+b)+abs (a-b))/2 

ANALISIS 

DE: Tres números reales DS: 1 Numero real Debo saber que: Máximo = ((a+b)+abs (a-b))/2 

Page 3: algoritmos

DISEÑO 

Algoritmo Maximo; Léxico a,b,c,max,maximo : R Inicio Escribir (“Ingrese tres números”) Leer (a,b,c) max ← ((a+b)+abs(a-b))/2 maximo ← ((max + c) + abs (a-b))/2 Escribir (“El máximo es”, maximo) Fin 

PASCAL 

Program Maximi; var a,b,c,max,maximo : Real; begin Writeln ('Ingrese tres numeros'); Readln (a); Readln (b); Readln (c); max:=((a+b)+abs(a-b))/2; maximo:= ((max + c) + abs (max - c))/2; Writeln ('El maximo es', maximo:10:2); End. 

EJERCICIO 4 

Desarrollar un algoritmo que detecte si un numero dado es positivo o negativo. 

ANALISIS 

DE: un numero real DS: Un mensaje afirmativo si el numero es negativo 

DISEÑO 

Algoritmo Negativo Lexico a : R Inicio 

Page 4: algoritmos

Escribir(“Ingrese un numero”) Leer (a) Si a >= 0 entonces Escribir (“El numero es negativo”) Sino Escribir (“Es positivo”) Fin 

PASCAL 

Program Negative; Uses crt; Var a:real; Begin clrscr; Writeln ('Ingrese un numero'); Readln (a); If a<=0 then Writeln ('El numero es negativo') else Writeln ('POSITIVO'); End. 

EJERCICIO 5 

Elaborar un algoritmo que lea dos números desde el teclado y si el primero es mayor que el segundo, intercambie sus valores. 

ANÁLISIS 

DE:dos números reales DS:dos números reales Debo saber que: En este caso debemos intercambiar los valores SIN utilizar ningun tipo de variable auxiliar. 

DISEÑO 

Algoritmo Intercambiar Léxico a,b : R Inicio Escribir (“Ingrese dos numero”) Leer (a,b) Si a>b entonces 

Page 5: algoritmos

a ← a+b b ← a-b a ← a-b Escribir (“Los números ingresados intercambiados son”,a “y”, b) Fin 

PASCAL 

program Intercambiar; Uses crt; Var a,b : Real; Begin clrscr; Writeln ('Ingrese dos numeros'); Readln (a); Readln (b); If a>b then a := a+b; b := a-b; a := a-b; Writeln ('Los valores intercambiados son ', a:10:2 , ' y ', b:10:2); End. 

EJERCICIO 6 

Desarrollar un algoritmo que detecte si se han introducido tres numeros en orden creciente. 

ANALISIS DE: tres numeros reales DS: Un mensaje afirmativo si los numeros fueron ingresados en forma creciente. 

DISEÑO 

Algoritmo creciente Léxico a,b,c : R Inicio Escribir (“Ingrese tres números”) Leer (a,b,c) Si a < b < c entonces Escribir (“Los números fueron ingresados en orden creciente”) 

Page 6: algoritmos

sino Escribir (“No”) Fin 

PASCAL 

program creciente; Uses crt; var a,b,c : Real; begin clrscr; Writeln ('Ingrese tres numeros'); Readln (a); Readln (b); Readln (c); If (a < b) and (b< c) then Writeln ('Los numeros fueron ingresados en orden creciente') else Writeln ('No'); End. 

EJERCICIO 7 

Desarrollar un algoritmo que lea desde el teclado el importe bruto de una factura y determine el importe neto según los siguientes criterios: -Importe bruto menor a 20.000 → Sin descuento -Importe bruto mayor a 20.000 → 15% de descuento 

ANALISIS DE: un numero real DS: un numero real Debo saber que: -Importe bruto menor a 20.000 → Sin descuento -Importe bruto mayor a 20.000 → 15% de descuento 

DISEÑO 

Algoritmo Importe Léxico importe:R Inicio Escribir (“Ingrese el importe bruto”) 

Page 7: algoritmos

Leer (importe); Si importe > 20.000 entonces importe ← importe + (importe * 0,15) Escribir (“El importe mas el descuento es”, importe) sino importe ← importe Escribir (“No hay descuento el importe es”, importe) Fin 

PASCAL 

Program Impor; Uses crt; var importe:Real; Begin clrscr; Writeln ('Ingrese el importe bruto'); Readln (importe); If importe >= 20000 then importe := importe - (importe * 0.15); Writeln ('El importe mas el descuento es', importe:10:2); If importe < 20000 then Writeln ('El importe sin descuento es', importe:10:2); End. 

EJERCICIO 8 Desarrollar un algoritmo que una vez leída una Fecha en formato dd/mm/aaaa, indique cual sera la fecha un día después. 

ANALISIS 

DE: 3 variables correspondientes a dd mm y aaaa DS: 3 variables, correspondientes a dd mm y aaaa pero un dia despues 

PASCAL 

Program gdosEjentr; 

Var 

Mes31, Mes30, Mes28, Mes12, aniobisiesto : Boolean;

Page 8: algoritmos

dia, mes, anio : integer; 

Begin 

{Pre-Condicion: Dia > 0, mes > 0, anio > 0} 

Writeln ('Ingrese el dia mes y año en formato dd / mm / aaaa'); 

Readln (dia); 

Readln (mes); 

Readln (anio); 

Mes31 := (mes= 01) or (mes= 03) or (mes= 05) or (mes= 07) or(mes= 08) or(mes= 10); 

Mes30 := (mes=04) or (mes=06) or (mes=09) or (mes=11); 

Mes28 := (mes=02); 

Mes12 := (mes=12); 

Aniobisiesto := ((anio mod 4 =0) and (anio mod 100 <> 0)) or (anio mod 400=0); 

If (dia < 31) and (mes31) then 

Begin 

dia := dia+1; 

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio) 

End 

else begin 

If ( dia < 30) and (mes30) then 

Begin 

dia := dia+01; 

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio) 

Page 9: algoritmos

End 

else begin 

If (dia < 28) and (mes28) then 

Begin 

dia := dia+1; 

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio) 

End 

else begin 

If (dia =31) and (mes31) then 

Begin 

dia := 01; 

mes := mes +1; 

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio) 

End 

else begin 

If (dia = 30) and (mes30) then 

Begin 

dia := 01; 

mes := mes +1; 

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio) 

End 

else begin 

Page 10: algoritmos

If (dia = 28) and (mes28) and (Aniobisiesto) then 

Begin 

dia:= dia +1; 

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio) 

End 

else begin 

If (dia = 31) and ( mes12) then 

Begin 

dia:= 01; 

mes:= 01; 

anio:= anio +1; 

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio) 

End

else begin 

If (dia < 31) and (mes12) then 

Begin 

dia:= dia +1; 

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio) 

End 

else begin 

If (dia = 28) and (mes28) then 

Begin 

dia := 01; 

Page 11: algoritmos

mes := mes +1; 

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio) 

End 

else begin 

If (dia = 29) and (mes28) and (Aniobisiesto) then 

Begin

dia := 01; 

mes := mes +1; 

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio) 

End 

Else begin 

Writeln ('La fecha ingresada no es valida, ingrese otra'); 

End; 

End;

End; 

End;

End; 

End; 

End;

End; 

End;

Page 12: algoritmos

End; 

{Post-Condicion : Si (dia < 31) ^ (mes31) entonces dia, mes, anio: Resultado0 

Si (dia < 30) ^ (mes30) entonces dia, mes, anio: Resultado1 

Si (dia < 28) ^ (mes28) entonces dia, mes, anio: Resultado2 

Si (dia = 31) ^ (mes31) entonces dia, mes, anio: Resultado3 

Si (dia = 30) ^ (mes30) entonces dia, mes, anio: Resultado4 

Si (dia = 28) ^ (mes28) ^ (aniobisiesto) entonces dia, mes, anio: Resultado5 

Si (dia = 31) ^ (mes12) entonces dia, mes, anio: Resultado6 

Si (dia < 31) ^ (mes12) entonces dia, mes, anio: Resultado7 

Si (dia = 28) ^ (mes28) entonces dia, mes, anio: Resultado8 

Si (dia = 29) ^ (mes28) ^ (Aniobisiesto) entonces dia, mes, anio: Resultado9 

Sino La fecha ingresada es invalida} 

End. 

EJERCICIO 9 

Desarrollar una función que permita encontrar el máximo y otra el mínimo entre 4 números reales 

DISEÑO 

Funcion Máximo (dato a,b,c,d : R ) → R Lexico local max,maxi:R Inicio max:= ((a+b)+abs(a-b))/2 maxi:=((max+c)+abs(max-c))/2 ← ((maxi+d)+abs(maxi-d))/2 Fin 

Page 13: algoritmos

Función Mínimo (dato a,b,c,d :R) → R Inicio Si a<b<c<d entonces ← a sino si b<a<c<d entonces ← b sino si c<a<b<d entonces ← c sino si d<a<b<c entonces ← d Fin 

PASCAL Esta es la funcion, ATENCIóN ESTE CASO ESTA TRADUCIDA SOLAMENTE LA FUNCION POR LO QUE FALTA UNA PARTE; QUE SERIA EL DISEÑO DE EL ALGORIMO QUE VA A TENER LA FUNCION DENTRO DEL LEXICO O VAR. DE ESTA FORMA NO LES VA A COMPILAR.. 

Function Maximo (a,b,c,d :Real): Real; var max, maxi :R; Begin max:= ((a+b)+abs(a-b))/2; maxi:=((max+c)+abs(max-c))/2; Maximo := ((maxi+d)+abs(maxi-d))/2; End. 

Funcion MINIMO: 

Function Minimo (a,b,c,d :Real):Real; Begin If a<b<c<d then Minimo:= a; If b<a<c<d then Minimo:= b; If c<a<b<d then Minimo:= c; If d<a<c<b then Minimo:= d; End. 

Page 14: algoritmos

EJERCICIO 10 

Desarrollar un algoritmo que permita visualizar los numeros pares entre 1 y 25 

DISEÑO Algoritmo Paresentre Lexico Inicio repetir Si i mod 2 =0 entonces Escribir (i) i ← i+1; Hasta (i=25) Fin 

PASCAL 

Program Paresentre; 

Var i: integer; 

Begin 

i:=1; 

Repeat 

If (i mod 2) = 0 then 

begin 

Writeln (i); 

End; 

i := i+1; 

Until (i=25); 

End. 

EJERCICIO 10 

Page 15: algoritmos

Desarrollar un algoritmo que CALCULE EL MCM Y MCD de dos numeros: 

PASCAL 

Program MCMMCD; 

Uses crt; 

Var 

a,b,a2,b2,MCM :real; 

Begin 

clrscr;

Repeat

Writeln ('Ingrese dos numeros'); 

Readln (a); 

Readln (b); 

until (a>0) and (b>0);

a2:=a; {Almaceno las variables para no perder el valor inicial, 

esto es para calcular el mcm} 

b2:=b; 

repeat

If a>b then 

Begin 

a:=a-b; 

b:=b; 

end; 

Page 16: algoritmos

If a<b then 

Begin

a:=a+b; 

b:=a-b; 

a:=a-b; 

end; 

Until (a=b); 

Writeln ('El MCD entre los numeros es ', a:10:1); 

MCM:=a2*b2/a; {El calculo del MCM se puede realizar haciendo 

el producto de a * b y dividiendolo por el mcd} 

Writeln ('El MCM entre los numeros es ', MCM:10:1);

End. 

http://www.tecnohackers.net/biblioteca-tecnica-programacion-54/escuela-de-programacion-conceptos-e-introduccion-by-smartgenius/?PHPSESSID=0dc6e869dbbd674b649002b048383f0c

http://foro.el-hacker.com/f57/taller-ejercicios-de-programacion-estructuras-selectivas-119838/