1. Algoritmos y Programación
Marzo, 2025
Christian Vidal Castro
cvidal@ubiobio.cl
Académico del Departamento Sistemas de Información
Facultad de Ciencias Empresariales - Universidad del Bío-Bío
2. Algoritmo y Programa
PROGRAMA: Conjunto de instrucciones, con una secuencia lógica, escrito en algún
Lenguaje de Programación que permite resolver un Problema. El programa recibe
datos de entrada, realiza las operaciones de transformación requeridas, y entrega
los resultados esperados.
ALGORITMO: Una secuencia de pasos (modelo) para realizar una tarea.
3. Estructura general de un Algoritmo utilizando
Pseudocódigo
Algoritmo <Nombre_Proceso>
//Variables
Definir variables Como Tipo_Dato;
Acción_1
Acción_2
Acción_3
:
:
:
Acción_n
FinAlgoritmo
Las variables son espacios de memoria reservados para el
almacenamiento de datos requeridos por el algoritmo
Las instrucciones o acciones presentes en un programa o
algoritmo se pueden clasificar de la siguiente manera:
• Instrucciones o acciones de transferencia de datos
• Instrucciones o acciones aritméticos / lógicos
• Instrucciones o acciones de transferencia de
control (condicional o incondicional)
4. Variables
Algoritmo <Nombre_Proceso>
//Variables
Definir variables Como Tipo_Dato;
Acción1
Acción_2
Acción_3
:
:
Acción_n
FinAlgoritmo
Las variables son espacios de memoria reservados para el
almacenamiento de datos requeridos por el algoritmo.
Las variables quedan definidas por un nombre y el tipo de dato que pueda
contener. La posición de memoria especificada por una variable solo
puede contener un valor a la vez.
Nombre de Variable: se recomienda usar nombres “significativo”, asociado al
uso que se le dará al dato almacenado.
Tipo de dato: Corresponde a un atributo del dato que permite especificar el
dominio de valores que puede tomar y las operaciones que se pueden hacer
sobre ellos. Los tipos de datos primitivos (básicos) son: Numérico (Entero o
Decimal), Carácter y Lógicos.
5. Instrucciones
Algoritmo <Nombre_Proceso>
//Variables
Definir variables Como Tipo_Dato;
Acción_1
Acción_2
Acción_3
:
:
Acción_n
FinAlgoritmo
Las instrucciones o acciones presentes en un programa o
algoritmo se pueden clasificar de la siguiente manera:
• Instrucciones o acciones de transferencia de datos:
•INGRESO/SALIDA DE DATOS (LECTURA/ESCRITURA)
Leer lista_de_variables; //separadas por coma
Escribir lista_de_expresiones; //separadas por coma
lista_de_expresiones: pueden ser variables, expresiones
aritméticas, 'mensajes entre comillas simples'
•ASIGNACIÓN
variable <expresión>/<variable>
expresión: corresponde a una transformación
matemática que usa variables definidas y/o funciones
predefinidas o desarrolladas.
6. •ASIGNACIÓN
a 5;
b a+z;
c (a*a+b*b)/(a*b);
Instrucciones
Algoritmo <Nombre_Proceso>
//Variables
Definir variables Como Tipo_Dato;
Acción_1
Acción_2
Acción_3
:
:
Acción_n
FinAlgoritmo
• Ejemplos Instrucciones o acciones de transferencia de datos:
•INGRESO/SALIDA DE DATOS (LECTURA/ESCRITURA)
Leer a, b, c;
Escribir 'El valor ingresado de a =',a;
Escribir 'La suma de a y b es =', a+b;
Escribir 'La suma de ', a , ' + ‘ , b , 'es =', a+b;
Escribir 'Ingrese un ´numero: ';
Leer n
7. Instrucciones
Algoritmo <Nombre_Proceso>
//Variables
Definir variables Como Tipo_Dato;
Acción_1
Acción_2
Acción_3
:
:
Acción_n
FinAlgoritmo
Las instrucciones o acciones presentes en un programa o
algoritmo se pueden clasificar de la siguiente manera:
• Instrucciones o acciones aritméticos / lógicos:
•Suma (+), Resta(-), Multiplicación(*), División (/), Módulo (%), Raíz
cuadrada (RC)
(el módulo como la raíz cuadrada pueden ser implementados con
las operaciones básicas, pero por comodidad los utilizaremos en
forma explicita)
• y (and o &), o (or 0 |), no (not o ~)
(los operadores lógicos, al igual que los aritméticos y relacionales se
utilizan en las expresiones lógicas presentes en las transferencias de
control condicional)
8. Ejemplos de Algoritmo básicos utilizando Pseudocódigo
Construir los algoritmos en pseudocódigo que permita resolver
los siguientes problemas, mostrando el resultado por pantalla:
• sume dos valores
• multiplica tres números
• divida dos números
• Calcular el cuadrado de un número
• Determine el año de nacimiento de una persona a partir
de la edad
9. Ejemplos de Algoritmo básicos utilizando
Pseudocódigo
Sume dos valores
Algoritmo Suma
//Variables
Definir a,b,c Como Entero;
Escribir 'Ingrese los datos a sumar';
Leer a,b;
c<-a+b;
Escribir 'La suma de los numeros ingresados es = ',c;
FinProceso
Multiplica tres números
Proceso Suma
//Variables
Definir a,b,c,d Como Entero;
Leer a,b,c;
d<-a*b*c;
Escribir d;
FinProceso
10. Ejemplos de Algoritmo básicos utilizando
Pseudocódigo
Divida dos números
Proceso División
Variables
a,b,c Entero;
Escribir 'Ingresar el dividendo y divisor';
Leer a,b;
c<-a/b;
Escribir 'El resultado es =', c;
FinProceso
Calcular el cuadrado de un número
Proceso cuadrado
Variables
a,c Entero;
Escribir 'Ingresar un numero';
Leer a;
c<-a*a;
Escribir 'El cuadrado es ', c;
FinProceso
Proceso cuadrado
Variables
a Entero; //una sola variable
Escribir 'Ingresar un numero';
Leer a;
a<-a*a;
Escribir 'El cuadrado es', a;
FinProceso
11. Ejemplos de Algoritmo básicos utilizando
Pseudo-Código
Construir los algoritmos en pseudocódigo que permita resolver los
siguientes problemas, mostrando el resultado por pantalla:
• Determinar la distancia entre dos puntos en el plano cartesiano
• Evaluar la función f(x)=3*x3+4*x2 - 5 para un valor especifico de x
• Evaluar la ecuación de primer grado
• Evaluar la ecuación de segundo grado
12. Instrucciones de transferencia de control
Proceso <Nombre_Proceso>
Variables
Lista de variables Tipo_Dato;
Acción_1
Acción_2
Acción_3
:
:
Acción_n
FinProceso
Las instrucciones o acciones presentes en un programa o
algoritmo se pueden clasificar de la siguiente manera:
•Instrucciones o acciones de transferencia de control:
•Transferencia condicional
Esta instrucción es necesaria cuando el flujo de ejecución del
algoritmo depende de una condición lógica. La instrucción más
simple es la bifurcación, en la cual la ejecución puede tomar dos
cursos de acción dependiendo de una condición lógica.
Si expresion_logica Entonces
acciones_por_verdadero;
Sino
acciones_por_falso;
FinSi
•Transferencia repetitiva (se vera con posterioridad)
•Transferencia incondicional (se explicara el porque no es aconsejable
usar)
13. Proceso Ecuacion_primer_grado
Variables
a,b Entero;
x Flotante;
Leer a,b;
Si a = 0 Entonces
Escribir 'La ecuacion no es de primer grado';
Sino
x<- -b/a; //probar la solución con PSeInt
Escribir x;
FinSi
Escribir 'Fin de Programa';
FinProceso
Instrucciones de transferencia de control
Proceso <Nombre_Proceso>
Variables
Lista de variables Tipo_Dato;
Acción_1
Acción_2
Si expresion_logica Entonces
acciones_por_verdadero;
Sino
acciones_por_falso;
FinSi
:
Acción_n
FinProceso
Evaluar la ecuación de primer grado
a x + b = 0
?
a
b
x = -b / a
a ≠ 0
14. • Del ejemplo anterior podemos observar que la bifurcación
permite seguir el flujo adecuado dada una condición.
• Las condiciones lógicas que se evalúan en las bifurcaciones son
siempre verdaderas o falsas.
• También es posible que existan bifurcaciones contiguas.
• No necesariamente deben existir los dos cursos de acción.
Instrucciones de transferencia de
control
15. En las bifurcaciones, se evalúan proposiciones utilizando:
• Operadores lógicos
y (and o &), o (or 0 |), no (not o ~)
• Operadores aritméticos
(*) multiplicación, (/) división, (+) suma, (-) resta, (%) módulo
• Operadores Relacionales
> (mayor que), < (menor que), = (igual), <= (menor o igual),
>= (mayor o igual), != (distinto)
Instrucciones de transferencia de control
16. Tablas de verdad asociadas a los operadores
lógicos and, or, not
y, And, &
Y
&
V F
V V F
F F F
O
||
V F
V V V
F V F
O, Or, || No, ~
No
| ~
V F
F V
Ejemplos de proposición lógica:
7 > 3
(a+b > c) y (b>0)
~(a = 0)
(b*b – 4*a*c) >= 0
((b*b – 4*a*c) < 0) o (a=0)
Deportes concepción es el mejor equipo del año
Cada una de estas expresiones tendrá un valor de verdad dependiendo de los
valores de los operandos.
17. Ejemplos se evaluación de proposiciones lógicas
Proceso <Nombre_Proceso>
Variables
Var1, var2, var3, var4 Entero;
var1 2;
var2 0;
var3 4;
var4 (var1*var1)/var3;
Si (var4>=1) y (var1 !=0) Entonces
acciones_por_verdadero;
Sino
acciones_por_falso;
FinSi
:
Acción_n
FinProceso
Proceso <Nombre_Proceso>
Variables
Var1, var2, var3, var4 Entero;
var1 2;
var2 0;
var3 4;
var4 (var3%var1)
Si ((var4!=0) o (var2 >0)) y (var3 =4) Entonces
acciones_por_verdadero;
Sino
acciones_por_falso;
FinSi
:
Acción_n
FinProceso
Es importante notar que existen prioridades entre los operadores. Por lo tanto, deben
utilizarse paréntesis en los casos que correspondan
18. Ejercicios: Construir, utilizando pseudocódigo, un algoritmo para cada uno de los
siguientes enunciados
Cree un algoritmo que divida dos números y muestre el resultado
Crear un algoritmo que muestre en forma ordenada tres números enteros ingresados
desde teclado.
Cree un algoritmo que resuelva la ecuación de segundo grado, para valores reales, y
muestre el resultado
Cree un algoritmo que resuelva la ecuación de segundo grado, para valores reales e
imaginarios, y muestre el resultado
Cree un algoritmo que permita evaluar la siguiente función para un valor de x:
(3x
2
-5x)/ (x-10) si x > 10
f(x)= (5x)/x si 0 < x <=10
x
2
si x <=0
Cree un algoritmo que permita calcular el valor absoluto de un número
Cree un algoritmo que permita calcular el promedio de 20 números
Cree un algoritmo que permita sumar n números y muestre el resultado. El valor de n debe
ser ingresado por teclado al igual que los números que se sumarán.
19. Instrucciones de transferencia repetitiva
El último ejemplo planteado permite introducir el concepto de iteración o ciclo. Las
estructuras iterativas permiten la ejecución de un grupo de instrucciones un número
conocido o desconocido de veces.
• Concepto de Ciclo
–Un ciclo es la repetición de un conjunto de
instrucciones. Dicho ciclo culmina cuando se
cumple una condición lógica de de término.
• Cuándo se aplican los Ciclos
–Se aplican cuando queremos ejecutar un conjunto
de instrucciones varias veces.
20. Bloque de
Instrucción1
Condición
lógica
Bloque de
Instrucción2
Bloque de
Instrucción3
Verdadero
Falso
Bloque de Instrución1;
Mientras Condición_Logica Hacer
Bloque de Instrución2;
FinMientras
Bloque de Instrución3;
Bloque de
Instrucción1
Condición
lógica
Bloque de
Instrucción2
Bloque de
Instrucción3
Verdadero
Falso
Bloque de Instrución1;
Repetir
Bloque de Instrución2;
Hasta Que Condición_Logica
Bloque de Instrución3;
Estructuras Iterativas
21. Construir un algoritmo que permita imprimir los primeros n
números pares
Programa
n
2
4
6
8
:
:
2*n
n > 0
Proceso Numeros_Pares
Variables
n,i Entero;
Repetir
Escribir 'Ingrese numeros de pares a imprimir';
Leer n;
Hasta Que (n > 0)
i <-1;
Mientras (i <=n) Hacer
Escribir 2*i;
i <- i+1;
FinMientras
Escribir 'Fin del Programa';
FinProceso
22. Construir un algoritmo que permita calcular el promedio de n
números ingresados por teclado
Programa
n
n > 0
Proceso Promedio
Variables
n,i,x,suma, prom Entero;
Repetir
Escribir 'Cuántos números sumara?';
Leer n;
Hasta Que (n > 0)
i <-1;
suma<-0;
Mientras (i <=n) Hacer
Leer x;
suma<-suma+x;
i <- i+1;
FinMientras
prom<-suma/n
Escribir 'Resultado:',prom;
FinProceso
X1
X2
X3
:
Xn
Promedio
Promedio= (x1+ x2+ x3+…. +xn)/n
n
(∑xi = x1+ x2+ x3+…. +xn ) / n
i=1
23. Construir un algoritmo que permita sumar números ingresados por teclado. El
ingreso de números debe realizarse hasta que se ingrese un 0. Se debe imprimir
la suma y la cantidad de números ingresados.
Programa
Proceso Sumatoria
Variables
n,i,x,suma Entero;
Escribir 'El programa terminara cuando
ingrese un cero';
i<-0;
suma<-0;
Repetir
Escribir 'Ingrese un numero';
Leer x;
suma<-suma+x;
i<-i+1
Hasta Que (x = 0)
Escribir 'Resultado:',suma;
Escribir 'Numeros ingresados: ' , i;
FinProceso
X1
X2
X3
:
X?
suma
suma= x1+ x2+ x3+…. +x?
24. Ejercicio propuesto
Construir un algoritmo que permita sumar números
ingresados por teclado. El ingreso de números debe
realizarse hasta que se ingrese un 0. Se debe imprimir la
suma, la cantidad de números ingresados, además el
menor y mayor valor ingresado.
25. Estructuras Iterativas
Otra estructura iterativa es la siguiente:
Bloque de
Instrucción1
Bloque de
Instrucción2
Bloque de
Instrucción3
VC ← VI , VF, Salto
Bloque de Instrución1;
Para Variable_Numerica<-valor_inicial Hasta valor_final Con Paso paso Hacer
Bloque de Instrución2;
FinPara
Bloque de Instrución3;
26. Construir un algoritmo que permita calcular el promedio de n
números ingresados por teclado
Programa
n
n > 0
Proceso Promedio
Variables
n,i,x,suma, prom Entero;
Repetir
Escribir 'Cuantos numeros sumara?';
Leer n;
Hasta Que (n > 0)
suma<-0;
Para i<-1 Hasta n Con Paso 1 Hacer
Leer x;
suma<-suma+x;
FinPara
prom<-suma/n
Escribir 'Resultado: ',prom;
FinProceso
X1
X2
X3
:
Xn
Promedio
Promedio= (x1+ x2+ x3+…. +xn)/n
n
(∑xi = x1+ x2+ x3+…. +xn ) / n
i=1
28. Ejercicios
• Crear un algoritmo que encuentre e imprima el número mayor de N números enteros
positivos ingresados por teclado.
• Crear un algoritmo que calcule e imprima el resultado de la siguiente sumatoria
n
∑i
i=1
• Cree un algoritmo que permita evaluar la siguiente función, para n valores de x:
• (3x2
-5x)/ (x-10) si x > 10
• f(x)= (5x)/x si 0 < x <=10
• x2
si x <=0
• Crear un algoritmo que permita evaluar la función f(x)=3*x3
+4*x2
-5 para todos los
valores enteros de x comprendidos en el intervalo [a,b]
• Crear un algoritmo que permita generar los primeros n números de la serie de
Fibonacci
• Crear un algoritmo que permita calcular la siguiente sumatoria:
S= n + 2*n + 3*n +4*n +…….+ n*n
29. Simbologia Diagrama de Flujo
• Nomenclatura:
• Inicio del algoritmo
• Término del algoritmo
• Impresión de mensajes
• Receptor de datos
• Operación de datos
• Bifurcación (Decisión)
• Definición de variables
• Conector
Inicio
Fin
?
F V
30. Diagrama de Flujo y Pseudo-Código
Inicio
“Mensaje 1”
Fin
var1,x, y
a = 3 * x + y
b = a / var1
Entero var1, x , y
Real a, b
a > b
V
F
Inicio de Algoritmo
Definición de variables
Impresión de mensajes
Lectura de mensajes
Transformación de datos
Operaciones sobre los datos
Bifurcación en la ejecución de
instrucciones
Conector
Fin de algoritmo
DIAGRAMA DE FLUJO NOMENCLATURA PSEUDO-CÓDIGO
Inicio
Variables
Entero var1, x, y
Real a, b
Imprimir (“Mensaje 1”)
Leer (var1, x, y)
a = 3 * x + y
b = a / var1
Si a > b Entonces
Inicio
Instrucciones
Fin
Sino
Inicio
Instrucciones
Fin
Fin
31. Estructura general de un programa en C
Algoritmo Prueba
Definición de Variables
Inicio
bloque de instrucciones
Fin
#incude<stdio.h>
#include<otras librerias>
//Definición de Variables globales
//Definición prototipo de
funciones
main()
{
//Definición de variables locales
bloque de instrucciones
}
//desarrollo de funciones
32. Instrucciones de un programa en C
Variables
entero a,
flotante b,
Leer a
Leer b
Escribir “Elvalor de a es”,a
Si a > 0 Entonces
BLOQUE DE
INSTRUCIONES UNO
sino
BLOQUE DE
INSTRUCIONES DOS
Fin Si
int a;
float b;
scanf(“%d”,&a);
scanf(“%f”,&b);
printf(“EL valor de a es %d”,a);
if (a>0)
{
BLOQUE DE
INSTRUCIONES UNO;
}
else
{
BLOQUE DE
INSTRUCIONES DOS;
}
33. Instrucciones de un programa en C
Repetir
Bloque de instrucciones;
Hasta (Condición de Termino)
Mientras (Condición de repetición)
Bloque de instrucciones;
Fin Mientras
Para i=Vi, Vf, salto
Bloque de instrucciones;
Fin Para
do
Bloque de instrucciones;
while (condición de repetición);
while (condición de repetición)
{
Bloque de instrucciones;
}
for (i=vi; condición de termino, salto)
{
Bloque de instrucciones;
}