Un algoritmo es un conjunto de pasos a seguir para resolver un problema.
Problema: Tengo un telfono fijo y necesito llamar a alguien Cul es el algoritmo?
Algoritmo expresado en Diagrama de Flujo
Algoritmo expresado en Pseudocdigo
INICIO Levante el fono Espere el tono Marque el nmero Espere que contesten Hable con la persona Cuelgue el fono FIN INICIO Levante el fono FIN Espere el tono Espere el tono Marque el nmero Espere que contesten Hable con la persona Cuelgue el fono 3 FIEE-UNI Diagrama de flujo
Un diagrama de flujo es la representacin grfica de un algoritmo.
Problema: Se desea que la computadora sume dos nmeros.
Describamos los smbolos:
El smbolo significa que all empieza el algoritmo, el inicio del diagrama de flujo.
El smbolo significa el ingreso o entrada de datos a la computadora, generalmente desde el teclado.
El smbolo significa asignacin o proceso, es un clculo interno que realiza la computadora, algo que no podemos ver ya que se realiza dentro del procesador y en la memoria. La flechita indica que el resultado de la suma se debe almacenar en la variable S.
El smbolo significa la salida de datos de la computadora, generalmente a la pantalla. Observe que es el mismo smbolo de la entrada de datos.
INICIO Leer A, B S A + B Escribir S INICIO S A + B Leer A, B Escribir S FIN 4 FIEE-UNI
El smbolo significa que all termina el algoritmo. El final del diagrama de flujo. Observe que es el mismo smbolo del inicio del algoritmo.
El smbolo ndica la direccin que sigue el algoritmo. Obviamente tambin existen flechas hacia arriba, derecha e izquierda. Como convencin, si no dibujamos la punta de la flecha, se supone que va hacia abajo o a la derecha.
Adems de estos smbolos existen otros. Slo mencionare los que usaremos en este curso.
El smbolo Se usa para decisin, para elegir una de dos opciones.
El smbolo Se usa para repetir un conjunto de pasos un determinado nmero de veces.
Pseudocdigo
Es la descripcin de los pasos a seguir por el algoritmo, pero no grficamente como en el diagrama de flujo, si no con palabras claves. Mostremos el pseudocdigo para el ejemplo de la suma de dos nmeros.
INICIO Leer A,B SA+B Escribir S FIN
Expliquemos todas esas palabrotas:
INICIO Seala el principio del algoritmo. Leer A,B Indica que se debe leer los valores de las variables A y B desde el teclado. S A+B Almacena el resultado de la suma A+B en la variable S. Escribir S Indica que el valor de la variable S debe escribirse en la pantalla. FIN Seala el final del algoritmo.
FIN 5 FIEE-UNI PSeInt
PSeInt (Pseudo Interprete) es un software libre dirigido a estudiantes que se inician en la programacin. Permite disear el pseudocdigo, el diagrama de flujo y ejecutarlos.
Realicemos el seudocdigo y diagrama de flujo de la suma de dos nmeros S = A + B.
1. Ejecuta el PSeInt 2. En la pantalla ya aparece el pseudocdigo para Inicio (Proceso) y Fin (FinProceso)
3. Debemos darle un nombre al pseudocdigo. En este caso suma.
6 FIEE-UNI 4. Lo primero ser leer el valor del primer sumando A. Clic al botn y aparece el pseudocdigo escrito en pantalla, complete como se indica.
5. Luego tenemos que sumar los valores de A y B y asignarlos a la variable S. Clic al botn y aparece el pseudocdigo escrito en pantalla, complete como se indica.
6. Por ltimo tenemos que mostrar el resultado S. Clic al botn y aparece el pseudocdigo escrito en pantalla, complete como se indica.
7 FIEE-UNI 7. Para ejecutar el pseudocdigo presione la tecla F9.
8. Escriba por ejemplo: 7 y presione Enter 8 y presione Enter Obtendr el siguiente resultado.
9. Cierre la ventana y ahora veremos el diagrama de flujo. Presione la tecla F7.
* De aqu tambin se puede disear y editar directamente el diagram de flujo y ejecutarlo.
8 FIEE-UNI * Si deseamos tener una presentacin ms amigable, podemos modificar el pseudocdigo tal como se muestra a continuacin.
9 FIEE-UNI Estructuras secuenciales
Una estructura secuencial es aquella donde los pasos a seguir estn en secuencia o sea una despus de otra. Ejercicios resueltos 1. Escribe un programa que lea dos nmeros e imprima su suma, diferencia, producto y cociente.
Diagrama de flujo: Sean A y B los nmeros ledos. Sean S, D, P y C su suma, diferencia, producto y cociente respectivamente.
2. Escriba un programa que lea las tres notas de un alumno e imprima su promedio. El promedio debe salir redondeado.
Diagrama de flujo: Sean N1, N2 y N3 las 3 notas y P el promedio.
INICIO S A + B D A B M A B C A B Leer A, B Escribir S, D, M, C FIN INICIO P redondear ((N1+N2+N3) 3) Leer N1, N2, N3 Escribir P FIN 10 FIEE-UNI 3. Se desea saber qu porcentaje de hombres y mujeres hay en un grupo de estudiantes. Escriba un programa que lea cuantos hombres y mujeres hay en el grupo e imprima su porcentaje.
Diagrama de flujo: Sea H el nmero de hombres y PH su porcentaje. Sea M el nmero de mujeres y PM su porcentaje. Sea T el total de alumnos.
4. Disee un algoritmo que lea cierta cantidad de dlares y muestre en pantalla la cantidad de soles y euros equivalentes. (El tipo de cambio es 1 dlar = 2.80 soles y 1 euro = 3.75 soles)
Diagrama de flujo: Sea D la cantidad de dlares y S y E las cantidades en soles y euros respectivamente.
INICIO T H + M PH H T PM M T Leer H, M Escribir PH 100 PM 100 FIN INICIO S D 2.80 E S 3.75 Leer D Escribir S, E FIN 11 FIEE-UNI 5. Una institucin benfica ha recibido tres donaciones en soles, dlares y marcos. La donacin ser repartida en tres rubros: 50% para la implementacin de un centro de salud, 40% para un comedor de nios y el resto para gastos administrativos. Escriba un algoritmo que lea las tres donaciones y determine el monto en euros que le corresponde a cada rubro. Considere que el tipo de cambio es: 1 dlar = 2.80 soles, 1 dlar = 1.46 marcos, 1 dlar = 0.75 euros.
Diagrama de flujo: Sean S, D y M las donaciones en soles, dlares y marcos respectivamente. Sean CS, CN, GA las cantidades que corresponden al centro de salud, comedor de nios y gastos administrativos respectivamente. Sea SD la conversin de los soles a dlares, MD la conversin de los marcos a dlares y sea TD el total de la donacin en dlares. Sea TE el total en euros.
6. Disee un algoritmo que determine la cifra de las unidades de un nmero entero positivo.
Diagrama de flujo: Para resolver este problema debe saber que existe un operador llamado Mod que devuelve el resto de una divisin entera. Veamos unos ejemplos: 7 Mod 5 devolver 2. Pues 7 5 da 1 y sobra 2 16 Mod 3 devolver 1. Pues 16 3 da 5 y sobra 1 4 Mod 15 devolver 15. Pues 4 15 da 0 y sobra 4
Sea N el nmero entero positivo. Sea U la cifra de las unidades.
INICIO SD S 2.80 MD M 1.46 TD SD+D+MD TE TD 0.75 CS 0.5 TE CN 0.4 TE GA 0.1 TE Leer S, D, M Escribir CS, CN, GA FIN INICIO U N Mod 10 Leer N Escribir U FIN 12 FIEE-UNI 7. El sueldo neto de un vendedor se calcula como la suma de un sueldo bsico de S/.250 ms el 12% del monto total vendido. Disee un algoritmo que determine el sueldo neto de un vendedor sabiendo que hizo tres ventas en el mes.
Diagrama de flujo: Sea V1, V2 y V3 las tres ventas, sea MV el monto vendido, SB el sueldo bsico y SN el sueldo neto.
8. En pases de habla inglesa es comn dar la estatura de una persona como la suma de una cantidad entera de pies ms una cantidad entera de pulgadas. As, la estatura de una persona podra ser 3' 2" ( 3 pies 2 pulgadas ). Disee un algoritmo que determine la estatura de una persona en metros, conociendo su estatura en el formato ingls. Considere que: 1 pie = 12 pulgadas, 1 pulgada = 2.54 cm, 1 m = 100 cm.
Diagrama de flujo: El plan a seguir ser el siguiente: Leemos primero los pies (Ps) y lo convertimos a pulgadas (P1). Luego leemos las pulgadas (P) y la sumamos a las obtenidas de los pies, as obtenemos el total (T=P1+P) en pulgadas. Luego convertimos el total a centmetros (C) y luego a metros (M).
INICIO SB 250 MV V1+V2+V3 SN SB + 0.12 MV Leer V1, V2, V3 Escribir SN FIN INICIO P1 Ps 12 T P+P1 C T 2.54 M C 100 Leer Ps, P Escribir M FIN 13 FIEE-UNI Ejercicios propuestos
1. Una tienda que vende panetones regala un panetn por cada 5 panetones que compres. Escriba un programa que lea la cantidad de panetones que compra un cliente e imprima cuantos panetones se le regalar y tambin imprima el total de panetones que se llevar.
2. Escriba un programa que almacene en la variable A el nmero 2 y en la variable B el nmero 7 y luego mediante alguna operacin intercambie los valores o sea que al final la variable A debe tener el valor 7 y la variable B el valor 2. Para verificar imprima los valores de A y B antes y despus del intercambio.
3. En un negocio Juan invirti 50 dlares, Mara 80 dlares y Timoteo 90 dlares. Si al terminar el negocio se obtuvo una utilidad de 900 dlares, Cunto le corresponde a cada uno?
Estructuras condicionales
Una estructura condicional es aquella donde es posible elegir una determinada accin de acuerdo al resultado de una comparacin lgica. Se utiliza para que la computadora tome decisiones frente a una determinada situacin.
Ejercicio resuelto 1. Escribe un programa que lea dos nmeros y muestre cual es el mayor.
Diagrama de flujo: Sean A y B los nmeros ledos y M el mayor.
A > B INICIO Leer A, B FIN Escribir M SI NO M A M B 14 FIEE-UNI
15 FIEE-UNI Ejercicios propuestos
1. Escriba un programa que divida dos nmeros y si el denominador es cero, que muestre un mensaje de error.
2. Escriba un programa que lea dos nmeros y muestre el siguiente men: 1. Hallar el rea de un rectngulo. 2. Hallar el rea de un tringulo. Luego escoger una opcin con el teclado ingresando el nmero 1 o 2 para elegir qu rea desea calcular.
3. Escriba un programa que lea las tres notas de un alumno e imprima si aprob o no y con qu promedio. Si aprob que se muestre adems el mensaje Felicitaciones! En la UNI se aprueba con 10.
4. Escriba un programa que lea dos nmeros e imprima la diferencia del mayor menos el menor. El programa debe darse cuenta cual es mayor para restar correctamente.
5. Escriba un programa que lea tres nmeros e imprima el mayor.
6. Un obrero gana 1.2 dlar la hora normal y 1.8 dlar la hora extra, si consideramos que las horas normales de trabajo son de 8 horas, escriba un programa que lea las horas diarias que trabaja un obrero e imprima cuanto gan.
Estructuras repetitivas
Una estructura repetitiva es aquella que donde ejecuta un conjunto de acciones un determinado nmero de veces. Ejercicio resuelto 1. Escribe un programa que imprima nmeros desde 10 a 100 de 5 en 5.
16 FIEE-UNI
Ejercicios propuestos
1. Escriba un programa que muestre la siguiente serie: 1, 4, 9, 16,, 576, 625 y adems al final muestre su suma.
2. Escriba un programa que muestre la siguiente suma:
3. Escriba un programa que muestre la siguiente suma:
4. Escriba un programa que lea 10 nmeros e imprima el menor.
5. Escriba un programa que imprima los nmeros primos de 1 hasta 1000.
6. Escriba un programa que genere y muestre aleatoriamente 20 enteros entre -10 y 10 e imprima cuantos son positivos, negativos y ceros. Sugerencia: utilice la funcin AZAR.
7. Escriba un programa que muestre la siguiente suma:
8. Encontrar todos nmeros de tres dgitos que sean iguales a la suma de los cubos de sus dgitos.
17 FIEE-UNI 9. Escriba un programa que imprima todos los nmeros capicas de 3 dgitos.
10. Escriba un programa que imprima la siguiente serie de nmeros: 1 22 333 4444 55555 666666 7777777 88888888 999999999
11. Escriba un programa que imprima la siguiente serie de nmeros: 999999999 88888888 7777777 666666 55555 4444 333 22 1
Apndice 1: Operadores
Operador Significado Ejemplo Relacionales > Mayor que 3>2 < Menor que 'ABC'<'abc' = Igual que 4=3 <= Menor o igual que 'a'<='b' >= Mayor o igual que 4>=5 Lgicos & Y Conjuncin (y). (7>4) & (2=1) //falso | O Disyuncin (o). (1=1 | 2=1) //verdadero ~ NO Negacin (no). ~(2<5) //falso Algebraicos + Suma total <- cant1 + cant2 - Resta stock <- disp - venta * Multiplicacin area <- base * altura / Divisin porc <- 100 * parte / total ^ Potenciacin sup <- 3.41 * radio ^ 2 % MOD Mdulo (resto de la divisin entera) resto <- num MOD div
La jerarqua de los operadores matemticos es igual a la del lgebra, aunque puede alterarse mediante el uso de parntesis.
18 FIEE-UNI Apndice 2: Funciones
Funcin Significado RC(X) Raz Cuadrada de X ABS(X) Valor Absoluto de X LN(X) Logaritmo Natural de X EXP(X) Funcin Exponencial de X SEN(X) Seno de X COS(X) Coseno de X ATAN(X) Arcotangente de X TRUNC(X) Parte entera de X REDON(X) Entero ms cercano a X AZAR(X) Entero aleatorio entre 0 y X-1
Algunas Observaciones
Se pueden introducir comentarios luego de una instruccin, o en lneas separadas, mediante el uso de la doble barra ( // ). Todo lo que precede a //, hasta el fin de la lnea, no ser tomado en cuenta al interpretar el algoritmo.
Ntese que no puede haber instrucciones fuera del programa, aunque si comentarios.
Las estructuras no secuenciales pueden anidarse. Es decir, pueden contener otras adentro, pero la estructura contenida debe comenzar y finalizar dentro de la contenedora.
Los identificadores, o nombres de variables, deben constar slo de letras y nmeros, comenzando siempre con una letra, y no pueden ser palabras reservadas (como para, mientras, y, no, etc...)
Las constantes de tipo carcter se escriben entre comillas ( " ).
En las constantes numricas, el punto ( . ) es el separador decimal. Las constantes lgicas son Verdadero y Falso.