PRÁCTICA PRÁCTIC A PARA PARA LA MATERIA ALGORITMOS
La presentación de esta práctica será en coordinación con su docente, para las preguntas del 1 al 10 Defina de manera manera formal los siguientes conceptos, para las preguntas del 11 11 al 50 se debe realizar su análisis identificar las variables de entrada, proceso y salida, pseudocódigo y/o diagrama de flujo, prueba de escritorio. Se debe incluir cualquier cálculo extra o gráfico si fuera el caso. Para las preguntas del 11 al 30 no se pueden usar estructuras selectivas. CONCEPTOS BASICOS
1. 2. 3. 4. 5. 6.
Concepto de Algoritmos Concepto de Diagrama de Flujo Concepto de Programa Que tipos de Programación conoce mencione y explique brevemente sus características Qué tipo de programación utiliza en Lenguaje Visual Basic Mencionar y explicar brevemente los pasos que se deben realizar para resolver un problema 7. Defina Lenguaje de Programación 8. Que métodos se utiliza para la representación de algoritmos 9. Mencionar y explicar brevemente la Clasificación del Software 10. Mencionar y explicar brevemente la Clasificación del Hardware ESTRUCTURA SECUENCIAL
11. Hallar el cociente y el residuo (resto) de la división de dos números enteros. Por ejemplo el cociente de la división entera entre 7 y 2 es 3 y el residuo es 1. 12. Dado el precio de venta de un producto, hallar el IVA (13%) y el costo del producto. Por ejemplo si el precio de venta del producto es 100 Bs el IVA es 13 Bs y el costo del producto es 87 Bs. 13. Hallar el resultado de “a” elevado a la potencia “n”, donde a y n son números enteros positivos. 14. Hallar la raíz “n-sima” de “a”, donde “a” y “n” son números enteros. 15. Convertir una cantidad de Bolivianos a Dólares. 16. Convertir una temperatura de Celsius a °F. La fórmula es: °C/5= (°F-32)/9 17. Dado un número de 3 dígitos, devolver el número en orden inverso. Por ejemplo: dado el número 123 se tiene que devolver 321. 18. Crear un programa para encontrar el Área y el Perímetro de un círculo, donde el Área=r 2*π , Perímetro= 2r*π 19. Crear un programa que permita convertir una cantidad de segundos en horas, minutos y segundos. Tomar en cuenta que en una hora hay 3600 segundos y en un minuto hay 60 segundos. Por ejemplo en 8000 segundos hay 2 horas (7200 seg), 13 minutos (780 seg.) y 20 segundos. 20. Calcular el valor de la siguiente expresión r = (3*c)/(a+b) 21. Dado un número N positivo volverlo negativo sin multiplicarlo por (-1). 22. Realizar un algoritmo para convertir metros a pies y pulgadas. (1 pie= 30.48cm ; 1 pulg. =
1
2.54cm) 23. Dado tres números a, b y c encontrar el mayor (sin usar estructura selectiva). Ejemplo: si a=12, b=31 y c=15; el mayor es 31. 24. Dado un número entero positivo de cuatro dígitos mostrar el digito menor. menor. Ejemplo si el numero introducido es 5139 el digito menor es 1 25. El dueño de una tienda compra un artículo a un precio determinado. Obtener el precio en que lo debe vender para obtener una ganancia del 30%. Por ejemplo si lo compra a 70 bs lo deberá vender a 100 para que gane el 30%, que son 30bs. 26. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte con respecto a la cantidad total invertida. 27. Introducir las notas de un estudiante del: primer parcial, segundo parcial y examen final. Se desea calcular la nota final del semestre. Tomar en cuenta que el primer y segundo parcial tienen un valor del 30% de la nota final del semestre, y el examen final vale 40%, 40 %, lo que hace un total de 100 puntos (el 100%). 28. Realizar un algoritmo que calcule y muestre la distancia entre dos puntos P1 y P2. Tomar en cuenta que para cada punto se debe introducir su coordenada c oordenada X y su coordenada Y. Y. 29. Realizar un algoritmo, que dadas las coordenadas de los puntos P1, P2 y P3 que corresponden a los vértices de un triángulo, calcule y muestre su perímetro (que es la suma de sus tres lados). Para resolver este problema el algoritmo deberá calcular las distancias de sus tres lados (distancia desde P1 a P2, de P2 a P3, de P3 a P1) y luego sumarlos. 30. Introducir un número entero y positivo de tres dígitos (N) y mostrar en un nuevo numero los dígitos ordenados de forma descendente. Por ejemplo si N=563 se debe mostrar 653 ESTRUCTURA SELECTIVA
31. Dado dos números enteros diferentes, devolver el número Mayor. 32. Determinar si un número entero es positivo, negativo o neutro. 33. Calcular la raíz cuadrada de un número y mostrar su resultado. Considerando el caso en que el número sea negativo. 34. Dado un carácter determinar si es una vocal. 35. Determinar si un número es múltiplo de 3 y 5. 36. Dado un número, devolver el doble si el número no es par, caso contrario el triple. 37. Realizar un algoritmo que lea 3 notas de un estudiante ( notas del 1 al 10) y calcule el promedio. Si el promedio de las notas es menor a 5.1 deberá mostrar el mensaje “Reprobado” , en el caso que el promedio esté entre entre 5.1 y 6 se mostr ará el mensaje “Aprobado pero dudoso”, si es mayor a 6 mostrará “Aprobado eficiente”.
38. Dado tres números, devolver el número mayor. Considerar si los números son iguales. 39. Dado cuatro números diferentes, devolver el número menor. 40. Dado 3 números mostrarlos de forma ordenada descendente. Por ejemplo si se introduce los números 5, 2, 13; se mostrará 13, 5, 2
41. Desarrolle un algoritmo donde se lea los los valores de tres números: A, B y C. Se desea calcular el valor de una variable D. Si A=B entonces evaluar si A> C y si cumple esta
2
2.54cm) 23. Dado tres números a, b y c encontrar el mayor (sin usar estructura selectiva). Ejemplo: si a=12, b=31 y c=15; el mayor es 31. 24. Dado un número entero positivo de cuatro dígitos mostrar el digito menor. menor. Ejemplo si el numero introducido es 5139 el digito menor es 1 25. El dueño de una tienda compra un artículo a un precio determinado. Obtener el precio en que lo debe vender para obtener una ganancia del 30%. Por ejemplo si lo compra a 70 bs lo deberá vender a 100 para que gane el 30%, que son 30bs. 26. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte con respecto a la cantidad total invertida. 27. Introducir las notas de un estudiante del: primer parcial, segundo parcial y examen final. Se desea calcular la nota final del semestre. Tomar en cuenta que el primer y segundo parcial tienen un valor del 30% de la nota final del semestre, y el examen final vale 40%, 40 %, lo que hace un total de 100 puntos (el 100%). 28. Realizar un algoritmo que calcule y muestre la distancia entre dos puntos P1 y P2. Tomar en cuenta que para cada punto se debe introducir su coordenada c oordenada X y su coordenada Y. Y. 29. Realizar un algoritmo, que dadas las coordenadas de los puntos P1, P2 y P3 que corresponden a los vértices de un triángulo, calcule y muestre su perímetro (que es la suma de sus tres lados). Para resolver este problema el algoritmo deberá calcular las distancias de sus tres lados (distancia desde P1 a P2, de P2 a P3, de P3 a P1) y luego sumarlos. 30. Introducir un número entero y positivo de tres dígitos (N) y mostrar en un nuevo numero los dígitos ordenados de forma descendente. Por ejemplo si N=563 se debe mostrar 653 ESTRUCTURA SELECTIVA
31. Dado dos números enteros diferentes, devolver el número Mayor. 32. Determinar si un número entero es positivo, negativo o neutro. 33. Calcular la raíz cuadrada de un número y mostrar su resultado. Considerando el caso en que el número sea negativo. 34. Dado un carácter determinar si es una vocal. 35. Determinar si un número es múltiplo de 3 y 5. 36. Dado un número, devolver el doble si el número no es par, caso contrario el triple. 37. Realizar un algoritmo que lea 3 notas de un estudiante ( notas del 1 al 10) y calcule el promedio. Si el promedio de las notas es menor a 5.1 deberá mostrar el mensaje “Reprobado” , en el caso que el promedio esté entre entre 5.1 y 6 se mostr ará el mensaje “Aprobado pero dudoso”, si es mayor a 6 mostrará “Aprobado eficiente”.
38. Dado tres números, devolver el número mayor. Considerar si los números son iguales. 39. Dado cuatro números diferentes, devolver el número menor. 40. Dado 3 números mostrarlos de forma ordenada descendente. Por ejemplo si se introduce los números 5, 2, 13; se mostrará 13, 5, 2
41. Desarrolle un algoritmo donde se lea los los valores de tres números: A, B y C. Se desea calcular el valor de una variable D. Si A=B entonces evaluar si A> C y si cumple esta
2
condición hallar D=A², sino D = C² . Si A es diferente de B entonces evaluar si A>B y si cumple esta condición hallar D = A-10, sino D= B + 10. Mostrar el valor de D. 42. Desarrolle un algoritmo donde se introduzcan 2 números. Si la resta del primero menos el segundo da un número negativo mostrar el producto de los dos números caso contrario mostrar la suma de los números. 43. Leer cuatro números a, b, c y d luego sumar el primero con el segundo, multiplicar el tercero con el cuarto, posteriormente de los resultados obtenidos restar el menor con el mayor y mostrar el resultado. 44. Desarrolle un aplicación que obtenga las raices reales de una ecuación de segundo grado del tipo ax2+bx+c=0. La ecuación para las soluciones es la siguiente: − ± √ − 4 = 2
Considerar que si la expresión dentro de la raiz da como resultado un número negativo (menor que 0), las soluciones serán imaginarias, en este caso no se calcularán las soluciones pero la aplicación debe mostrar un mensaje indicando que las soluciones son imaginarias. También considerar que si el termino "a" vale 0 entonces ya no es una ecuación cuadrática, en ese caso solo habrá una solución la cual se debe calcular y mostrar. 45. Pedir un número e indicar si es positivo, negativo, neutro, par, impar y múltiplo de cinco, mostrar todos los mensajes que se cumplan. Ejemplo si ingresa 9 se debe mostrar los mensajes de positivo, impar. Si ingresa 20 se debe mostrar los mensajes de positivo, par, múltiplo de cinco 46. Pedir un número que representara a los meses del año y mostrar en forma escrita. Por ejemplo si entra 9 se muestra Septiembre. Si entra 15 se muestra Error 47. Pedir tres números que serán los lados de un triangulo e indicar que tipo de triangulo es, sabiendo que si tiene los tres lados iguales es un “triangulo equilátero”, si tiene dos lados iguales es un “triangulo escaleno” y si todos los lados son diferentes es un “triangulo isósceles”. Por ejemplo si entra 8, 10, 8 se muestra escaleno
48. Pedir un número de un solo digito positivo y mostrar en forma escrita. Por ejemplo si ingresa 5 se muestra cinco. Otro ejemplo si ingresa 15 se muestra más dígitos ó Error 49. Pedir el sueldo de un empleado y año de ingreso a la empresa, calcular el nuevo sueldo del empleado. Sabiendo que a partir de tres años tendrá un bono de 3%, de cinco años tendrá un bono del 6% y a partir de 10 años tendrá un bono del 10% del sueldo.
50. Pedir tres notas de un alumno en porcentaje (1 al 100), calcular el promedio e indicar si Aprobó (aprueba con un mínimo de 51), en caso de Reprobar se pide la nota de Recuperación en porcentaje y en base a esa nota se indica si Aprobó o Reprobó (si aprueba con el recuperatorio su nota final solo será 51). Por ejemplo si las notas son 80,
3
90, 85 se muestra Aprobó con 85. Otro ejemplo si las notas son 35, 50, 55 como reprobó se pide la nota recuperación 72 y se muestra Aprobó con 51
Desarrollado Por: Ing. Alanoca María Luisa Ing. Carpio Sandoval Javier Lic. Sánchez Torrez Tomas Ing. Rios Miranda Bhylenia Buena suerte!!!
Hacer un programa que al dar la hora hh, mm, ss, muestre las horas, minutos y segundos y también nos calcule la hora después de 2 segundos. inicio leer hh, mm, ss
4
si (hh < 24) y (mm<60) y (ss>60) entonces ss <-- ss + 2 si ss = 60 entonces ss <-- 0 mm <-- mm + 2 si mm = 60 entonces mm <-- 0 hh <-- hh + 2 si hh = 24 entonces hh <-- 0 fin_si fin_si fin_si fin_Si escribir hh, mm, ss fin Hacer un programa que lea 2 números y deducir si están en orden creciente o decreciente. inicio leer a, b si a <= b entonces escribir "orden creciente" si_no escribir "orden decreciente" fin_si fin Calcular el número mayor de una lista de números. real: UM, MAX entero: I, N inicio leer N // N >0 leer NUM MAX <-- NUM desde I <-- 2 hasta 100 hacer leer NUM si NUM > MAX entonces MAX <-- NUM fin_si fin_desde fin De una lista de 100 números determinar simultaneamente el máximo y mínimo número. I: entero MAX, MIN, NÚMERO: real inicio leer NUMERO
5
MAX <-- NUMERO MIN <-- NUMERO desde I <-- 2 hasta 100 hacer leer NUMERO si NUMERO > MAX entonces MAX <-- NUMERO sino si NUMERO < MIN entonces MIN <-- NUMERO fin_si fin_si fin_desde escribir "máximo", MAX, "mínimo", MIN fin Se ingresan 5 notas de un alumno, publicar 2 peores notas. inicio dimensionar a[100] x <-- 1 mientras x <= 5 hacer leer a[x] x <-- x + 1 fin_mientras x <-- 1 mientras x <= 5 hacer y <-- 1 mientras y <= 5 hacer si a[x] < a[y] entonces T <-- a [x] a[x]<-- a[y] a[y] <-- T fin_si y <-- y + 1 fin_mientras y <-- y + 1 fin_mientras //publicar x <-- 5 mientras x >= 2 hacer escribe a [x] x <-- x + 1 fin_mientras fin ¿Calcular las raices de una ecuacion de segundo grado(a²+bx+c=0)? variables a,b,c,x¹,x² inicio leer a,b,c d_(b²)-(4*a*c) si a<>0 y d>=0 entonces x¹_(-b+sqrt(d))\(2*a) x²_(-b-sqrt(d))\(2*a) imprimir x¹,x²
6
sino imprimir"no se efectua la operacion" fin si fin
¿Dada la duracion en minutos de una llamada calcular el costo,considerando? -Hasta tres minutos el costo es 0.50 -Por encima de tres minutos es 0.50 más 0.1*cada minuto adicional a los tres primeros variables M,C inicio leer M si M<=3 C_0.50 sino C_0.50+0.1*(M-3) fin si imprimir el "C" fin
¿Dado tres numeros calcular el mayor? variables n1,n2,n3,M inicio leer n¹,n²,n³ si n¹>n² y n¹>n³ entonces mayor_ n¹ sino fin si si n²>n¹ y n²>n³ entonces mayor_ n² sino mayor_ n fin si imprimir mayor fin ¿Dada N notas calcular el promedio de las notas aprovadas y el promedio de las notas desaprovadas? variables N,C,S,I,nota,S¹,S²,Pa,Pd inicio leer N I_1 S¹_0 S²_0
7
C_0 S_0 mientras I<=N hacer leer nota si nota>=12 entonces S¹_ S¹+nota C_ C+1 sino S²_S²+nota S_S+1 fin si I_I+1 fin mientras Pa_ suma1\C Pd_ suma2\S imprimir Pa,pd fin
¿Dado N calcular:(1¹)+(2²)+(3³)+......+(N*N)? variables N,I,S inicio leer N I_1 S_0 mientras I<=N hacer S_S+(I*I) fin mientras imprimir S fin
¿Dado N y X calcular: x1/1+x3/3+x5/5+...........+x(2n)-1? variables I,N inicio leer N I_1 mientras 1<=2*n hacer si I mod 2=0 entonces imprimir I fin si I_I+1 fin mientras fin ¿Dado el monto de una compra -descuento es 10% si el -descuento es 20% si el soles -no hay descuento si el
8
calcular el descuento considerado monto es mayor a 100 soles monto es mayor a 50 soles y menor o igual a 100 monto es mayor o igual a 50 soles
variables monto, descuento inicio leer monto si monto>100 entonces descuento_ monto*0.1 sino si monto>50 entonces descuento_ monto*0.2 sino descuento_0 fin si fin si imprimir descuento fin
¿Dadas tres longitudes, decir mediante un mensaje si forma un triangulo o no (cada lado tiene que ser menor que de las otras dos)? variables a,b,c inicio leer a,b,c si (a+b)
y y entonces "si se formo el triangulo" "no se formo el triangulo"
¿A una fiesta asistieron personas de diferentes edades y sexos. Contruir un algoritmos dadas las edades y sexos de las personas.? calcular : -Cuantas personas asistieron a la fiesta -Cuantos hombres y cuantas mujeres -Promedio de edades por sexo -La edad de la persona más joven que asistio -No se permiten menores de edad a la fiesta -Ingresar datos hasta que se ingrese una edad a cero variables sev-suma de edades de varones sem-suma de edades de mujeres a-asistentes v-varones m-mujeres e-edades s-sexo inicio
9
sev_0 sem_0 a_0 v_0 e_1 menor_200 mientras e<>0 hacer leer e,s si e>=18 entonces a_a+1 si s="m" entonces m_m+1 sem_sem+e sino v_v+1 sev_sev+e finsi si e
De una lista de 10 números calcular la media y determinar cuantos son mayores que 10.5, cuantos son iguales y cuántos son menores. Inicio Real Num S <- 0.00 M <- 0.00; Entero I, C1 = 0, C2 = 0, C3 = 0; Para i = 1 ; i = 10 Leer Num
10
Fin_Para Para i = 1 ; i = 10 S <- S + Num Fin_Para M <- 10 Para i = 1; i = 10 Si Num = 10.5 entonces C1 <- C1 + 1 Fin_Si Si Num > 10.5 C2 <- C2 + 1 Fin_Si Si Num < 10.5 entonces C3 <- C3 + 1 Fin_Si Fin_Para Escribir "Media" , M ; Escribir "Iguales que l10.5" , C1 ; Escribir "Mayores que 10.5", C2 ; Escribir "Menores que 10.5" , C3; Fin
Se desea realizar un algoritmo que realice las siguientes tareas: a)Leer una lista de números enteros b)Visualizar dichos números. c)El algoritmo deberá pedir si yo deseo ordenar en sentido decreciente o creciente (burbuja) Inicio Num : entero Repetir Mostrar Mostrar Mostrar Mostrar Repetir
creciente [
11
"A "B "C "D
ingresar" mostrar" ordenar" salir"
Ingresar opc Hasta (opc = A) o (opc = B) o (opc = c) o (opc = d) Según sea opc hacer A : Inicio Para i = 1 ; i = N Ingresar Num Fin_Para Fin B : Inicio Para i = 1 ; i = N Mostrar Num Fin_Para Fin C : Inicio Repetir Ingresar "ordenar decreciente o ]" : rp Hasta (rp = c) o (rp = d) Si (rp = c) entonces Para (i = 1 , = N - 1 ; i ++) Para j = 1 ; j = N - i
Si num [j]) > Num [j + 1] entonces Aux
Se tiene un arreglo "A" donde se encuentra 10 números ordenados en forma ascendente, y se pide que el algoritmo me permita el ingreso de un número y lo coloque en la posición donde debería de estar con respecto al orden del arreglo. Inicio A [10] : entero i , num, p, N : entero Para i = 1 , i = 10 ingresar A Fin_para p <- N + 1 ingresar "número" : num Para I = 1 , i = N Si num = A [i] entonces P <- i i <- N + 1 Fin_Si Fin_Para N <- N + 1 Para i = N ; i > P A [i] <- A [i - 1] Fin_Para A [p] <- num Fin
Realizar un algoritmo que permita ingresar una frase y la descomponga esta en sus palabras imprimiéndolas al revés. Ejem.
12
CIUDAD CHICLAYO DADUIC OYALCIHC Inicio Caracter Frase [20] ; Entero L, K, C, j ; Lee cadena (Frase) ; L = longitud (Frase) ; Para i = 1 ; i = L Si (Frase [i] = ' ') entonces Ce <- ce + 1 ; Fin_Si Fin_Para Entero x = 1 Para i = 1 K = 1 C = 0 Para j = x ; Frase [j] < > '' Invertida [k] <- Frase [j] C <- C + 1 Fin_Para Para k = 1 ; k =L Mostrar "Invertida [k] Fin_Para x = j + i Fin_Para Fin
Diseñar un algoritmo que calcule y almacene en un arreglo los 105 primeros números pares anteriores a un número dado N (N es mayor que 51 y menor que 100), para posteriormente proceder a ordenarlo en sentido decreciente. Inicio Num [50]: entero i, j : entero Repetir Ingresar Num Hasta Num [i] > 51) y (Num [i] < 100 Repetir Num <- Num + 1 Si (Num [i] mod 2 < > 0) y (num [i] < > 0) entonces c <- C + 1 Fin_Si Hasta C <- 105 VF <- C Para i = 1 ; i = VF - 1 Para j = 1 ; j = VF - i Si Num [j] < num [j + 1] entonces Aux Num <- Num [j] Num [j] <- Num [j + 1] Num [j + 1] <- aux Num Fin_Si Fin_Para Fin_Para Fin
13
Hacer un programa que registre 10 apellidos y que los muestre en forma inversa al orden con el que fueron ingresados. Inicio Dimensionar Apellido[10] X<-1 mientras x<=10 hacer leer Apellido[x] x<- x+1 fin_mientras X <- 10 mientras X >= 1 hacer mostrar Apellido[X] X <- X - 1 fin_mientras Fin
Elaborar un algoritmo que permita ingresar 20 números y muestre todos los números menores e iguales a 25 Inicio Dimensionar NUM[20] X<-1 mientras X<=20 hacer leer NUM[X] X<- X+1 fin_mientras X <- 1 N <- 0 Mientras X<=20 Hacer Si NUM[X]<=25 entonces N <- N+1 Mostrar NUM [X] Fin_si X <- X+1 Fin_Mientras Si N = 0 Entonces Mostrar "Ningún número es Menor a 25" Fin_si Fin
Elaborar un algoritmo, que permita el ingreso de 100 números enteros. El programa debe sumar todos los números que sean múltiplos de 3. Inicio Dimensionar numero[100] x<-1 mientras x<=100 hacer leer numero[x] x<-x+1 fin - mientras x<- 1 s<- 0 mientras x<=100 hacer
14
Si (numero[x] mod 3 = 0) entonces s<- s+numero[x] Fin_Si x<-x+1 Fin_mientras Mostrar s Fin Mostrar las 30 primeras potencias de 3 y la suma de ellos. Inicio Dimensionar número[30] x<-0 n<-3 t<-0 s<-0 mientras x<=29 hacer t<- n^(x+1) Mostrar t s <- s + t x <- x+1 fin_mientras Mostrar s Fin
Hacer un algoritmo que pida 10 edades y mostrarlas en orden inverso al que fueron ingresados. Inicio Dimensionar E[20] X <- 1 Mientras X <= 10 hacer Leer E[X] X <- X+1 Fin_mientras Y <- 10 Mientras Y >= 1 hacer Mostrar E[Y] Y <- Y-1 Fin_mientras Fin
ELIMINAR UN ALUMNO DEL SALON, DADA UNA POSICIÓN INDICADA Inicio Dimensionar ALUMNO[100],NOTA1[100], NOTA2[100] ENTERO i,pos,n leer n i <- 1 mientras i<=n hacer leer ALUMNO[i], NOTA1[i],NOTA2[i] i <- i+1 fin_mientras leer pos
15
si (posn) entonces Escribir "Cambiar Dato" fin_si Fin
INGRESAR UN ELEMENTO EN UNA POSICION INDICADA EN UN ARREGLO DE N ELEMENTOS (NUMEROS), HASTA QUE EL USUARIO DESEE SALIR. Inicio Dimensionar numero[100] entero ne,pos,i,nuevo e caracter rpta leer n para i=0 hasta ipos de -1 numero[i]<- numero[i-1] fin_para numero[pos]<- nuevo e n<-n+1 sino escribir"posicion no existe" fin_si Hasta rpta="s" Fin
MOSTRAR ASCENDENTEMENTE LOS NUMEROS DE UN ARREGLO Inicio Dimensionar numero[100] entero i,j,NE,aux leer NE si (NE>0) entonces para(i=0 hasta i
16
leer numero [i] fin_para para i=0 hasta i numero[j])entonces aux <- numero [i] numero[i]<- numero[j] numero[j]<- aux fin_si fin_para fin_para para i=0 hasta i< NE escribir numero[i] fin_para sino escribir"no existe elemento en el arreglo" fin_si Fin
MOSTRAR ALUMNOS ORDENADOS POR MAYOR PUNTAJE DE PROMEDIO Inicio Dimensionar alumno[100], nota[100] entero i ,j,NE,aux1,aux2 leer NE si(NE>0) entonces para i=0 hasta i
MOSTRAR ARTICULOS DE ABARROTES ORDENADOS POR MAYOR PRECIO Y MOSTRAR LOS 5 ARTICULOS DEMENOR PRECIO Inicio Dimensionar articulo[100],precio[100] enteroi,j,NE real aux1 caracter aux2
17
leer NE si(NE>0)entonces para i=0 hasta i5 escribir articulo [i],precio[i] fin_para sino escribir "arreglo vacio" fin_si Fin
Hacer un programa que permita el ingreso de Nombre[X], Telefono[X], donde X va desde 1a 100 luego mostrar la lista de los usuarios en orden inverso a la que fueron ingresados. Inicio Dimensionar Nombre[200], Telefono[200] X <- 1 mientras X <= 100 hacer leer Nombre[X], Telefono[X] X <- X + 1 fin_mientras X <- 100 mientras X >= 1 hacer mostrar Nombre[X], Telefono[X] X <- X - 1 fin_mientras Fin
En una empresa de 1000 trabajadores, se hará un aumento al salario de acuerdo al tiempo de servicio, para este aumento se tomará en cuenta lo siguiente: Tiempo de servicio: de 1 a 5 años Aumento: S/. 100 Tiempo de servicio: de 5 a 10 años Aumento: S/. 250 Tiempo de servicio: de 10 a 20 años Aumento: S/. 400 Tiempo de servicio: de 20 años a más Aumento: S/. 550 Se desea obtener unalista del personal en orden creciente con respecto al sueldo modificado
18
Inicio Dimensionar Nombre[1200], Tiempo[1200], Sueldo[1200] X <- 1 mientras X <= 1000 hacer leer Nombre[X], Tiempo[X] X <- X + 1 fin_mientras X <- 1 mientras X <= 1000 hacer si Tiempo[X] <= 5 entonces Sueldo[X] <- 1000 + 100 fin_si si Tiempo[X] <= 10 entonces Sueldo[X] <- 1000 + 250 fin_si si Tiempo[X] <= 20 entonces Sueldo[X] <- 1000 + 400 sino Sueldo[X] <- 1000 + 550 fin_si X <- X + 1 fin_mientras X <- 1 mientras X <= 1000 hacer Y <- X mientras Y <= 1000 hacer si Sueldo[X] > Sueldo[Y] entonces T <- Nombre[X] Nombre[X] <- Nombre[Y] Nombre[Y] <- T T <- Tiempo[X] Tiempo[X] <- Tiempo[Y] Tiempo[Y] <- T T <- Sueldo[X] Sueldo[X] <- Sueldo[Y] Sueldo[Y] <- T fin_si Y <- Y +1 fin_mientras X <- X + 1 fin_mientras X <- 1 mientras X <= 100 hacer mostrar Nombre[X], Tiempo[X], Sueldo[X] X <- X + 1 fin_mientras Fin
Dada una lista de 100 personas se pide una relación de las personas mayores de 35 años. Inicio Dimensionar Nombre[150], Edad[150] X <- 1 mientras X <= 150 hacer leer Nombre[X], Edad[X]
19
X <- X + 1 fin_mientras X <- 1 mientras X <= 150 hacer Si Edad[X]>= 35 Entonces mostrar Nombre[X], Edad[X] fin_si X <- X + 1 fin_mientras Fin En una encuesta cuyas alternativas son "si" y "no" participaron 10000 personas.Se quiere saber cuantas personas votaron por la primera opción. Inicio Dimensionar Voto[10000], SI[10000], NO[10000] X <- 1 S <- 0 N <- 0 mientras X <= 10000 hacer leer Voto[X] Si Voto[X]= "si" Entonces S <- S + 1 Sino N <- N + 1 fin_si X <- X + 1 fin_mientras mostrar S Fin
Diseñar un algoritmo, que permita ingresar el dividendo y el divisor y que luego me calcule el residuo y el cociente de dicha división. Inicio D,d,c :entero r :real Leer "Dividendo",D Repetir Leer "Divisor", d Hasta (d <> 0) Hacer c « D div d Hacer r « D mod d Mostrar "El cociente": c Mostrar "El residuo": r Fin
Diseñar un algoritmo que calcule y escriba el cuadrado de 243. Inicio A: entero M: entero Ingresar A Si A = 243 entonces
20
Hacer M « A * A Fin_si Mostrar
"M"
Fin Diseñar un algoritmo que intercambie los valores de dos variables numéricas. Inicio Aux, N1, N2: entero Leer "Primer Numero", N1 Leer "Segundo Numero", N2 Si (N1 <> N2) entonces Hacer Aux « N1 Hacer N1 « N2 Hacer N2 « Aux Fin_si Mostrar "N1" Mostrar "N2" Fin
Diseñar un algoritmo que me permita ingresar cualquier número mayor que cero y menor que diez, y luego el algoritmo deberá calcular los múltiplos menores que cien del numero ingresado. Inicio A, i, M : entero Repetir Ingresar A Hasta (A > 0 y A < 10) Para (i>0; i<=100,i++) Hacer M « A * i Fin_Para Mostrar "N1" Mostrar "N2" Fin
Diseñar un algoritmo que me permita ingresar un valor inicial y luego un valor final, para luego calcular el valor central de los números. Inicio A1, A2: entero C: real Leer "Valor inicial",A1 Leer "Valor final",A2 Hacer C « (A1+A2)/2 Mostrar "Valor central",C Fin
Leer 200 números y obtener cuantos son positivos, negativos e iguales a cero. Inicio N : entero C1 « 0; C2 « 0; C3 « 0: entero
21
Repetir Leer N Si (N > 0) entonces Hacer C1 « C1 + 1 Si (N < 0) entonces Hacer C2 « C2 + 1 Si (N = 0) entonces Hacer C3 « C3 + 1 Fin_Si Fin_Si Fin_Si Hasta (C1+C2+C3=200) Fin
Diseñar un algoritmo que me permita determinar si un numero ingresado desde el teclado es un numero par o impar. Inicio A : entero Repetir Ingresar A Hasta (A > 0) Si (A mod 2 = 0) entonces Mostrar "A es par" Sino Mostrar "A es impar" Fin_Si
Fin
Se desea calcular independientemente la suma de los números pares e impares comprendidos entre 1 y 50. Inicio B, i: entero S1 « 0; S2 « 0 : real Para(i=1; i<50; i++) Repetir Ingresar B Hasta (B mod 2 = 0) Hacer S1 « S1 + B Mostrar"S1" Hasta (B mod 2 <> 0) Hacer S2 « S2 + B Mostrar"S2" Fin_Para Fin
Diseñar un algoritmo que me permita ingresar una lista de números terminados con el numero cero, para luego calcular cuantos números fueron ingresados. Inicio N, C « 0:entero Repetir Ingresar "N"
22
Si(N <> 0) entonces Hacer C « C +1 Fin_Si Hasta (N = 0) Mostrar "C" Fin
Determinar la media aritmética de una lista de números positivos. Inicio N, S « 0, C « 0, :entero Media : real Leer N Si(N > 0) entonces Hacer C « C + 1 Hacer S « S + N Fin_Si Media « S / C Mostrar "Media" Fin
Averiguar si dado dos números, uno es divisor de otro. Inicio N1, N2 :entero Leer N1, N2 Si(N1 > N2) entonces Mostrar N2 "es divisor de " N1 Fin_Si Si(N1 = N2) entonces Mostrar "Son divisores" Fin_Si Si(N1 < N2) entonces Mostrar N1 "es divisor de " N2 Fin_Si Fin
Diseñar un algoritmo que me permita calcular los 4 primeros números pares, para posteriormente calcular su media aritmética. Inicio N « 0, X « 0, P « 0 :entero Media : real Repetir N « N + 1 Si(N mod 2 = 0) entonces Hacer p « p + 1 Hacer x « x + N Fin_Si Hasta (p = 4) Media « X/P Mostrar "Media" Fin
23
Diseñar un algoritmo que me permita ingresar 10 números primos cualesquiera. Inicio K « 0, N, P « 0, i « 0 :entero Repetir Leer N Para (i = 1; i<= N; i++) Si(N mod i = 0) entonces Hacer K « K + 1 Fin_Si Fin_Para Si(N mod i = 0) entonces Hacer P « P + 1 Fin_Si Hasta (p > = 10) Fin
Diseñar un algoritmo que calcule los 5 primeros números impares que preceden a un numero N ingresado por teclado. Inicio N « 0, C « 0 :entero Leer N Repetir Hacer N « N - 1 Si(N mod 2 <> 0) entonces Hacer C « C + 1 Mostrar N Fin_Si Hasta (C = 5) Fin
Ingresar una lista de 25 notas y determinar cuantas estas fueron aprobadas. Inicio Nota, Aprobado « 0, i « 0 :entero Para (i = 1; i<= 25; i++) Repetir Leer Nota Hasta (Nota <= 20) y ( Nota > 10) Si(Nota > 10) entonces Hacer Aprobado « Aprobado + 1 Fin_Si Fin_Para Mostrar "Total de aprobados",Aprobado Fin
Diseñar un algoritmo que me permita calcular las 5 primeras parejas de números primos gemelos(dos números son primos gemelos si además de ser números primos, la diferencia entre ellos es exactamente dos).
24
Inicio C « 0, G1 « 0, G2 « 0, N1, N2 :entero Repetir Ingresar N1, N2 Hasta (N1 > 0) y ( N2 > 0) Repetir Para (i = 1; i<= N1; i++) Si(N1 mod i = 0) entonces Hacer G1 « G1 + 1 Fin_Si Fin_Para Para (i = 1; i<= N2; i++) Si(N2 mod i = 0) entonces Hacer G2 « G2 + 1 Fin_Si Fin_Para Si(G1 = 2) y (G2 = 2) entonces Mostrar "N1 y N2 son primos Si (N1-N2=2)o(N2-N1= 2) entonces Hacer C « C + 1 Sino Mostrar "Error" Fin_Si Fin_Si Hasta (C = 5) Fin
Diseñar un algoritmo que me permita calcular los 5 primeros números perfectos (un numero es perfecto, cuando la suma de sus divisores, sin incluirlo al numero es exactamente el mismo numero). El 6 es un numero perfecto por sus divisores son 1,2 y 3. Inicio N « 0, P « 0, C « 0 :entero Repetir Hacer N « N + 1 Para (i = 1; i< N; i++) Si(N mod i = 0) entonces Hacer C « C + 1 Fin_Si Fin_Para Si(C = N) entonces Hacer P « P + 1 Fin_Si Hasta (P = 5) Fin
Diseñar un algoritmo que permita convertir un numero natural en números romanos. Inicio N, Miles, Resto, Cen, Dec, Uni :entero Leer N Miles = N/1000 Resto = N mod 1000
25
Cen = Resto/100 Resto = Resto mod 100 Uni = Resto mod 10 Escribir "En romanos es:" Según sea (Miles) Escribir "M" Escribir "M" Fin_Según Según sea (Cen) Escribir "C" Escribir "CC" Escribir "CCC" Escribir "CD" Escribir "D" Escribir "DC" Escribir "DCC" Escribir "DCCC" Escribir "CM" Fin_Según Según sea (Dec) Escribir "X" Escribir "XX" Escribir "XXX" Escribir "XL" Escribir "L" Escribir "LX" Escribir "LXX" Escribir "LXXX" Escribir "XC" Fin_Según Según sea (Uni) Escribir "I" Escribir "II" Escribir "III" Escribir "IV" Escribir "V" Escribir "VI" Escribir "VII" Escribir "VIII" Escribir "IX" Fin_Según Fin
Diseñar un algoritmo que me permita calcular el factorial de un numero. Utilice las estructuras repetitivas(Repetir Hasta, Repetir Mientras, Repetir Desde - Para) **Repetir Hasta Inicio N, i, F : entero Leer N F « 1 Repetir F « F * N N « N - 1 Hasta (N = 0)
26
Mostrar "F" Fin **Repetir Mientras Inicio N, F : entero Leer N F « 1 Mientras (N > 1) F « F * N N « N - 1 Fin_Mientras Mostrar "F" Fin **Repetir Desde Inicio N, i, F : entero Leer N F « 1 Desde (i = 1) hasta N hacer F « F * i i « i + 1 Fin_Desde Mostrar "F" Fin **Repetir Para Inicio N, i, F : entero Leer N F « 1 Para (i = 1; i<=N; i++) F « F * i i « i + 1 Fin_Para Mostrar "F" Fin
Diseñar un algoritmo que permita calcular la suma de los primeros 30 términos de la siguiente serie: 1-1/3+1/5-1/7...+1/9 Siendo N un numero ingresado por el teclado. Inicio N « 0, C « 0 : entero S « 0 : real Repetir N « N+1 Si (N mod 2 <>0) entonces Hacer C « C + 1
27
Si (N mod 2 = 0= ENTONCES Hacer S « S-7/N Sino S « S + 1/N Fin_Si Fin_Si Hasta (N = 30) Fin
Diseñar un algoritmo que permita encontrar la solución a la siguiente serie:1,1/2!,1/3!,1/4!,1/5!,...1/N! Siendo N un numero ingresado por el teclado. Inicio N, H, K, F :entero S : real Leer N Repetir Hacer K « K + 1 Hacer H « K Hacer F « 1 Repetir Hacer F « F * H Hacer H « H-1 Hasta (H = 0) Hacer S « 1/F Mostrar 1/F Hasta (k = N) Fin
Realizar el diseño de un algoritmo que me permita : Ingresar el código del trabajar Ingresar numero de horas trabajadas Ingresar el costo de la hora Calcular el sueldo bruto semanal Calcular el sueldo neto semanal Imprimir el sueldo bruto y el sueldo neto respectivo(sueldo bruto menos el descuento del seguro de pensiones 11%) Inicio Cod : entero HT, CH, SB « 0, SN, DESC : real Leer "codigo",cod Repetir Leer "costo hora",CH Hasta (HT > 0 y CH > 0) Hacer SB « HT * CH Hacer Desc « SB * (11/100) Hacer SN « SB - Desc Mostrar "Sueldo Bruto",SB Mostrar "Sueldo Neto" ,SN Fin
28
Realizar un algoritmo que me permita ingresar un numero determinado de segundos y lo convierta en horas, minutos y segundos. Inicio S, H, M :entero Repetir Ingresar "s" Hasta (S > 0) Si(S > = 3600) entonces Hacer H « S div 60 Hacer S « S mod 60 Fin_Si Mostrar "H", "M", "S" Fin
Realizar un algoritmo que me permita ingresar la hora, minutos y segundos y que me indique cuantos segundos son. Inicio T, H, M, S, P1, P2, Ingresar S, H, M Hacer P1 « H Hacer P2 « M Hacer P3 « S T = (P1 + P2 + P3) Mostrar "T"
P3 :entero * 3600 * 60 * 1
Fin
Diseñar un algoritmo que me permita ingresar la hora, minutos y segundos y que me calcule la hora en el siguiente segundo ("0=< H =<23", "0=< M =<59" "0=< S=<59"). Inicio HH « 0, MM « 0, SS « 0 : entero Leer (HH, MM, SS) Si (HH < 24) y (MM < 60 y (SS < 60) entonces Hacer SS « SS + 1 Si (SS « 60) entonces Hacer S « 0 Hacer MM « MM + 1 Si (MM=60) entonces Hacer MM « 0 Hacer HH « HH + 1 Si (HH = 24) entonces Hacer HH « 0 Fin_Si Fin_Si Fin_Si Fin_Si Mostrar ("HH", "MM", "SS") Fin
29
Ingresar el numero el mes y determinar cuantos días tiene el mes, para el caso de Febrero, el algoritmo deberá indicar que no cuenta con la información necesaria para dar la respuesta. Inicio Mes :entero Repetir Leer Mes Hasta (Mes > = 1) y (Mes <=12) Según sea Mes hacer 1,3,5,7,8,10,12:Mostrar "Tiene 31 días" 4,6,9,11: Mostrar "Tiene 30 días" 2:"No cuenta con la información necesaria" Fin_Según sea Fin
Escribir un algoritmo que determine si un año es bisiesto. Un año es bisiesto si es múltiplo de 4 (por ejemplo 1984). Los años múltiplos de 100 no son bisiestos, salvo si ellos son también múltiplos de 400 (2000 es bisiesto, pero; 1800 no lo es). Inicio Año, B : entero Leer "Año" Si (B mod 4000 = 0) entonces Mostrar "Año es bisiesto" Fin_Si Si (B mod 100 = 0) entonces Mostrar "Año no es bisiesto" Fin_Si Si (B mod 4 = 0) entonces Mostrar "Año es bisiesto" Sino Mostrar "Año no es bisiesto" Fin_Si Fin
Ingresar el día, mes y año en el formato numérico (2-11-2001), para luego mostrarlo el formato carácter (2 de Noviembre del 2001). Inicio D, M, A :entero Repetir Ingresar D, M, A Hasta (D>= 0 y D< = 31) y (M> = 0 y H< = 12) y (A >= 0) Según sea M hacer Mostrar "D de Enero del A" Mostrar "D de Febrero del A" Mostrar "D de Marzo del A" Mostrar "D de Abril del A" Mostrar "D de Mayo del A" Mostrar "D de Junio del A" Mostrar "D de Julio del A" Mostrar "D de Agosto del A" Mostrar "D de Septiembre del A"
30
Mostrar "D de Octubre del A" Mostrar "D de Noviembre del A" Mostrar "D de Diciembre del A" Fin_Según sea
Fin
hacer un programa que registre 50 consumo realizados 'por las personas * si el consumo esxceda 50, el descuento sera 20%. * muestre el total todos los pagos total. inicio x<-1 pago<-0 pago_total<-0 mientras x <=50 hacer si consumo >50 entonces descuento<- descuento*0.20 sino desc<-0 fin-si pago <- consumo - descuento pago_total <- pago_total + pago x<- x+1 fin-mientras fin
se desea saber: alumnos[x], examen parcial[x], examen final[x] . cual de los alumno tiene las mejores promedios. . cuales fueron los 5 peores alumnos del examen parcial. . cuales fueron los 3 peores del examen final NOTA : repetido EL EJERCICIO inicio dimensionar alumnos[100], examen parcial[100], examen final[100] n <- 10 x <- 1 mientras x<= n hacer leer alumnos[x], examen parcial[x], examen final[x] x <- x+1 fin_mientras C<-0 X <-1 mientras X<=N hacer p <- ( e. parcial[x] + e. final[x])/2 si p> c entonces c<- p A <- alumnos[x] fin-si x <-x+1 fin_mientras x <-1 mientras x >=n hacer y <- x mientras y <= n hacer si examen parcial[x]> examen parcial[x] entonces t<- examen parcial[x]
31
examen parcial[x] <- examen parcial[y] examen parcial[y] <- t t <- examen final[x] examen final[x] <- examen final[y] e. final[y] <- t t <- alumnos[x] alumnos[x] <- alumnos[y] alumnos[y] <- t fin-si y <- y+1 fin_miemtras x <- x+1 fin_mientras x <- 1 mientras x<= 5 hacer escribir alumnos[x], examen parcial[x], examen final[x] x <- x+1 fin-mientras x <-1 mientras x<= n hacer y <- x mientras y <=n hacer si examen final[x] > examen final[x] entonces t <- examen final[x] examen final[x] <- examen final[y] examen final[y] <- t t<- e. parcial[x] e. parcial[x] <- e. parcial[y] e. parcial[y] <- t t <- alumnos[x] alumnos[x] <- alumnos[y] alumnos[y] <- t fi-si y <- y+1 fin-mientras x <- x+1 fin-mientras x <- 1 mientras x <=3 hacer escribir escribir alumnos[x], examen parcial[x], examen final[x] x <- x+1 fin-mientras fin
hacer
varios sorteo: ORDENAR POER NOMBRE
REPETIDO EL EJERCICIO : codigo[x], nombre [x], direcciòn[x]
32
inicio dimensionar codigo[100], nombre [100], direcciòn[100] x <- 1 n <- 10 mientras x <=n hacer leer codigo[x], nombre [x], direcciòn[x] x <- x+1 fin-mientras x<- 1 mientras x <= n hacer y <- x mientras y <=n hacer si nombre [x]> nombre [x] entonces t <- nombre [x] nombre [x] <- nombre [y] nombre [y] <- t t<- codigo[x] codigo[x] <-codigo[y] codigo[y] <- t t <- direcciòn[x] direcciòn[x] <- direcciòn[y] direcciòn[y] <-t fin-si y <- y+1 fin-mientras x <- x+1 fin-mientras x <-1 mientras x <= n hacer escribir codigo[x], nombre [x], direcciòn[x] x <- x+1 fin-mientras fin
clasificar los sgts lista en forma ascendente 1.- (72) 2.- (50) 3.- (37) 4. (9) 5.. (45) 6.(19) inicio dimensionar a[100] x <- 1 n <- 6 mientras x <= 6 hacer leer a[x] x <- x+1 fin- mientras I <- 1
33
mientras I <= n-1 hacer y <- 1 mientras y<= n-1 hacer si [y]> a[y+1] entonces t <- a[y] a[y] <- a[y+1] a[y+1] <- t fin-si y<- y+1 fin-mientras I <- I +1 x <- 1 mientras x <= 6 hacer escribira a[x] fin-mientras fin
Hacer un programa que muestre si los cincos primeros numeros impares son multiples de tres inicio leer N si N>=4 y N<=5 entonces escribir N sino si N Mod 2=1 entonces escribir "Impar" sino si N Mod 3=0 entonces escribir "Multiplo" fin_si fin_si fin_si fIN
Hacer un programa que muestre la tabla de dividir de un numero dado en forma decreciente. fnicio leer n x<-12 mientras X>=1 hacer D<-n/x escribir x,n,D X<-X-1 fin-mientras fIN
Hacer un programa que lea 50 consumos de un restaurant. Si el consumo ingresado exede los 70 soles, el dscto será de 5%. muestre rodos los pagos hechos.
34
inicio X<-1
fin
mientras X<=50 hacer leer consumo si consumo > 70 entonces desc<- consumo*0.05 sino desc<---0 fin_si Pago<- consumo - desc escribir Pago X<--- X+1 fin_mientras
Hacer un programa que registre 7 números en un array de 10, y luegose ingrese in la posición 4 un nuevo numero. Inicio Domencionar [400] X-1 mientras X<=7 hacer leer a[X] X<--- X+1 FIN-MIENTRAS X-7 mientras X>=4 hacer a[X+1]<--- a[X] X<--- X-1 FIN-Mientras X<---4 leer a[X] X<---1 mientras X<=8 hacer escribir a[X] X<--- X+1 FIN-Mientras FIN
Hacer un programa que registre 6 número en un array de una dimensión, y ademas muestre el intercambio de variables. Inicio Dimencionar a[100] X<---1 mientras X<=6 hacer leer a[X] X<- X+1 fin_mientras X<---1 y<---6 mientras X<=3 hacer
35
T<--- a[X] a[X]<--- a[y] a[y]<--- T X<--- X+1 y<--- y-1 fin_mientras X<---1 mientras X<=6 hacer escribir a[X] X<-X+1 fin-mientras FIN
PARA 10 NUMEROS (hay una eliminacion que posición cual es) inicio dimensionar a[100] leer 10 x <- 1 mientras x >= 10 hacer leer a[x] x = 10 hacer a[x]<- a[x + 1] x <- x +1 fin mientras a[x]<- 0 x <- 1 mientras x >= 9 hacer escribe a[x] x <- x +1 fin mientras fin
ARRAYS DE ELIMINACIÓN de la posión 2
PARA 3 NUMEROS
inicio dimensionar a[90] x <--- 1 mientras x >= 3 hacer leer a[x] x <--- x +1 fin mientras x <- 2 mientras x <= 3 hacer a[x]<--- a[x + 1] x <--- x +1 fin mientras a[x]<--- 0 x <--- 1 mientras x <= 2 hacer
36
escribe a[x] x <--- x +1 fin mientras
fin Un algoritmo es un método para resolver un problema.
La resolución de un problema exige al menos los siguientes pasos: 1. Definición o análisis del problema. 2. Diseño del algoritmo. 3. Transformación del algoritmo en un programa. 4. Ejecución y validación del programa. Los problemas de computadoras generalmente presentan el siguiente flujo:
Introducir o leer los datos ---> Procesar los Datos ----> Publicar Resultados. Ejemplo: INTRODUCIR DATOS PROCESAR Publicar Resultados
- LEER 2 NÚMEROS - SUMARLOS - Mostrar la Suma Hallada
Para realizar un proceso se le debe suministrar al procesador un algoritmo adecuado. Por ejemplo, al cocinero debe dársele una receta, al pianista la partitura y así sucesivamente, considerando al cocinero y al pianista como procesadores. La resolución de un problema exige el diseño de un algoritmo que resuelva el problema propuesto.
Los pasos para la resolución de un problema son: 1. Diseño del algoritmo que describe la secuencia ordenada de pasos –sin ambigüedades – que conducen a la solución de un problema dado. (Análisis del programa y desarrollo del algoritmo.) 2. Expresar el algoritmo como un programa en un lenguaje de programación adecuado. (Fase de codificación.) 3. Ejecución y validación del programa por la computadora.
37
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. en nuestro curso haremos algoritmos en el papel. Pero podemos comprobarlos con QBASIC, un lenguaje de programación muy básico. Las características fundamentales que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea, debe tener un número finito de pasos.
Ejemplo 1.1
Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su banco de datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario, rechazará el pedido. Redactar el algoritmo correspondiente. Los pasos del algoritmo son: 1. Inicio. 2. Leer el pedido. 3. Examinar la ficha del cliente 4. Si el cliente es solvente, aceptar pedido; en caso contrario, rechazar pedido 5. Fin Ejemplo 1.2
Se desea diseñar un algoritmo para saber si un número es primo o no. Un número es primo si solo puede dividirse por si mismo y pro la unidad (es decir no tiene más divisores que él mismo y la unidad). Por ejemplo, 9, 8, 6, 4, 12, 16, 20, etc, no son primos ya que son divisibles por números distintos en a ellos y a la unidad. Así, 9 es divisible por 3, 8 lo es por 2, etc. El algoritmo de resolución del problema pasa por dividir sucesivamente el número por 2, 3, 4. . ., etc. 1. Inicio. 2. Poner X igual a 2 (X = 2, X, variable que representa a los divisores del número que se busca N). 3. Dividir N por X (N / X). 4. Si el resultado de N / X es entero, entonces N no es un número primo y bifurcar al punto 7; en caso contrario continuar el proceso. 5. Suma 1 a X (X • X + 1) . 6. Si X es igual a N, entonces N es un número primo en caso contrario bifurcar al punto 3. 7. Fin.
E jemplo 1.3 Realizar la suma de todos los números pares entre 2 y 1000. El problema consiste en sumar 2 + 4 + 6 + 8 + ... + 1000. Utilizaremos las palabras SUMA Y NUMERO (variables, serán denominadas mas tarde) para representar las sumas sucesivas (2 + 4), (2 + 4 + 6), (2 + 4 + 6 + 8), etc. La solución se puede escribir con el siguiente algoritmo:
38
1. Inicio. 2. Establecer SUMA a 0 . 3. Establecer NUMERO a 2 . 4. Sumar NUMERO A SUMA .El resultado será el nuevo valor de la suma (SUMA) . 5. Incrementar NUMERO 2 unidades . 6. El NUMERO =< 1000 bifurca al paso 4 ; en caso contrario, escribir el ultimo valor de SUMA y terminar el proceso . 7. Fin .
VARIABLES Y CONSTANTES
Constante .- Valor que permanece igual durante la ejecución de un programa
Variable.- El valor adoptado por una variable puede cambiar mientras se ejecuta un programa en el programa INICIO A= 15 A= A + 10 ESCRIBE A FIN
15 es una constante, A es una variable. Aquí en este programa A vale 15 pero en la segunda línea A vale 25 puesto que primero se calcula parte derecha A + 10 o sea 15+10 esto da 25, que es el valor que adopta finalmente A Escribe A, es una orden para mostrar en la pantalla de la computadora el ULTIMO VALOR DE A que fue 25
TIPOS DE DATOS
Para nuestro curso Usaremos numéricos( entero o real) y de carácter (texto).
39
Ojo, las cadenas de textos van entre comillas ejemplo "HOLA JUAN" en cambio los números no llevan comillas delimitadoras.
ENTRADA Y SALIDA DE INFORMACIÓN Los cálculos que realizan las computadoras requieren para ser útiles la entrada de los datos necesarios para ejecutar las operaciones que posteriormente se convertirán en resultados, es decir, salida. Entrada
Las operaciones de entrada permiten leer determinados valores y asignarlos a determinadas variables. Esta entrada se conoce como operación de lectura (read). Los datos de entrada se introducen al procesador mediante dispositivos de entrada (teclado, tarjetas perforadas, unidades
de disco, etc.). Ejemplo leer A, B, C
representa la lectura de tres valores de entrada que se asignan a las variables A, B y C. Salida
La salida puede aparecer en un dispositivo de salida (pantalla, impresora, etc.). La operación de salida se denomina escritura (write). Ejemplo escribir "hola Vargas"
Primeros programas resueltos Ejercicio resuelto 1
Hacer un programa que permita introducir 3 números y que calcule la suma de ellos INICIO Leer A,B,C Misuma = A+B+C Escribir Misuma FIN Ejercicio resuelto 2
40
Hacer un programa que permita introducir 3 números y que calcule la suma de ellos y también la multiplicación de ellos INICIO Leer A,B,C Misuma = A+B+C Producto = A * B * C Escribir Misuma Escribir Producto FIN Ejercicio resuelto 3
Hacer un programa que permita introducir 2 números y que calcule la suma, la resta, la multiplicación y la división de ellos INICIO Leer A,B Misuma = A+B Resta = A-B Producto = A * B DiviUSAT = A / B Escribir Misuma, Resta, Producto, DiviUSAT FIN
Note que en una orden Escribir se pueden mostrar varias variables separadas por comas Note que los nombres de las variables son libres y cada uno usa el nombre que mas le parece.
Ejercicio 4
Hacer un programa que calcule el área de un Cuadrado. Antes de resolver pensemos ¿Que dato se necesita para saber el área de un cuadrado? este tipo de preguntas que uno se formula será crucial en el curso puesto que el enunciado no dice hacer un programa que lea el LADO de un cuadrado y calcule el área en base a este dato proporcionado. Bien obviamente necesito el LADO y la incógnita es el área QUE tengo que ingresar el LADO QUE tengo que procesar UNA MULTIPLICACIÓN DE LADO X LADO QUE tengo que mostrar El ÁREA CALCULADA
41
entonces: INICIO LEER L AREACUAD = L * L ESCRIBIR AREACUAD FIN 14) Hacer un programa donde el importe de un artículo esta dado, calcular el IGV (19%) y calcule el precio al que se debe vender. Inicio Leer A IGV= (A* 0.19) P= A + IGV Escribir P Fin 15) Hacer un programa donde se ingresan dos valores, se pide calcular el cuadrado de la suma de estos. Inicio Leer x, y S= x + y C=S^2 Escribir C Fin 16) Hacer un programa que calcule el área de un triangulo Inicio Leer b, h A = b* h/2 Escribir A Fin 17) Calcular el área total de la siguiente figura
Inicio Leer X1, Y2 R1 = X1* Y2 Leer X2, Y1 R2 = (X2 – X1) * Y1
42