algoritmos
-
Upload
frederick-alfonso-obregon-ortiz -
Category
Documents
-
view
5 -
download
2
description
Transcript of 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
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
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
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
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”)
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”)
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;
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)
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
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;
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;
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
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.
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
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;
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/