U1-Unidad I-1
U1-Unidad I-1
TABLA DE CONTENIDOS
Algoritmos Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
EJEMPLO
Después de colocar agua y café en las porciones requeridas en sus respectivos depósitos en la
cafetera, está se conecta al toma corriente y se enciende, se espera a que el agua hierva y finalice
el proceso de mezcla del agua con el café que realiza de forma automática la cafetera, cuando
este proceso culminas se sirve la tasa e café y se agrega azúcar al gusto.
Desarrollo del Algoritmo
Inicio
Tomar la cafetera
Colocar agua y café en la cantidad deseada en sus respectivos depósitos o compartimentos
Conectar a la toma corriente
Encender la cafetera
Mientras no culmine el proceso de combinación del agua con el café
Esperar
Servir la tasa de café
Agregar azúcar al gusto
Fin
Inicio
Desmontar la rueda
Desmontar la cubierta
Sacar la cámara
Inflar la cámara
Meter una sección de la cámara en un cubo de agua
Mientras no salgan burbujas
Meter una sección de la cámara en un cubo de agua
Marcar el pinchazo
Echar pegamento
Mientras no esté seco
Esperar
Poner el parche
Mientras no esté fijo
Apretar
Montar la cámara
Montar la cubierta
Montar la rueda
Fin
Algoritmos Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los
pasos del proceso.
EJEMPLO
S A+B
P A*B
Luego de realizar los cálculos (procesos) mostramos los resultados usando la sentencia
escribir así:
Escribir “Suma de A + B = ”, S
Escribir “Producto de A * C = “, P
Proceso Operaciones
A5
B3
SA+B
PA*B
Escribir “Suma de A + B = ”, S
Escribir “Producto de A * B = ”, P
FinProceso
EXPLICACIÓN DEL ALGORITMO
Vamos a explicar línea por línea el algoritmo anterior para una mejor comprensión del
mismo.
Proceso Operaciones //Todo algoritmo empieza con la palabra Proceso y el nombre que le
//queremos dar, para este caso Operaciones.
A 5 // Significa que a la variable A le asignamos 5 (A = 5)
B 3 //Significa que a la variable B le asignamos 3 (B = 3)
S A + B //Significa que a S le asignamos A+B (S = A+B)
P A * B //Significa que a P le asignamos A*B (P = A*B)
Escribir “Suma de A + B = ”, S //Mostramos por pantalla el resultado de sumar A+B
Escribir “Producto de A * B = ”, P //Mostramos por pantalla el resultado de multiplicar
// A*B
FinProceso //Fin del algoritmo
Fase de resolución del problema. Esta fase incluye, a su vez, el análisis del problema así como el
desarrollo y posterior verificación del algoritmo.
Análisis del problema. El primer paso para encontrar la solución a un problema es el análisis del
mismo. Se debe examinar cuidadosamente el problema a fin de obtener una idea clara sobre lo
que se solicita y determinar los datos necesarios para conseguirlo.
Desarrollo del algoritmo. Para desarrollar un algoritmo se debe comenzar por identificar las
tareas más importantes para resolver el problema y disponerlas en el orden en el que han de ser
ejecutadas. Los pasos en esta primera descripción de actividades deberán ser refinados,
añadiendo más detalles a los mismos e incluso, algunos de ellos, pueden requerir un refinamiento
adicional antes que podamos obtener un algoritmo claro, preciso y completo. Este método de
desarrollo de los algoritmos en etapas, yendo de los conceptos generales a los detalle a través de
refinamientos sucesivos, se conoce como método descendente (top-down).
Como ejemplo imagine que desea desarrollar un algoritmo que calcule la superficie de un
rectángulo proporcionándole su base y altura. Lo primero que deberá hacer es plantearse y
contestar a las siguientes preguntas:
Especificaciones de entrada
¿Qué datos son de entrada?
¿Cuántos datos se introducirán?
¿Cuántos son datos de entrada válidos?
Especificaciones de salida
¿Cuáles son los datos de salida?
¿Cuántos datos de salida se producirán?
¿Qué precisión tendrán los resultados?
¿Se debe imprimir una cabecera?
Paso 1. Entrada desde periférico de entrada, por ejemplo teclado, de base y altura.
Paso 2. Cálculo de la superficie, multiplicando la base por la altura.
Paso 3. Salida por pantalla de base, altura y superficie.
El modo más normal de comprobar un algoritmo es mediante su ejecución manual, usando datos
significativos que abarquen todo el posible rango de valores y anotando en una hoja de papel las
modificaciones que se producen en las diferentes fases hasta la obtención de los resultados. Este
proceso se conoce como prueba del algoritmo o prueba de escritorio.
EJEMPLO:
A=5
B=3
S = 5+3 = 8
P = 5*3 = 15
Fase de implementación. Una vez que el algoritmo está diseñado, representado mediante un
método normalizado (diagrama de flujo, diagrama N-S o pseudocódigo), y verificado se debe
pasar a la fase de codificación, traducción del algoritmo a un determinado lenguajes de
programación, que deberá ser completada con la ejecución y comprobación del programa en el
computador. Esta última parte no la abordaremos en este curso, se trata ya de traducir el
algoritmo a un lenguaje de programación como C++, JAVA, etc. que verán en los próximos
semestres.
Simples
Numéricos
Entero: Subconjunto finito de los números enteros, cuyo rango o tamaño dependerá
del lenguaje en el que posteriormente codifiquemos el algoritmo y de la computadora
utilizada. Ejemplo: 10, 200, 1500, etc.
Real: Subconjunto de los números reales limitado no sólo en cuanto al tamaño, sino
también en cuanto a la precisión. Ejemplo: 4.5, 2.7, 234.78, etc.
Lógicos. Son aquellos que solo pueden tener dos valores (verdadero o falso), representan
el resultado de una comparación entre otros datos (numéricos o alfanuméricos).
Alfanuméricos.
Carácter: Conjunto finito y ordenado de los caracteres que el computado reconoce.
Ejemplo: “a”, “@”, “”, “1”, etc.
Cadena: Contienen una serie finita de caracteres, que podrán ser directamente traídos
o enviados a/desde la consola. Ejemplo: “Calle 123 # 97-21”, “Esto es un ejemplo de
cadena”, etc.
Estructurados
Los tipos de datos estructurados, no serán abordados en este curso, su estudio se realizara en la
asignatura Algoritmos y Estructuras de Datos que verán en los siguientes semestres.
Operadores. Son elementos que relacionan de forma diferente, los valores de una o más literales.
Es decir, los operadores nos permiten manipular valores.
Tipos de operadores.
Relacionales. Se utilizan para establecer una relación entre dos o más valores del mismo tipo.
> Mayor que
< Menor que
>= Mayor igual
<= Menor igual
<> Diferente
= Igual
Lógicos. se utilizan para establecer relaciones entre valores lógicos, pueden ser resultado de
una expresión relacional.
Yo& And o Y
O Or u O
¬o~ Not o Negación
Constantes. Son datos cuyo valor no cambia durante todo el desarrollo del algoritmo.
Ejemplos:
X 100
Y 45.56
Nombre “Juan José”
Seguir V
Variables. Una variable es un objeto cuyo valor puede cambiar durante el desarrollo del
algoritmo. Se identifica por su nombre y por su tipo, que podrá ser cualquiera, y es el que
determina el conjunto de valores que podrá tomar la variable.
Ejemplos:
Entero: Código, días
Real: Nota, sueldo
Cadena: Nombre, Dirección
Carácter: Res, Op
Lógica: Seguir
Ejemplo: a + (b * 3) / c
Nombre
Nota
Sueldo
Código
Representación de algoritmos. Un algoritmo puede ser escrito en castellano narrativo, pero esta
descripción suele ser demasiado prolija y, además, ambigua. Para representar un algoritmo se
sede utilizar algún método que permita independizar dicho algoritmo de los lenguajes de
programación y, al mismo tiempo, conseguir que sea fácilmente codificable.
Diagramas de flujo
Diagramas N-S (Nassi-Schneiderman)
Pseudocódigo
Diagramas de flujo. Los diagramas de flujo se utilizan tanto para la representación gráfica de las
operaciones ejecutadas sobre los datos a través de todas las partes de un sistema de
procesamiento de información, diagramas de flujo del sistema, como para la representación de la
secuencia de pasos necesarios para describir un procedimiento particular, diagrama de flujo de
detalle.
En la actualidad se siguen usando los diagramas de flujo de sistema, pero ha decaído el uso de los
diagramas de flujo por otros métodos de desarrollo estructurados más eficaces para la
representación y actualización de los algoritmos.
El diagrama de flujo utiliza unos símbolos normalizados, con los pasos del algoritmo escritos en
el símbolo adecuado y los símbolos unidos por flechas, denominadas líneas de flujo, que indican
el orden en que los pasos deben ser ejecutados. Los símbolos principales son:
Proceso
Entrada / Salida
Decisión
Resulta necesario indicar dentro de los símbolos la operación específica concebida por el
programador. Como ejemplo vemos un diagrama de flujo básico, que representa la secuencia de
pasos para que un programa lea una temperatura en grados centígrados y calcule y escriba su
valor en grados kelvin.
Inicio
Leer (Celsius)
Escribir (Kelvin)
Fin
Diagrama Nassi-Schneiderman. Los diagramas N-S denominados así por sus inventores, son una
herramienta de programación que favorece la programación estructurada y reúne características
gráficas propias de diagrama de flujo y lingüísticas propias de los pseudocódigos. Consta de una
serie de cajas continuas que se leerán siempre de arriba-abajo y se documentarán de la forma
adecuada.
En los diagramas N-S las tres estructuras básicas de la programación estructurada secuencial,
selectiva y repetitiva, encuentran su representación propia. Los símbolos principales son:
Sentencia 1
Secuencia
Sentencia 2
Sentencia 3
Repetitiva de 0 a n veces
Repetitiva de 1 a n veces
Repetitiva n veces
Condición
Selectiva
Ssi
Si No
N
El algoritmo que lee una temperatura en grados Celsius y calcula y escribe su valor en grados
Kelvin se puede representar mediante el diagrama N-S así:
inicio
leer(Celsius)
Kelvin Celsius + 273.15
escribir (kelvin)
Fin
Pseudocódigo. Sirve para escribir programas de computadora en lenguaje natural de tal manera
que se facilite la comprensión, prueba y posterior codificación en un lenguaje de programación
específico. El pseudocódigo se consiguió para superar las dos principales desventajas del
diagrama de flujos: lento de crear y difícil de modificar sin un nuevo redibujo. Es una
herramienta muy buena para el seguimiento de la lógica de un algoritmo y para transformar con
facilidad los algoritmos a programas, escrito en un lenguaje de programación especifico.
Proceso <Identificador_algoritmo>
// Acciones, sentencias ejecutables tanto simples como estructuradas
FinProceso
Los espacios en blancos entre los elementos no resultan significativos y las partes importantes se
suelen separar unas de otras por líneas en blanco.
El algoritmo que lee una temperatura en grados Celsius y calcula y escribe su valor en grados
Kelvin se puede representar mediante pseudocódigo así:
Proceso Temperatura
Escribir “Ingrese los grados Celsius”
Leer Celcius
Kelvin Celsius + 273.15
Escribir “Los ”, Celcius, “ grados Celsius equivalen a ”, Kelvin, “ grados Kelvin”
FinProceso
Observación. Note que las líneas de código entre las sentencias Proceso y FinProceso, están
entradas es decir sangradas o indentadas a la derecha, esto con el propósito de hacer más
entendible el algoritmo, y se recomienda aplicarlo siempre; a medida que avancemos, veremos
que otras sentencias o instrucciones se les aplica la sangría.
Serían válidos los datos a, b, c, d, e, f, g, j. Los datos h, i no serían validos pues el exponente
no puede tener forma de decimal. El k no sería correcto, pues mescla caracteres alfabéticos y
dígitos y no se puede considerar como un identificador de una variable ya que empieza por un
digito. El dato l aunque mescla dígitos y caracteres alfabéticos, podría ser un identificador si
admitiéramos el carácter punto como carácter válido para una variable (Pascal o Basic lo
consideran).
4. ¿Qué valor toman las variables A y B tras la ejecución de las siguientes asignación
A 10
B 5
A B
B A
Ejemplo:
Leer a, b
Ejemplo:
Escribir a, b
También podemos usar un mensaje entre comillas para que el resultado a mostrar o imprimir
tenga mayor claridad, ejemplo:
Palabras reservadas. Son palabras que tienen un significado especial como: proceso, fin, leer,
escribir, etc.
Identificadores: Son los nombres que se dan a las constantes simbólicas, variables, funciones,
procedimientos u otros objetos que manipulan el algoritmo. La regla para construir un
identificador establece que:
Literales: Los literales son valores que aparecen directamente escritos en el programa y pueden
ser literales: lógicos, enteros, reales, de tipo carácter, de tipo cadena y el literal nulo.
Asignación. La asignación consiste, en el paso de valores o resultados a una zona de la memoria.
Dicha zona será reconocida con el nombre de la variable que recibe el valor. Se representa con
flechas izquierda.
EJEMPLO
Proceso Ejemplo_I_03_1
Escribir "Ingrese un valor entero"
Leer Numero
Resultado <- Numero * 2 * 10
Escribir Resultado
FinProceso
DATOS DE ENTRADA: a, b, c, d
DATOS DE SALIDA: Producto, Suma, Media
PROCESO:
Producto a * b * c * d
Suma a + b + c + d
Media Suma / 4
Las variables a, b, c, d, producto y suma podrán ser enteras, pero no así la variable media, ya
que la división produce siempre resultados de tipo real.
Proceso Ejemplo_I_03_2
Escribir "Ingrese el valor para A"
Leer a
Escribir "Ingrese el valor para B"
Leer b
Escribir "Ingrese el valor para C"
Leer c
Escribir "Ingrese el valor para D"
Leer d
Producto <- a * b * c * d
Suma <- a + b + c + d
Media <- Suma / 4
Escribir "Producto = ", Producto
Escribir "Sumatoria = ", Suma
Escribir "Media = ", Media
FinProceso
3. Diseñar un algoritmo en pseudocódigo que lea grados Celsius y los convierta a grados kelvin
y Fahrenheit.
DATOS DE ENTRADA: C
DATOS DE SALIDA: K, F
PROCESOS:
K C + 273.15
F (9/5) * C + 32
Proceso Ejemplo_I_03_3
Escribir "Ingrese los grados Celsius"
Leer C
K <- C + 273.15
F <- (8/5) * C + 32
Escribir "Grados Kelvin : ", K
Escribir "Grados Fahrenheit : ", F
FinProceso
5. Una persona invierte su capital en un banco y desea saber cuánto dinero ganara después de un
mes si el banco paga a razón de 2% mensual
Análisis del problema
Proceso Ejemplo_I_03_4
Escribir "Ingrese el capital"
Leer Cap
Int <- 2/100
Gan <- Cap * Int
Escribir "La ganancia en un mes es de $", Gan
FinProceso
Cap. Gan.
====================
100 2
200 40
100000 2000
6. Un vendedor recibe un sueldo base más un 10% extra por comisión de sus ventas, el vendedor
desea saber cuánto dinero obtendrá por concepto de comisiones por las tres ventas que realiza
en el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones
Proceso Ejemplo_I-03-5
Escribir “Ingrese el sueldo base”
Leer SuelBas
Escribir “Ingrese la venta 1”
Leer Vent1
Escribir “Ingrese la venta 2”
Leer Vent2
Escribir “Ingrese la venta 3”
Leer Vent3
PComi <- 10/100
Comi (Vent1 + Vent2 + Vent3) * 0.10
SuelNeto SuelBas + Comi
Escribir “Comisión $”, Comi
Escribir “Sueldo Neto $”,SuelNeto
Fin _ Proceso
7. Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber
cuánto deberá pagar finalmente por su compra.
Proceso Ejemplo_I_03_6
Escribir "Ingrese el total de la compra"
Leer TotComp
PDes <- 15/100
Desc <- TotComp * PDes
ValPag <- TotComp - Desc
Escribir "Descuento $", Desc
Escribir "Valor a pagar $", ValPag
FinProceso
8. Un alumno desea saber cuál será su calificación final en la materia de Algoritmos I. Dicha
calificación se compone de los siguientes porcentajes:
Seguimiento 30%
Trabajo de aplicación práctica 30%
Evaluación tipo ECAES 25%
Portafolio 15%
9. Un facilitador desea saber qué porcentaje de hombres y que porcentaje de mujeres hay en un
grupo de estudiantes de algoritmos I, diseñe un algoritmo en pseudocódigo que te permita
resolver el anterior problema.
Proceso Ejemplo_I_03_8
Escribir "Número de estudiantes hombres del curso"
Leer Hom
Escribir "Número de estudiantes mujeres del curso"
Leer Muj
ProHom <- (Hom * 100) / (Hom+Muj)
ProMuj <- (Muj * 100) / (Hom + Muj)
Escribir "Promedio estudiantes hombres : ", Prohom
Escribir "Promedio estudiantes mujeres : ", ProMuj
FinProceso