Está en la página 1de 44

Introducción a la Programación

Introducción a los algoritmos

Profesores:
Jazna Meza Hidalgo
Grisell Osses Díaz
Luis Ángulo Mura
Manuel Crisosto Muñoz
Motivación
OBJETIVO GENERAL DE LA ASIGNATURA
 
Resolver problemas básicos a través de la construcción de programas
basados en algoritmos y un lenguaje de programación, generando acciones
hacia la búsqueda de propuestas pertinentes.

APRENDIZAJES ESPERADOS (COMPETENCIAS)


 
• Interpretar algoritmos y programas para la solución de problemas básicos
de programación.
• Construir algoritmos y programas para la solución de problemas básicos
de programación.
• Descomponer un problema en subproblemas para facilitar el proceso de
definir una solución.
• Trabajar colaborativamente, cumpliendo un rol y responsabilizándose de
él.

2
Pasos en la resolución de un problema

• Entender el problema
– Conceptualización
– Objetivo
– Contexto
• Buscar soluciones
• Elegir solución
• Diseñar solución
– Descomposición
– Especificar tareas
– Modelar solución
• Implementar solución
• Validar solución

3
Programa de Aplicación

Programa que permite resolver la ecuación de primer grado

Proceso Ecuacion_primer_grado
Programa Variables
que permite a,b,x de tipo entero
resolver la Escribir 'Ingrese valores de EC'
ecuación de Leer a,b
primer grado Si a = 0 Entonces
Escribir 'Error' #include <stdio.h>
Sino int main()
x<- -1*b/a; {
Escribir 'La solución es: ',x; int a,b,x;
FinSi printf(“Ingrese valores de EC”);
Escribir 'Fin programa'; scanf(“%d %d”,&a,&b);
ax+b=0 FinProceso if (a ==0) printf (“error”);
else
{
x = -b / a;
a printf(“La solución es %d:”,x);
? x = -b / a }
b printf(“Fin programa”);
return 0;
}
4
¿Qué es un problema?
• Es una situación concreta sobre la cual se quiere implementar
una solución (ejemplos)
• Solución: procedimiento que nos lleva a satisfacer ciertos
requerimientos
• Esquema básico para la resolución de un problema a través
de un programa con un enfoque sistémico

Entrada Salida
Proceso
•Datos Externos •Informes
•Datos auto generados •Datos para otro programa
•Lectura de dispositivo de •Datos grabados en
almacenamiento dispositivos externos de
almacenamiento

5
Datos y Variables
• Datos: objetos simbólicos que representan
objetos del mundo real.
– Ejemplos: 10 de Marzo de 2003, 3.14
• Variables: En programación corresponde a un
espacio de memoria reservado para almacenar
un dato, al cual se le asigna un nombre y un
tipo de dato.
– Ejemplos: velocidad del móvil, factor de
crecimiento
6
¿Qué es un algoritmo?
• Procedimiento detallado para resolver un
problema en pasos y en un tiempo finito.
• Se especifican en base a operaciones básicas
que controlan las variables y el flujo del
algoritmo
• El algoritmo lleva desde un estado inicial a un
estado final
• El algoritmo recibe Entradas y entrega Salidas

7
¿Cómo desarrollar un algoritmo?
• Imaginación
• No reinventar la rueda
• Dividir para conquistar
• Para ser efectivo se requiere practicar
constantemente
• El diseño de algoritmos es una rama de la
Ciencia de la Computación

8
¿Cómo se describe un algoritmo?
• Lenguaje natural
• Pseudo código
• Lenguaje de programación
• La precisión es importante
– Un algoritmo no puede ser descrito de forma
ambigua:
• Todos tienen que entender lo mismo (incluido el
computador!)

9
Llamada telefónica

• Se desea conceptualizar el
problema de efectuar una
llamada telefónica en un teléfono
público que recibe monedas de
$10, $50 y $100. El costo mínimo
de la llamada es de $100 por 5
minutos. El proceso se inicia
desde que se levanta el auricular
y finaliza cuando se cuelga.

