Salle
Salle
La La
Algoritmos
Tecnológica
Carrera:
Ingenierías
Universidad
Elaborado por:
Universidad
Caja Negra
El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el concepto de
programa. Mientras el primero es la especificación de un conjunto de pasos (operaciones, instrucciones,
órdenes,...) orientados a la resolución de un problema, el segundo es ese conjunto de operaciones
especificadas en un determinado lenguaje de programación y para un computador concreto, susceptible de
ser ejecutado (o compilado o interpretado). Un algoritmo, estrictamente hablando, no puede ejecutarse
hasta que se implementa, ya sea en un lenguaje de programación, en un circuito eléctrico, en un aparato
mecánico, usando papel y lápiz, o en algún otro modelo de computación.
En términos generales, algoritmos son soluciones a un cierto tipo de problemas, llamados problemas
computacionales o algorítmicos. Un problema de este tipo puede ser visto como la búsqueda de una "caja
negra", que está especificada con una precisa definición de las entradas legales y con una precisa definición
de las salidas legales como una función de las entradas. Esta es la forma en que cada salida depende de la
entrada, tal y como puede verse en el siguiente gráfico:
Caracterización de
todas las entradas
legales.
Algoritmo
Caracterización de todas las
salidas deseadas como una
función de la entrada.
Salida deseada
La caja negra se utiliza para representar a los sistemas cuando no sabemos que elementos o
cosas componen al sistema o proceso, pero sabemos que a determinadas corresponden
determinadas salidas y con ello poder inducir, presumiendo que a determinados estímulos, las
variables funcionaran en cierto sentido.
2
Introducción a la Programación Universidad Tecnológica La Salle
Numéricos
Simples Lógicos
Alfanumérico (string)
Tipos de
Datos
Arreglos
Estructurados Registros
Archivos
Apuntadores
Datos Simples
Datos compuestos o
estructurados
3
Introducción a la Programación Universidad Tecnológica La Salle
2. Variables y constantes
2.1. Clasificación de las Variables
Por su Contenido.
Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos,
es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal. Ejemplo:
iva=0.16 pi=3.1416 costo=2500
Variables Lógicas: Son aquellas que solo pueden tener dos valores (verdadero o falso) estos representan
el resultado de una comparación entre otros datos.
Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres
especiales). Ejemplo:
Por su uso.
Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que se
usan normalmente dentro de un programa. Ejemplo:
suma=a+b/c
Contadores: Se utilizan para llevar el control del número de ocasiones en que serealiza una operación o
se cumple una condición. Se incrementa o disminuye en una cantidad constante, así:
Contador = Contador + <constante>
Los contadores se deben inicializar (darle un valor inicial) antes de utilizarlos debido a que algunos
compiladores al asignarles espacio de memoria los llena con unos números indefinidos llamados “basura”.
Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de
valores que se van leyendo o calculando progresivamente. Se incrementan en una cantidad variable
resultante de algún proceso, así:
Acumulador = Acumulador + <expresión>
En donde “expresión” puede ser una simple variable o varias variables operadas en
alguna forma.
Por la misma razón de los contadores, los acumuladores también deben ser inicializados.
Switches o banderas: Una variable tipo switche o bandera es aquella que almacena generalmente uno de
dos valores excluyentes entre sí. Los valores los define el programador y son normalmente 0 y 1 „S‟ y „N‟
„F‟ y „V‟ “SI” y “NO” “VERDADERO” y “FALSO”
3. Expresiones:
4
Introducción a la Programación Universidad Tecnológica La Salle
4.1. Estructura Secuencial: La estructura secuencial se caracteriza porque una instrucción sigue a otra en
secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente
hasta el fin del proceso.
El diseñar un algoritmo implica que éste debe ser lo más claro posible; estructurado de tal forma que su lectura facilite
el entendimiento de éste.
Partiendo de lo anterior surgió la estandarización de la estructura de los lenguajes de programación sin importar su
complejidad, lo que permitió definir que estos pueden ser construidos a partir de la combinación de tres estructuras
básicas de control de flujo: Secuencial, Condicional y Repetitiva.
La estructura secuencial se convierte en el pilar de cualquier algoritmo, pues se garantiza que un programa basado en
ejecución secuencial, siempre ejecutará las mismas acciones, a menos que se implemente una de las otras
estructuras.
Entrada: La entrada o lectura, consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta
operación se representa en un seudocódigo como sigue:
Leer (a)
Leer (a, b) (para lectura de varias variables en una sola instrucción)
Donde “a” y “b” son las variables que recibirán los valores
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. La asignación se puede clasificar de la siguiente forma:
• Asignación Simples: Consiste en pasar un valor constate a una variable.
Ejemplo a = 15
• Asignación por contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso.
Ejemplo a = (a + 1)
Salida. La salida o escritura, consiste en mandar por un dispositivo de salida (por ejemplo monitor o impresora) un
resultado o mensaje. Este proceso se representa en seudocódigo como sigue:
Inicio
Leer a, b
C = (a*b)
Imprima (“el resultado es”, c)
Fin
5
Introducción a la Programación Universidad Tecnológica La Salle
Ejemplo 1
Ejemplo 2
a. Definición Un almacén que vende zapatos a un precio fijo desea conocer su utilidad en el total de ventas, partiendo del
número de artículos vendidos día. Se conoce que la utilidad es del 35%
c. Seudocódigo
Inicio
Lea Cant, Vr
Tot_v = (Cant * Vr)
U = Tot_V * 0,35
Imprima (“Las utilidades ascienden a”, U)
Fin
6
Introducción a la Programación Universidad Tecnológica La Salle
1. Un estudiante desea saber a partir de sus notas parciales, la definitiva en la asignatura de programación, teniendo
en cuenta que ésta se califica de la siguiente forma: 1 seguimiento que equivale al 40%, un parcial que equivale al
20% un proyecto que equivale al 10% y un final que equivale al 30%.
2. Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de
estudiantes.
3. Se desea saber cuantos pinos y cuantos cedros se pueden sembrar en un terreo que mide n cantidad de metros.
El dueño ha establecido que sembrará el 35% del terreno en pinos y el 65% en cedros. Las normas de agricultura
establecen que en 10 metros cuadrados se puede sembrar 4 pinos y en 15 metros cuadrados 5 cedros.
4.2. Estructuras Condicionales O De Selección: Diariamente en nuestras vidas cotidianas tomamos decisiones
sobre una serie de circunstancias que acontecen, por ejemplo, si queremos ir o no a un determinado lugar, si se
dispone o no de dinero para ir de compras, si llueve o no, entre otras.
Seudocódigo
Si (condición) entonces
Acciones ……
FinSi
Seudocódigo
Si (condición) entonces
Acciones A
Sino
Acciones B
FinSi
Seudocódigo
Si (condición) entonces
Acciones A
Si (condición) entonces
Acciones C
Si (condición) entonces
Acciones E
FinSi
Sino
Acciones D
FinSi
Sino
Acciones B
FinSi
Estructura condicional Múltiple (según caso): La estructura de
selección múltiple segun_sea o casos, permite elegir una entre
7
Introducción a la Programación Universidad Tecnológica La Salle
varias rutas posibles, evaluando para ello una expresión que puede tomar n valores distintos, 1, 2, 3, 4, ... , n.
Seudocódigo
Según (Expresión) Haga
Caso Expr. = 1
Acciones A
Caso Expr.= 2
Acciones B
Caso Expr.= 3
Acciones C
Caso Expr.= n
Acciones D
Caso Expr.= n + 1
Acciones E
En_Otro_Caso
Acciones F
FinSegún_Caso
Ejemplo 1
a. Definición Dados dos números A y B donde A <> B, determine cual es el mayor y menor e imprimirlos.
b. Análisis
Datos de entrada
A, B
Dato de Proceso (no hay formulas ni cálculos que hacer, sólo comparar )
(A > B) mediante esta comparación podemos determinar cual de los dos es el mayor y el cual el menor.
Datos de salida
A (mayor) y B (menor) ó A (menor) y B (mayor)
c. Diagramación:
d. Seudocódigo
Inicio
Lea A, B
Si (A > B) entonces
Imprima ´mayor:’ A, ´menor:´ B
Sino
Imprima ´mayor:’ B, ´menor:´ A
FinSi
Fin
Ejemplo 2
a. Definición Dados tres números A, B y C, determinar si la suma de una pareja de ellos es igual al tercer número,
si se cumple esta condición imprima un mensaje que diga “Iguales” y en caso contrario imprima “Distintos”.
b. Análisis
Datos de entrada
8
Introducción a la Programación Universidad Tecnológica La Salle
A, B, C
Datos de Proceso
o A = ( B + C) ó
o B = (A + C) ó
o C = (A + B)
Mensaje de salida
o “Iguales” ó como pueden observar, no hay datos de salida
o “Distintos” únicamente se imprime el mensaje dependiendosi se cumple o no la condición.
c. Seudocódigo
Inicio
Lea A, B, C
Si (A = B + C) entonces
Imprima: ´Iguales´
Sino
Si (B = A + C) entonces
Imprima: ´Iguales´
Sino
Si (C = A + B) entonces
Imprima: ´Iguales´
Sino
Imprima: ´Distintos´
FinSi
FinSi
FinSi
Fin
Ejemplo 3
a. Definición Determinar si un número dado N es positivo, negativo o cero. c. Diagramación
b. Análisis
Dato de entrada
N
Datos de Proceso
N = 0 para determinar si es cero
N > 0 para determinar si es positivo
N < 0 para determinar si es negativo
Mensaje de salida
´El número es cero´ ó
´El número es positivo´ ó
´El número es negativo´
d. Seudocódigo
Inicio
Lea N
Si (N = 0) entonces
Imprima: ´El número es cero´
Sino
Si (N > 0) entonces
Imprima: ´El número es positivo´
Sino
Imprima: ´El número es negativo´
FinSi
FinSi
Fin
9
Introducción a la Programación Universidad Tecnológica La Salle
Es la herramienta de algoritmia que le permite simplificar y/o agrupar en su interior algún contador, condicional y
acumulador que son temas previos, en la repetición de instrucciones en un momento y espacio determinado.
Una estructura cíclica permite agrupar una o más instrucciones (bloque). Esta o estas se repite un número determinado
o no de veces de acuerdo con el enunciado a solucionar, a partir de este se definen dos esquemas: el cuantitativo y el
cualitativo.
10
Introducción a la Programación Universidad Tecnológica La Salle
Un esquema es cualitativo cuando la cantidad de iteraciones no se puede conocer antes de éste activarse y es el usuario
quien determina cuando terminar de repetir las acciones o instrucciones del ciclo.
Un esquema es cuantitativo cuando la cantidad de iteraciones puede conocerse antes de éste activarse (porque
previamente se lo especifican al programador o porque el usuario del programa le puede dar un valor).
El cuantitativo se caracteriza también porque desde el enunciado se determina el número de repeticiones a efectuar. Este
es finito.
Cada vez que se ejecutan las instrucciones de un ciclo se dice que se hizo una iteración.
Por lo tanto, si el ciclo se repite 5 veces por ejemplo, se hicieron 5 iteraciones. La forma general del ciclo MIENTRAS es:
Dentro de la secuencia de instrucciones debe haber por lo menos una que, en algún momento cambie el valor de verdad de
la condición, pues de lo contrario se repetiría la ejecución de la secuencia en forma indefinida (ciclo infinito).
El funcionamiento es como sigue: Al llegar a la estructura MIENTRAS se evalúa la condición (expresión lógica); si el
resultado de la evaluación es verdadero, se LEE el primer registro de datos y se procesa y a continuación se vuelve a
evaluar la condición y si nuevamente es verdadera, se lee el siguiente registro y se procesa. Si el resultado de la evaluación
de la condición es falso, se continúa con la siguiente instrucción que haya después del FINMIENTRAS (si la hay).
Es posible que la primera vez que se evalúa la condición, el resultado de su evaluación sea falso. En este caso no se
ejecuta nunca las instrucciones dentro del ciclo. Es por esto que el ciclo MIENTRAS se dice que ejecuta cero o más veces
una secuencia de instrucciones.
En este tipo de esquema, se controla la repetición del ciclo con una variable tipo contador, la cual se compara con el
número de iteraciones que debe hacer el algoritmo o con el número hasta el cual debe llegar. Dentro del PROCESO debe
haber una instrucción de incrementar o disminuir el valor del contador. Esta instrucción es la que hace que la condición se
haga falsa en determinado momento y que el ciclo termine (no sea infinito).
Ejemplo 1:
Datos de entrada: No hay, ya que los número naturales (1, 2, 3, etc) no se ingresan por parte del usuario sino que se deben
generar por el algoritmo (no hay una instrucción de lectura).
11
Introducción a la Programación Universidad Tecnológica La Salle
Definición de variables:
NUM: Variable para guardar el número natural generado.
SUMA: Variable para guardar la suma de los números naturales.
Algoritmo:
INICIO
NUM=0
SUMA=0
MIENTRAS NUM<5 HACER
NUM=NUM+1
SUMA=SUMA+NUM
FIN_MIENTRAS
IMPRIMIR “La suma de los cinco primeros números naturales es “, SUMA
FIN_INICIO
Algoritmo
INICIO
NUM=1
SUMA=0
MIENTRAS NUM<=5 HACER
SUMA=SUMA+NUM
NUM=NUM+1
FIN_MIENTRAS
IMPRIMIR “La suma de los cinco primeros números naturales es “, SUMA
FIN_INICIO
Esquema cualitativo
La representación general de este esquema es:
INICIO
LEER <Campo elegido>
MIENTRAS <Condición> HACER
LEER <Resto del registro de datos>
<PROCESO>
LEER < Campo elegido >
FIN_MIENTRAS
.
.
FIN_INICIO
En este tipo de esquema, se controla la repetición del ciclo con el valor del campo elegido, al cual el usuario, en el momento
que desee terminar la repetición del ciclo, le asigna un valor que no esté contemplado en el rango de valores que este
campo pueda tomar. Esta instrucción de lectura (entrada de datos) es la que hace que la condición se haga falsa en
determinado momento y que el ciclo termine (no sea infinito). El valor no válido para el campo elegido se guarda en un
registro llamado “registro centinela” o “registro marca” y
tiene el significado de “no hay más registros para procesar”.
Ejemplo:
Hacer un algoritmo que encuentre la suma y el promedio de un grupo de números positivos que entran de a uno
por registro.
Proceso: El algoritmo le dirá al usuario que le ingrese cada número. Este le ingresará número positivos hasta que desee
terminar, caso en el cual le ingresará un 0 o un número negativo. Lo más recomendable es que el algoritmo le diga al
usuario con qué valor terminar. Los números ingresados se deben ir contando en una variable tipo contador y se deben
acumular sus valores en una variable tipo acumulador.
Definición de variables:
NUM: Variable para guardar el número entrado.
SUMA: Variable para guardar la suma de los números.
PROM: promedio de los números
CN: contador de números ingresados.
12
Introducción a la Programación Universidad Tecnológica La Salle
Algoritmo:
INICIO
Imprimir “Ingrese un número positivo “
LEER NUM
SUMA=0
CN=0
MIENTRAS NUM <> 0 HACER
SUMA=SUMA+NUM
CN= CN+1
Imprimir “”Ingrese otro número positivo o 0 para terminar “
LEER NUM
FIN_MIENTRAS
PROM = SUMA/CN
IMPRIMIR “La suma es “,SUMA, “ Y EL PROMEDIO ES “,prom
FIN_INICIO
Como se puede apreciar, si el usuario desea estar indefinidamente ingresando números positivos, lo puede hacer y el
algoritmo le sigue pidiendo más y más números, pero si él desea terminar de ejecutarlo, le ingresa un 0 y con eso la
condición se hace falsa y ya no se ejecutará más la secuencia de instrucciones dentro del ciclo. El registro que contiene
dicho 0 es el que se denomina “centinela”.
2) Leer una cantidad indeterminada de números diferentes de cero y obtener su cubo y su cuarta. (Esquema
cualitativo).
Inicio
Leer num
MIENTRAS CONT<>0 HACER
cubo = num * num * num
cuarta = cubo * num
Imprimir cubo, cuarta
Leer num
FIN_MIENTRAS
Fin.
13
Introducción a la Programación Universidad Tecnológica La Salle
4) Leer N números e imprimir cuántos son positivos, cuántos negativos y cuántos ceros.
(Esquema cuantitativo)
Inicio
cneg = 0
cpos = 0
cceros = 0
MIENTRAS CONT < N HACER
Leer num
Si num = 0 entonces
cceros = cceros + 1
si no
Si num > 0 entonces
cpos = cpos + 1
si no
cneg = cneg + 1
Fin si
Fin-si
CONT 0 CONT + 1
FIN_MIENTRAS
Imprimir cceros, cpos, cneg
Fin.
Resolver:
1. Leer 15 números negativos y convertirlos a positivos e imprimir dichos números.
2. Suponga que se tiene la nota de una materia de un grupo de 40 alumnos. Realizar un algoritmo para calcular la
nota promedio y la nota más baja de todo el grupo.
3. Calcular e imprimir la tabla de multiplicar de un número cualquiera de 1 hasta 10. Imprimir el multiplicando, el
multiplicador y el producto.
4. Simular el comportamiento de uno reloj digital, imprimiendo la hora, minutos y segundos de un día desde las
0:00:00 horas hasta las 23:59:59 horas
Definición de variables:
NP: Número de personas.
NOM: Variable para guardar el nombre.
EDAD: Edad de la persona.
CP: Contador de personas.
ENCONTRADO: Variable tipo bandera que permitirá ROMPER el ciclo si se encuentra un menor de edad.
Proceso: Como se puede observar, el esquema es cualitativo y se puede controlar comparando el contador de personas
con el número de personas a procesar, a la condición se le adicionará el switche para que, si se encuentra un menor de
edad, ésta se haga falsa y se rompa el ciclo aunque no se llegue a procesar todas las N personas. Si se termina de
procesarlas a todas y no se encuentra una menor de edad, el ciclo también se
termina, pero ya porque la otra condición (CP<NP) es falsa.
14
Introducción a la Programación Universidad Tecnológica La Salle
Algoritmo.
INICIO
CO=0
ENCONTRADO=.F.
Leer NP
MIENTRAS (CP<NP) AND (ENCONTRADO=.F.) HACER
Leer NOM, EDAD
Si EDAD<18 entonces
ENCONTRADO=.V.
Sino
CP=CP+1
Fin_si
FIN_MIENTRAS
Si ENCONTRADO=.V. Entonces
Imprimir NOM
Sino
Imprimir “No hay ningún menor de edad en el grupo”
Fin_si
FIN_INICIO
Estructura Para
Permite ejecutar una o varias instrucciones mientras los valores de una progresión aritmética de razón creciente o
decreciente se vayan asignando a una variable llamada “variable de control del ciclo para”. El control del ciclo se hace en
forma automática, con base en parámetros que establece el programador.
Esta estructura se puede usar en reemplazo del ciclo Mientras en esquema cuantitativo cuando el contador que controla
dicho ciclo se incrementa o disminuye en un valor constante. La diferencia con el ciclo Mientras es que en el ciclo PARA, la
variable controladora se inicializa, se incrementa y se compara automáticamente.
Donde:
VC Variable de control del ciclo
LI Limite inicial
LF Limite final
INC Incremento
En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite hasta que la variable de control llegue al
límite final.
Funcionamiento:
b. Si INC es negativo:
Se hace lo mismo pero se ejecuta la secuencia siempre y cuando VC>=LF y no se ejecuta si VC<LF. En ese caso LI>LF
Ejemplo:
Hacer un algoritmo que encuentre el factorial de un número positivo cualquiera.
Definición de variables:
N: Número al cual se le hallará el factorial
15
Introducción a la Programación Universidad Tecnológica La Salle
Algoritmo:
INICIO
Leer N
FAC=1
PARA CON=1, N, 1 HACER
FAC=FAC*CON
FIN_PARA
Imprimir “El factorial de “,N, “ es: “, FAC
FIN_INICIO
Ejemplo:
Algoritmo:
INICIO
PARA I=1,5,1 HACER
PARA J=1,5,1 HACER
P=I*J
Imprimir I, “*”, J, “=”, P
FIN_PARA
FIN_PARA
FIN_INICIO
Ejemplo:
Hacer un algoritmo que encuentre la suma de los números impares comprendidos entre 1 y N.
Definición de variables:
N: Número hasta el cual se generarán números impares
IMP: Número impar generado (el algoritmo los genera, no se leen o ingresan por el usuario).
SUMA: Suma de los números impares.
Algoritmo:
INICIO
Leer N
SUMA=0
PARA IMP=1,N,2 HACER
SUMA=SUMA+IMP
FIN_PARA
Imprimir “La suma de los impares comprendidos entre 1 y “, N, “ es: “, SUMA
FIN_INICIO
Estructura Repetir
Esta es una estructura similar en algunas características, a la estructura MIENTRAS. Repite un proceso una o varias veces,
a diferencia del Mientras, el cual lo repite cero o más veces, esto debido a que el REPETIR evalúa la condición al final del
proceso, mientras que en el Mientras puede ser que nunca llegue a entrar si la condición no se cumple desde un principio.
REPETIR
Acción 1
Acción 2
.
.
Acción N
MIENTRAS <condición>
Funcionamiento:
Al entrar a la estructura se ejecuta la secuencia de acciones o instrucciones una vez y se evalúa la condición. Si ésta es
falsa, se sale del ciclo y se continúa con la siguiente instrucción; si es verdadera, se ejecuta nuevamente la secuencia y se
vuelve a evaluar la condición. El proceso se repite mientras la condición sea verdadera.
16
Introducción a la Programación Universidad Tecnológica La Salle
Ejemplo:
Hacer un algoritmo que encuentre la suma de los primeros N números naturales.
Algoritmo:
INICIO
SUMA=0
NUM=1
Leer N
REPETIR
SUMA=SUMA+NUM
NUM=NUM+1
MIENTRAS NUM<=N
Imprimir “La suma de los primeros “, N, “ números naturales es: “, SUMA
FIN_INICIO
Contadores y acumuladores
Variable Acumuladora: Su función es acumular valores, distintos o no, en forma parcial; valores resultantes de sumas
sucesivas. Se debe inicializar siempre, de lo contrario el valor que esta tome va a incluir el acumulado de todas las veces
que corrió el programa. Generalmente se inicializa al comienzo o casi al final del programa. El modo de acumularle valores
es siempre el mismo:
Variable Contadora: Es una variable cuyo valor se incrementa o decremento en una unidad, en cada iteración.
Interruptores
Un interruptor o conmutador (switch) – llamado a veces, indicador o bandera (flag) – es una variable que puede tomar
diversos valores a lo largo de la ejecución del programa, y que permite comunicar información de una parte a otra del
mismo.
17