UNIVERSIDAD NACIONAL DE CONCEPCIÓN
FACULTAD DE CIENCIAS ECONOMICAS Y ADMINISTRATIVAS
Carrera “INGENIERIA EN INFORMÁTICA EMPRESARIAL”
Materia: Algoritmia I
UNIDAD I-II: Conceptos Fundamentales
para el Diseño, Desarrollo e
Implementación de Algoritmos
Historia y Aplicación de los Lenguajes
Algorítmicos
• La palabra ALGORITMO originalmente hacía
referencia a las reglas de uso de la aritmética
utilizando dígitos árabes, se evolucionó a la
palabra latina, derivación de Al-Khwariz-mi,
algorismus, que más tarde mutaría a
algoritmo. La palabra ha cambiado de forma
que en su definición se incluye a todos los
procedimientos finitos para resolver
problemas
Definición de Algoritmo
• “Un algoritmo se define como un método que
se realiza paso a paso para solucionar un
problema que termina en un número finito de
pasos”.
• “Es un conjunto de instrucciones o reglas bien
definidas, ordenadas y finitas que permite
realizar una actividad mediante pasos
sucesivos que no generen dudas a quien lo
ejecute”.
Definición de Algoritmo
• “Los Algoritmos tienen un inicio y una entrada,
siguiendo los pasos sucesivos por lo general
ocurre un proceso y finalmente se obtiene una
salida o una solución del problema.”
• “Es un método para resolver un problema
mediante una serie de pasos precisos, definidos y
finitos”.
• “Un algoritmo es una serie de operaciones
detalladas, en otras palabras un algoritmo es un
conjunto de reglas para resolver una cierta clase
de problemas y se puede formular de muchas
formas con el cuidado de que no exista
ambigüedad”.
Características de los algoritmos
• Debe ser preciso. E indicar el orden de realización de
cada paso.
• Debe ser definido. Si se sigue un algoritmo dos veces,
se debe obtener el mismo resultado cada vez.
• 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.
• Debe describir tres partes: Entrada, Proceso y Salida.
• Debe ser Sencillo, Legible.
• Debe ser Modular.
• Debe ser Eficiente y Eficaz.
• Debe ser Correcto. Sin errores.
Tipos de Algoritmos
• Algoritmo no computacional: Es un algoritmo
que no requiere de una computadora para ser
ejecutado.
• Algoritmo computacional: Es un algoritmo que
puede ser ejecutado en una computadora.
• Algoritmo cualitativo: Son aquellos en los que se
describen los pasos utilizando palabras (de forma
narrativa).
• Algoritmo cuantitativo: Son aquellos en los que
se utilizan cálculos numéricos, lógicos, de
comparación para definir los pasos del proceso.
Algoritmos Cotidianos
• En la vida cotidiana se emplean algoritmos en multitud de
ocasiones para resolver problemas. Algunos ejemplos son:
1. Los manuales de usuario, que muestran algoritmos para
usar un aparato.
2. Las instrucciones que recibe un trabajador por parte de su
jefe.
3. Los pasos de una receta de una ensalada.
4. El cambio de un neumático.
5. El lavar los platos en la cocina.
6. Los pasos a seguir en un día normal de trabajo.
7. El como cambiar una bombilla eléctrica.
Ejemplo: Algoritmo Cualitativo
Poner la mesa para la comida
1. Inicio
2. Poner el mantel
3. Tomar una servilleta hasta que el número
servilletas sea igual al de las personas
4. Tomar un vaso hasta que el número de vasos sea
igual al de las personas
5. Tomar un juego de platos hasta que el número
de juegos sea igual al de las personas
6. Tomar un juego de cubiertos hasta que el
número de juegos sea igual al de las personas
7. Fin
Ejemplo: Algoritmo Cualitativo
Lavar los platos de la comida
1. Inicio
2. Abrir el grifo
3. Tomar la esponja
4. Echarle detergente
5. Mientras queden platos sucios
1. Lavar el plato
2. Enjuagarlo
3. Dejarlo en el escurridor
6. Mientras queden platos en el escurridor
1. Secar platos
7. Fin
Ejemplo: Algoritmo Cuantitativo
Obtener la suma de dos números
1. Declarar (a, b, c)
2. Inicio
3. Ingresar (a, b)
4. c=a+b
5. Mostrar (c)
6. Fin
Ejemplo: Algoritmo Cuantitativo
Obtener el área de un triángulo
1. Declarar (b, h, a)
2. Inicio
3. Ingresar (b, h)
4. a = (b * h) / 2
5. Mostrar (a)
6. Fin
Algoritmos no computacionales vs
computacionales
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 debe 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.
Solución del problema
• La solución a la medida de un problema por computadora,
requiere como en otras disciplinas de una metodología que
nos enseñe de manera gradual, la forma de llegar a estas
soluciones.
• La Metodología para la solución de Problemas por
computadora establece 7 pasos, dispuestos de tal forma que
cada uno es dependiente de los anteriores, lo cual indica que
se trata de un proceso complementario y por lo tanto cada
paso exige el mismo cuidado en su elaboración.
– 1. Definición del problema.
– 2. Análisis del Problema.
– 3. Diseño del Algoritmo.
– 4. Codificación del Programa.
– 5. Prueba y Depuración.
– 6. Documentación.
– 7. Explotación y Mantenimiento.
Lenguajes Algorítmicos
• Pseudocódigo.
• Diagramas de Flujo o Flujogramas.
• Diagramas N-S (Nassi-Schneiderman)
Pseudocódigo
• El pseudocódigo es un lenguaje de
programación algorítmico; es un lenguaje
intermedio entre el lenguaje natural y
cualquier lenguaje de programación
específico. No existe una notación formal o
estándar de pseudocódigo, sino que, cada
programador puede utilizar la suya propia.
Pseudocódigo
• El pseudocódigo es un lenguaje algorítmico informal que
es una imitación de uno o más lenguajes de
programación de alto nivel. Un pseudocódigo puede
contener símbolos (+, -, *, /, =, etc.), términos (leer,
imprimir, abrir, cerrar, etc) y estructuras de programación
(si, si...sino, mientras...hacer , repetir...hasta, para….).
• Al contrario que los lenguajes de programación de alto
nivel, no existe un conjunto de reglas que definan con
precisión lo que es y lo que no es un pseudocódigo. En
otras palabras, no existe un pseudocódigo estándar. Varía
de un programador a otro.
• La ventaja del pseudocódigo es que, su uso en la
planificación de un programa, permite al programador
concentrarse en la lógica y en las estructuras de control y
no preocuparse de las reglas de un lenguaje específico.
Pseudocódigo
Ejemplo de Pseudocódigo
Algoritmo: Hallar el área de un triángulo.
Var
numérico: Base, Altura, Area
Inicio
Imprimir (“Ingrese la Base: “)
Leer (Base)
Imprimir (“Ingrese la Altura: “)
Leer (Altura)
Area = (Base * Altura) / 2
Imprimir (Area)
Fin
Diagramas de Flujo
Son la representación gráfica de la solución
algorítmica de un problema. Para diseñar se
utilizan determinados símbolos o figuras que
representan una acción dentro del
procedimiento. Utilizan unos símbolos
normalizados, con los pasos del algoritmo
escrito en el símbolo adecuado y los símbolos
unidos con flechas, denominadas líneas de
flujo, que indican el orden en que los pasos
deben ser ejecutados.
Diagramas de Flujo
• Se escribe de arriba hacia abajo y de izquierda a derecha.
• Se deben usar solamente líneas de flujo horizontales y/o
verticales, (jamás curvas).
• En cada paso expresar una acción concreta.
• Se deben usar conectores sólo cuando sea necesario.
• No deben quedar líneas de flujo sin conectar.
• Se deben trazar los símbolos de manera que se puedan leer de
arriba hacia abajo y de izquierda a derecha.
• Todo texto escrito dentro de un símbolo deberá ser escrito
claramente, evitando el uso de muchas palabras.
• La secuencia de flujo normal en una solución de problema.
– Tiene un inicio.
– Una lectura o entrada de datos.
– El proceso de datos.
– Una salida de información.
– Un final.
• Simbología para diseñar flujogramas.
Simbología para diseñar flujogramas
Diagramas de Flujo
Diagramas de Flujo
• Ventajas
– Rápida comprensión de las relaciones.
– Análisis efectivo de las diferentes secciones del programa.
– Pueden usarse como modelos de trabajo en el diseño de nuevos
programas o sistemas.
– Comunicación con el usuario.
– Documentación adecuada de los programas.
– Codificación eficaz de los programas.
– Depuración y pruebas ordenadas de programas.
• Desventajas
– Diagramas complejos y detallados suelen ser laboriosos en su
planteamiento y diseño.
– Acciones a seguir tras la salida de un símbolo de decisión, pueden ser
difíciles de seguir si existen diferentes caminos.
– No existen normas fijas para la elaboración de los diagramas de flujo
que permitan incluir todos los detalles que el usuario desee introducir.
Diagramas N-S (Nassi-Schneiderman)
• Es una herramienta que favorece la programación
estructurada y reúne características gráficas
propias de diagramas de flujo y lingüísticas
propias pseudocódigos.
• Los diagramas N-S permiten representar de
forma sencilla los pasos que conforman un
algoritmo y por su combinación de texto e
imagen son muy fáciles de interpretar.
• Constan de una serie de cajas contiguas que se
leerán siempre de arriba-abajo al igual que los
diagramas de flujo poseen estructuras lógicas y
simbología.
Diagramas N-S (Nassi-Schneiderman)
Es importante mencionar que el diseño de
algoritmos no sólo requiere conocer
metodologías de representación, sino también
desarrollar el pensamiento lógico para
generar soluciones y esto se consigue
mediante el desarrollo de ejercicios.
Tipos de Datos Simples
• Los datos son los objetos de información sobre los que
actúa un programa. Un dato puede ser un simple
carácter como 'a', un valor entero tal como 35, un
número real tal como 2,345 o una cadena tal como
"algoritmia".
• A nivel máquina los datos se representan internamente
como una secuencia de bits (dígitos 0 y 1). Los
lenguajes de alto nivel evitan estos manejos internos
mediante el concepto de tipo de dato. En la mayoría de
los lenguajes de programación los tipos de datos
simples o primitivos se pueden clasificar como:
– Datos Numéricos
• Enteros (Integer/Int)
• Reales (Real, Float, Double)
– Datos Alfanuméricos (Carácter)
– Datos Lógicos (Boolean)
Datos Numéricos
• Permiten representar valores escalares de forma
numérica, esto incluye a los números enteros y los
reales. Este tipo de dato permiten realizar operaciones
aritméticas comunes y su rango o tamaño dependerá
del lenguaje en el que se codificará el algoritmo y de la
computadora utilizada.
– Enteros (Integer/Int): Dato numérico sin componente
decimal y puede ser positivo o negativo. Ejemplos: 100 ;
5.320 ; -15.000
– Reales (Real, Float, Double): Dato numérico con
componente decimal, y puede ser positivo o negativo. El
número real consta de un entero y de una parte decimal.
Ejemplos: 100,50 ; -99,25 ; 105
Datos Alfanuméricos (String)
• Es una secuencia de caracteres alfanuméricos que
permiten representar valores identificables de forma
descriptiva, esto incluye nombres de personas,
direcciones, etc. Es posible representar números como
alfanuméricos, pero estos pierden su propiedad
matemática, es decir no es posible hacer operaciones
con ellos. Estos caracteres se encuentran delimitados
por una comilla (apóstrofe) o dobles comillas, según el
tipo de lenguaje de programación. La longitud de una
cadena de caracteres es el número de ellos
comprendidos entre los separadores o delimitadores.
Algunos ejemplos se muestran a continuación:
– “Universidad Nacional de Concepción”
– “2022”
Datos Lógicos (Boolean)
• Son aquellos que solo pueden tener dos
valores (cierto o falso) ya que representan el
resultado de una comparación entre otros
datos (numéricos o alfanuméricos)
Tipos de Datos Compuestos
• Nota: También la mayoría de los lenguajes de
programación permiten crear tipos
compuestos conocidos también como tipos
abstractos de datos. Estos son tipos de datos
creados por el programador para responder a
un problema específico o general, usando
para ello los tipos simples u otros tipos
abstractos.
Tipos de Operadores
• Operadores Aritméticos.
• Operadores Relacionales.
• Operadores Lógicos.
Operadores Aritméticos
Operadores Relacionales
Operadores Lógicos
Prioridad de los Operadores
Identificadores
• Un identificador es un nombre que puede
darse a una variable, a una constante y en
general a cualquier elemento de un programa
que necesite nombrarse.
• Un identificador también puede definirse
como una secuencia de caracteres que sirve
para identificar una posición en la memoria de
la computadora, que nos permite acceder a su
contenido.
Reglas para formar un Identificador
• Debe resultar significativo, sugiriendo lo que
representa.
• No podrá coincidir con palabras reservadas, propias del
lenguaje algorítmico. La representación de algoritmos
va a requerir el uso de palabras reservadas, como es el
caso de LEER “READ” (instrucción para la lectura de
datos) y de IMPRIMIR “WRITE” (usada para enviar los
datos a un dispositivo de salida).
• Debe comenzar con una letra (A a Z, mayúscula o
minúscula) y no debe contener espacios en blanco.
• Letras, dígitos y caracteres como el subrayado ( _ )
están permitidos después del primer carácter.
Variables
• Es un espacio en la memoria de la computadora
que permite almacenar temporalmente un dato
durante la ejecución de un proceso, su contenido
puede cambiar durante la ejecución del
programa.
• Una variable tiene asociada dos cosas
fundamentales: un identificador y un tipo de
dato. El nombre identifica de manera única la
localización de memoria donde se almacena el
dato. El tipo de dato especifica la naturaleza del
dato que puede almacenar la variable. Según el
tipo de dato de la variable podemos tener
variables enteras, variables reales, variables de
carácter, variables booleanas, etc.
Constantes
• Una constante es un dato numérico o
alfanumérico que no cambia durante la ejecución
del programa. Según el tipo de dato podemos
tener constantes enteras, constantes reales,
constantes de carácter y constantes de cadena.
• Normalmente, los lenguajes de programación
permiten dar nombres a determinadas
constantes. Por ejemplo, el número de días de la
semana ( 7 ) es un valor constante y puede recibir
el nombre NUMDIAS.
Expresiones
• Las expresiones son combinaciones de constantes,
variables, símbolos de operación, paréntesis y nombres
de funciones especiales.
– Por ejemplo: a + ( b + 3 ) / c
• Cada expresión toma un valor que se determina
tomando los valores de las variables y constantes
implicadas y la ejecución de las operaciones indicadas.
Una expresión consta de operadores y operandos.
Según sea el tipo de dato que manipulan, se clasifican
en:
– Aritméticas.
– Relaciónales.
– Lógicas.
Expresiones Aritméticas
• Los operandos que intervienen son
numéricos, el resultado también es de tipo
numérico y se construyen haciendo uso de los
operadores aritméticos. Se pueden considerar
análogas a las fórmulas matemáticas.
Expresiones Relacionales y Lógicas
• Se construyen mediante los operadores
relacionales y lógicos y su resultado sólo puede
tomar dos valores: Verdadero (TRUE) o Falso
(FALSE).
• Los operadores de relación sólo podrán actuar
sobre operandos del mismo tipo y siempre
devuelven un resultado del tipo lógico.
• Los operadores lógicos, por su parte, actúan
sobre operandos de tipo lógico y devuelven un
resultado del mismo tipo, determinados por la
tabla de verdad correspondientes a cada uno de
ellos.
Tabla de verdad
Funciones Internas
• Las operaciones que se requieren en los programas
exigen en numerosas ocasiones, además de las
operaciones aritméticas básicas, un número
determinado de operadores especiales que se
denominan funciones internas, incorporadas o
estándar.
• Algunos ejemplos:
– Valor absoluto abs(x)
– Coseno cos(x)
– Exponencial exp(x)
– Aleatorio aleatorio(x)
– Redondeo redondeo(x)
– Raíz cuadrada sqrt(x)
– Truncamiento trunc(x)
Ejercicios
4+2*5=
3 + 5 * (10 - (2 + 4)) =
3,5 + 5,09 – 14,0 / 40 =
2,1 * (1,5 + 3,0 * 4,1) =
45 / 5 + 4 =
a = 10 b = 20 c = 30
a+b>c
a-b<c
a-b=c
a*b<>c
(a < b) and (b < c)
a = 10 b = 12 c = 13 d =10
((a > b)or(a < c)) and ((a = c) or (a > = b))
((a > = b) or (a < d)) and (( a > = d) and (c > d))
not (a = c) and (c > b)