10
Conceptos Básicos de Algoritmos
• La forma en que se ejecutan las operaciones básicas
en un computador, es similar a lo que ocurre en
nuestro cerebro.

• Por ejemplo, suponga que se nos pide sumar dos


números: ¿Cuáles son los pasos básicos para realizar
la operación solicitada?
Conceptos Básicos de Algoritmos
• Primero debemos pedirle a la persona (usuario) que nos diga el
primer valor.
• Luego de que conocemos este valor, debemos almacenarlo (para
recordarlo después) en una neurona (Suponemos que un valor se
puede almacenar en una neurona).
• Ya conocemos el primer valor y está almacenado en nuestro
cerebro!!!.
• Ahora debemos pedir el segundo valor.
• Una vez conocido, lo almacenamos en otra neurona distinta de la
anterior. ¿ Por qué?.......
• Ahora que conocemos los dos valores procedemos a sumarlos, y
dicho resultado lo almacenamos en otra neurona distinta de las
anteriores.
• Por último, le decimos el resultado a la persona que nos entrego los
números.
Conceptos Básicos de Algoritmos
– De lo anterior, al menos necesitamos 3 neuronas
para sumar dos números.
– Le pedimos explícitamente que nos dijeran dichos
valores.
– Le asignamos dichos valores a las neuronas
– La suma la realizó nuestro cerebro de forma
mecánica. Note que no existen detalles de la
operaciones básicas (*,/,+, -).
– Finalmente se da el resultado
Conceptos Básicos de Algoritmos
• Algoritmo para sumar dos números:
• Definimos tres neuronas
• Pedimos el primer valor
• Almacenamos ese valor en la neurona 1.
• Pedimos el segundo valor
• Almacenamos ese valor en la neurona 2.
• Almacenamos la suma de las neuronas 1 y 2 en la neurona 3
• Entregamos el resultado que se encuentra en la neurona 3.
Conceptos Básicos de Algoritmos

• Sin embargo, en los lenguajes no se pueden usar


neuronas, pero podemos definir variables
(Recuerde que las variables pueden tomar
cualquier valor)
• En lugar de usar neurona 1 y neurona 2, se utilizan
espacios de memoria que llamaremos “var_1” y
“var_2”, y así sucesivamente. También las
podemos llamar “x1” y “x2” ó “x” e “y” ….
Conceptos Básicos de Algoritmos
Ejercicio: Cree un algoritmo que multiplique tres números.
• Algoritmo para multiplicar tres números:
– Definimos cuatro variables
– Pedimos el primer valor
– Almacenamos ese valor en var 1.
– Pedimos el segundo valor
– Almacenamos ese valor en var 2.
– Pedimos el tercer valor
– Almacenamos ese valor en var 3.
– Almacenamos la multiplicación de las variables en var 4
– Entregamos el resultado que se encuentra en var 4.

¿Podemos intentar multiplicar tres valores usando solo dos variables?


Conceptos Básicos de Algoritmos
• La manera en que hemos detallado nuestros dos
algoritmos se llama PSEUDOCÓDIGO. Y este
pseudocódigo fue escrito en lenguaje natural.
• Otra manera de poder detallar nuestros
algoritmos es a través de los diagrama de flujo.
Un diagrama de flujo es una representación
simbólica de la lógica del algoritmo.
Elementos básicos presentes en un
Algoritmo

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.


Estructura general de un Algoritmo
utilizando Pseudocódigo
Proceso <Nombre_Proceso>
Variables
Las variables son espacios de memoria
Lista de variables Tipo_Dato;
reservados para el almacenamiento de datos
requeridos por el algoritmo
Acción_1
Acción_2
Acción_3 Las instrucciones o acciones presentes en un
: programa o algoritmo se pueden clasificar de la
: siguiente manera:
Acción_n
FinProceso • Instrucciones o acciones de transferencia
de datos
• Instrucciones o acciones aritméticos /
lógicos
• Instrucciones o acciones de transferencia
de control (condicional o incondicional)
Variables
Proceso <Nombre_Proceso>
Variables
Lista de variables Tipo_Dato; Las variables son espacios de memoria reservados
Acción1
para el almacenamiento de datos requeridos por el
Acción_2 algoritmo.
Acción_3
:
:
Acción_n
FinProceso 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.
Instrucciones
Proceso <Nombre_Proceso>
Variables
Lista de variables Tipo_Dato; Las instrucciones o acciones presentes en un programa o
Acción_1
algoritmo se pueden clasificar de la siguiente manera:
Acción_2
Acción_3 • Instrucciones o acciones de transferencia de datos:
:
: •INGRESO/SALIDA DE DATOS (LECTURA/ESCRITURA)
Acción_n
FinProceso 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.
Instrucciones
Proceso <Nombre_Proceso>
Variables
Lista de variables Tipo_Dato; • Ejemplos Instrucciones o acciones de transferencia de datos:
Acción_1
Acción_2
Acción_3 •INGRESO/SALIDA DE DATOS (LECTURA/ESCRITURA)
:
:
Leer a, b, c;
Acción_n
FinProceso
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

•ASIGNACIÓN
a  5;
b  a+z;
c  (a*a+b*b)/(a*b);
Instrucciones
Proceso <Nombre_Proceso>
Variables
Lista de variables Tipo_Dato; Las instrucciones o acciones presentes en un programa o
Acción_1
algoritmo se pueden clasificar de la siguiente manera:
Acción_2
Acción_3
:
: • Instrucciones o acciones aritméticos / lógicos:
Acción_n
FinProceso •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)
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 los años de nacimiento de una persona a partir de la edad
Ejemplos de Algoritmo básicos utilizando
Pseudocódigo
Sume dos valores
Proceso Suma
Variables
a,b,c Entero;
Escribir 'Ingrese los datos a sumar';
Leer a,b;
c<-a+b;
Escribir 'La suma de los numeros ingresados es = ',c;
FinProceso
Nota: //En la herramienta PSeInt no se definen previamente las variables

Multiplica tres números


Proceso Suma
Variables
a,b,c,d Entero;
Leer a,b,c;
d<-a*b*c;
Escribir d;
FinProceso
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 Proceso cuadrado
Variables Variables
a,c Entero; a Entero; //una sola variable
Escribir 'Ingresar un numero'; Escribir 'Ingresar un numero';
Leer a; Leer a;
c<-a*a; a<-a*a;
Escribir 'El cuadrado es ', c; Escribir 'El cuadrado es', a;
FinProceso FinProceso

Determine los años de nacimiento de una persona a partir de la edad


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


Instrucciones de transferencia de control
Proceso <Nombre_Proceso> Las instrucciones o acciones presentes en un programa o
Variables
Lista de variables Tipo_Dato;
algoritmo se pueden clasificar de la siguiente manera:
Acción_1
Acción_2
•Instrucciones o acciones de transferencia de control:
Acción_3 •Transferencia condicional
:
: Esta instrucción es necesaria cuando el flujo de ejecución
Acción_n
FinProceso 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)
Instrucciones de transferencia de control
Evaluar la ecuación de primer grado
Proceso <Nombre_Proceso>
Variables ax+b=0
Lista de variables Tipo_Dato;

Acción_1 a
Acción_2 ? x = -b / a
Si expresion_logica Entonces b
acciones_por_verdadero;
Sino a≠0
acciones_por_falso; Proceso Ecuacion_primer_grado
FinSi Variables
: a,b Entero;
Acción_n x Flotante;
FinProceso 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

– 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
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)*

* No presente en PSeint
Tablas de verdad asociadas a los operadores
lógicos and, or, not
y, And, & O, Or, || No, ~
Y
V F
&

V V F

F F F

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.
Ejemplos se evaluación de proposiciones lógicas
Proceso <Nombre_Proceso> Proceso <Nombre_Proceso>
Variables Variables
Var1, var2, var3, var4 Entero; Var1, var2, var3, var4 Entero;

var1  2; var1  2;
var2  0; var2  0;
var3  4; var3  4;
var4  (var1*var1)/var3; var4  (var3%var1)
Si (var4>=1) y (var1 !=0) Entonces Si ((var4!=0) o (var2 >0)) y (var3 =4) Entonces
acciones_por_verdadero; acciones_por_verdadero;
Sino Sino
acciones_por_falso; acciones_por_falso;
FinSi FinSi
: :
Acción_n Acción_n
FinProceso FinProceso

Es importante notar que existen prioridades entre los operadores. Por lo tanto,
deben utilizarse paréntesis en los casos que correspondan
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:


(3x2-5x)/ (x-10) si x > 0
f(x)= (5x)/x si 0 < x <=10
2
x 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.
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.
Estructuras Iterativas
Bloque de Bloque de
Instrucción1 Instrucción1

Condición Falso Bloque de


lógica Instrucción2
Verdadero

Bloque de Condición
Falso lógica
Instrucción2
Verdadero
Bloque de
Bloque de Instrucción3
Instrucción3

Bloque de Instrución1; Bloque de Instrución1;


Mientras Condición_Logica Hacer Repetir

Bloque de Instrución2; Bloque de Instrución2;

FinMientras Hasta Que Condición_Logica


Bloque de Instrución3; Bloque de Instrución3;
Construir un algoritmo que permita imprimir los primeros n
números pares
Proceso Numeros_Pares
Variables
n,i Entero;
Repetir
2
Escribir 'Ingrese numeros de pares a imprimir';
4 Leer n;
n 6 Hasta Que (n > 0)
Programa 8 i <-1;
:
: Mientras (i <=n) Hacer
n>0 2*n Escribir 2*i;
i <- i+1;
FinMientras
Escribir 'Fin del Programa';
FinProceso
Construir un algoritmo que permita calcular el promedio de n
números ingresados por teclado
Proceso Promedio
Variables
n
X1 n,i,x,suma, prom Entero;
X2 Repetir
X3 Programa Promedio Escribir 'Cuántos números sumara?';
Leer n;
:
Hasta Que (n > 0)
Xn n>0 i <-1;
suma<-0;
Promedio= (x1+ x2+ x3+…. +xn)/n Mientras (i <=n) Hacer
Leer x;
n suma<-suma+x;
i <- i+1;
(∑ xi = x1+ x2+ x3+…. +xn ) / n FinMientras
i=1 prom<-suma/n
Escribir 'Resultado:',prom;
FinProceso
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.
Proceso Sumatoria
Variables
X1 n,i,x,suma Entero;
X2
X3 Programa suma Escribir 'El programa terminara cuando
ingrese un cero';
:
i<-0;
X?
suma<-0;
Repetir
suma= x1+ x2+ x3+…. +x? Escribir 'Ingrese un numero';
Leer x;
suma<-suma+x;
i<-i+1
Hasta Que (x = 0)
Escribir 'Resultado:',suma;
Escribir 'Numeros ingresados: ' , i;
FinProceso
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.
Estructuras Iterativas
Bloque de
Instrucción1

VC ← VI , VF, Salto

Otra estructura iterativa es la siguiente: Bloque de


Instrucción2

Bloque de
Instrucción3

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;
Construir un algoritmo que permita calcular el promedio de n
números ingresados por teclado
Proceso Promedio
Variables
n
X1 n,i,x,suma, prom Entero;
X2 Repetir
X3 Programa Promedio Escribir 'Cuantos numeros sumara?';
Leer n;
:
Hasta Que (n > 0)
Xn n>0 suma<-0;
Para i<-1 Hasta n Con Paso 1 Hacer
Promedio= (x1+ x2+ x3+…. +xn)/n Leer x;
suma<-suma+x;
n FinPara
prom<-suma/n
(∑ xi = x1+ x2+ x3+…. +xn ) / n Escribir 'Resultado: ',prom;
i=1 FinProceso
¿Preguntas?
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 > 0
• f(x)= (5x)/x si 0 < x <=10
• x2 si x <=0

• Crear un algoritmo que permita evaluar la función f(x)=3*x 3+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

También podría gustarte