Vous êtes sur la page 1sur 44

Introduccin a la

Programacin
Introduccin a los
algoritmos
Profesores:
Jazna Meza Hidalgo
Grisell Osses Daz
Luis ngulo Mura
Manuel Crisosto Muoz
Motivacin
OBJETIVO GENERAL DE LA ASIGNATURA

Resolver problemas bsicos a travs de la construccin de programas


basados en algoritmos y un lenguaje de programacin, generando acciones
hacia la bsqueda de propuestas pertinentes.

APRENDIZAJES ESPERADOS (COMPETENCIAS)

Interpretar algoritmos y programas para la solucin de problemas bsicos


de programacin.
Construir algoritmos y programas para la solucin de problemas bsicos
de programacin.
Descomponer un problema en subproblemas para facilitar el proceso de
definir una solucin.
Trabajar colaborativamente, cumpliendo un rol y responsabilizndose de
l.

2
Pasos en la resolucin de un
problema
Entender el problema
Conceptualizacin
Objetivo
Contexto
Buscar soluciones
Elegir solucin
Disear solucin
Descomposicin
Especificar tareas
Modelar solucin
Implementar solucin
Validar solucin

3
Programa de Aplicacin

Programa que permite resolver la ecuacin de primer grado

Proceso Ecuacion_primer_grado
Programa Variables
que permite a,b,x de tipo entero
resolver la Escribir 'Ingrese valores de EC'
ecuacin de Leer a,b
primer grado Si a = 0 Entonces
Escribir 'Error' #include <stdio.h>
Sino int main()
x<- -1*b/a; {
Escribir 'La solucin 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 solucin es %d:,x);
? x = -b / a }
b printf(Fin programa);
return 0;
}
4
Qu es un problema?
Es una situacin concreta sobre la cual se quiere
implementar una solucin (ejemplos)
Solucin: procedimiento que nos lleva a satisfacer
ciertos requerimientos
Esquema bsico para la resolucin de un problema
a travs de un programa con un enfoque sistmico

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 simblicos que
representan objetos del mundo real.
Ejemplos: 10 de Marzo de 2003, 3.14
Variables: En programacin 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 mvil, 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
bsicas 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
Cmo desarrollar un
algoritmo?
Imaginacin
No reinventar la rueda
Dividir para conquistar
Para ser efectivo se requiere
practicar constantemente
El diseo de algoritmos es una rama
de la Ciencia de la Computacin

8
Cmo se describe un
algoritmo?
Lenguaje natural
Pseudo cdigo
Lenguaje de programacin
La precisin es importante
Un algoritmo no puede ser descrito de
forma ambigua:
Todos tienen que entender lo mismo
(incluido el computador!)

9
Llamada telefnica

Se desea conceptualizar el
problema de efectuar una
llamada telefnica en un
telfono pblico que recibe
monedas de $10, $50 y
$100. El costo mnimo 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 Bsicos de
Algoritmos
La forma en que se ejecutan las
operaciones bsicas en un computador, es
similar a lo que ocurre en nuestro cerebro.

Por ejemplo, suponga que se nos pide


sumar dos nmeros: Cules son los pasos
bsicos para realizar la operacin
solicitada?
Conceptos Bsicos 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 despus) 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 nmeros.
Conceptos Bsicos de
Algoritmos
De lo anterior, al menos necesitamos 3
neuronas para sumar dos nmeros.
Le pedimos explcitamente que nos dijeran
dichos valores.
Le asignamos dichos valores a las neuronas
La suma la realiz nuestro cerebro de forma
mecnica. Note que no existen detalles de
la operaciones bsicas (*,/,+, -).
Finalmente se da el resultado
Conceptos Bsicos de
Algoritmos
Algoritmo para sumar dos nmeros:
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 Bsicos 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.
Tambin las podemos llamar x1 y x2
x e y .
Conceptos Bsicos de
Algoritmos
Ejercicio: Cree un algoritmo que multiplique tres nmeros.

Algoritmo para multiplicar tres


nmeros:
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 multiplicacin de las variables
en var 4
Podemos intentar multiplicar
Entregamos tres valores
el resultado queusando solo dos variables?
se encuentra en
var 4.
Conceptos Bsicos de
Algoritmos
La manera en que hemos detallado
nuestros dos algoritmos se llama
PSEUDOCDIGO. Y este pseudocdigo fue
escrito en lenguaje natural.
Otra manera de poder detallar nuestros
algoritmos es a travs de los diagrama de
flujo. Un diagrama de flujo es una
representacin simblica de la lgica del
algoritmo.
Elementos bsicos presentes
en un Algoritmo

PROGRAMA: Conjunto de instrucciones, con una secuencia lgica,


escrito en algn Lenguaje de Programacin que permite resolver un
Problema. El programa recibe datos de entrada, realiza las operaciones
de transformacin requeridas, y entrega los resultados esperados.

ALGORITMO: Una secuencia de pasos (modelo) para realizar una tarea.


Estructura general de un
Algoritmo utilizando Pseudocdigo
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
Accin_1
Accin_2
Accin_3 Las instrucciones o acciones presentes en un
: programa o algoritmo se pueden clasificar de la
: siguiente manera:
Accin_n
FinProceso Instrucciones o acciones de transferencia
de datos
Instrucciones o acciones aritmticos /
lgicos
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
Accin1
para el almacenamiento de datos requeridos por el
Accin_2 algoritmo.
Accin_3
:
:
Accin_n
FinProceso Las variables quedan definidas por un nombre y el tipo de dato
que pueda contener. La posicin 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 (bsicos)
son: Numrico (Entero o Decimal), Carcter y Lgicos.
Instrucciones
Proceso <Nombre_Proceso>
Variables
Lista de variables Tipo_Dato; Las instrucciones o acciones presentes en un programa o
Accin_1
algoritmo se pueden clasificar de la siguiente manera:
Accin_2
Accin_3 Instrucciones o acciones de transferencia de datos:
:
: INGRESO/SALIDA DE DATOS (LECTURA/ESCRITURA)
Accin_n
FinProceso Leer lista_de_variables; //separadas por coma

Escribir lista_de_expresiones; //separadas por coma


lista_de_expresiones: pueden ser variables,
expresiones aritmticas, 'mensajes entre comillas
simples'
ASIGNACIN
variable <expresin>/<variable>
expresin: corresponde a una transformacin
matemtica 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:
Accin_1
Accin_2
Accin_3 INGRESO/SALIDA DE DATOS (LECTURA/ESCRITURA)
:
:
Leer a, b, c;
Accin_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

ASIGNACIN
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
Accin_1
algoritmo se pueden clasificar de la siguiente manera:
Accin_2
Accin_3
:
: Instrucciones o acciones aritmticos / lgicos:
Accin_n
FinProceso Suma (+), Resta(-), Multiplicacin(*), Divisin (/), Mdulo (%),
Raz cuadrada (RC)
(el mdulo como la raz cuadrada pueden ser
implementados con las operaciones bsicas, pero por
comodidad los utilizaremos en forma explicita)

y (and o &), o (or 0 |), no (not o ~)


(los operadores lgicos, al igual que los aritmticos y
relacionales se utilizan en las expresiones lgicas presentes
en las transferencias de control condicional)
Ejemplos de Algoritmo bsicos
utilizando Pseudocdigo

Construir los algoritmos en pseudocdigo que permita resolver los siguientes


problemas, mostrando el resultado por pantalla:

sume dos valores


multiplica tres nmeros
divida dos nmeros
Calcular el cuadrado de un nmero
Determine los aos de nacimiento de una persona a partir de la edad
Ejemplos de Algoritmo bsicos
utilizando Pseudocdigo
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 nmeros


Proceso Suma
Variables
a,b,c,d Entero;
Leer a,b,c;
d<-a*b*c;
Escribir d;
FinProceso
Ejemplos de Algoritmo bsicos
utilizando Pseudocdigo
Divida dos nmeros
Proceso Divisin
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 nmero
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 aos de nacimiento de una persona a partir de la edad


Ejemplos de Algoritmo bsicos
utilizando Pseudo-Cdigo

Construir los algoritmos en pseudocdigo que permita resolver los siguientes


problemas, mostrando el resultado por pantalla:

Determinar la distancia entre dos puntos en el plano cartesiano

Evaluar la funcin f(x)=3*x3+4*x2 - 5 para un valor especifico de x

Evaluar la ecuacin de primer grado

Evaluar la ecuacin de segundo grado


Instrucciones de transferencia de
control
Las instrucciones o acciones presentes en un programa o
Proceso <Nombre_Proceso>
Variables
Lista de variables Tipo_Dato;
algoritmo se pueden clasificar de la siguiente manera:
Accin_1
Accin_2
Instrucciones o acciones de transferencia de control:
Accin_3 Transferencia condicional
:
: Esta instruccin es necesaria cuando el flujo de ejecucin
Accin_n
FinProceso del algoritmo depende de una condicin lgica. La
instruccin ms simple es la bifurcacin, en la cual la
ejecucin puede tomar dos cursos de accin dependiendo
de una condicin lgica.

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
Proceso <Nombre_Proceso> control
Evaluar la ecuacin de primer grado
Variables ax+b=0
Lista de variables Tipo_Dato;

Accin_1 a
Accin_2 ? x = -b / a
Si expresion_logica Entonces b
acciones_por_verdadero;
Sino a0
acciones_por_falso; Proceso Ecuacion_primer_grado
FinSi Variables
: a,b Entero;
Accin_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 solucin con PSeInt
Escribir x;
FinSi
Escribir 'Fin de Programa';
FinProceso
Instrucciones de transferencia de
control
Del ejemplo anterior podemos observar
que la bifurcacin permite seguir el flujo
adecuado dada una condicin.
Las condiciones lgicas que se evalan
en las bifurcaciones son siempre
verdaderas o falsas.
Tambin es posible que existan
bifurcaciones contiguas.
No necesariamente deben existir los dos
cursos de accin.
Instrucciones de transferencia de
control
En las bifurcaciones, se evalan proposiciones
utilizando:
Operadores lgicos
y (and o &), o (or 0 |), no (not o ~)
Operadores aritmticos
(*) multiplicacin, (/) divisin, (+) suma, (-) resta,
(%) mdulo
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 lgicos and, or, not
y, And, & O, Or, || No, ~
Y
V F
&

V V F

F F F

Ejemplos de proposicin lgica:


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 concepcin es el mejor equipo del ao

Cada una de estas expresiones tendr un valor de verdad dependiendo de


los valores de los operandos.
Ejemplos se evaluacin de
proposiciones lgicas
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
: :
Accin_n Accin_n
FinProceso FinProceso

Es importante notar que existen prioridades entre los operadores. Por lo tanto,
deben utilizarse parntesis en los casos que correspondan
Ejercicios: Construir, utilizando pseudocdigo, un algoritmo para cada uno de
los siguientes enunciados
Cree un algoritmo que divida dos nmeros y muestre el resultado

Crear un algoritmo que muestre en forma ordenada tres nmeros enteros


ingresados desde teclado.

Cree un algoritmo que resuelva la ecuacin de segundo grado, para valores


reales, y muestre el resultado

Cree un algoritmo que resuelva la ecuacin de segundo grado, para valores


reales e imaginarios, y muestre el resultado

Cree un algoritmo que permita evaluar la siguiente funcin 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 nmero

Cree un algoritmo que permita calcular el promedio de 20 nmeros

Cree un algoritmo que permita sumar n nmeros y muestre el resultado. El


valor de n debe ser ingresado por teclado al igual que los nmeros que se
sumarn.
Instrucciones de transferencia
repetitiva
El ltimo ejemplo planteado permite introducir el concepto de iteracin o ciclo.
Las estructuras iterativas permiten la ejecucin de un grupo de instrucciones un
nmero conocido o desconocido de veces.
Concepto de Ciclo
Un ciclo es la repeticin de un conjunto de instrucciones. Dicho ciclo
culmina cuando se cumple una condicin lgica de de trmino.
Cundo se aplican los Ciclos
Se aplican cuando queremos ejecutar un conjunto de instrucciones
varias veces.
Estructuras Iterativas
Bloque de Bloque de
Instruccin Instruccin
1 1

Condici Bloque de
Falso Instruccin
n
lgica 2
Verdadero
Bloque de Condici
Instruccin Falso n
2 lgica
Verdadero
Bloque de
Bloque de Instruccin
Instruccin 3
3

Bloque de Instrucin1; Bloque de Instrucin1;


Mientras Condicin_Logica Hacer
Repetir

Bloque de Instrucin2; Bloque de Instrucin2;

FinMientras Hasta Que


Bloque de Instrucin3; Condicin_Logica
Bloque de Instrucin3;
Construir un algoritmo que permita imprimir los
primeros n nmeros pares
Proceso Numeros_Pares
Variables
n,i Entero;
Repetir
2
Escribir 'Ingrese numeros de pares a imp
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 nmeros ingresados por teclado
Proceso Promedio
Variables
n
X1 n,i,x,suma, prom Entero;
X2 Repetir
X3 Programa Promedio Escribir 'Cuntos nmeros sumara?'
Leer n;
:
Hasta Que (n > 0)
Xn n>0 i <-1;
suma<-0;
Mientras (i <=n) Hacer
Promedio= (x1+ x2+ x3+. +xn)/n
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 nmeros ingresados
por teclado. El ingreso de nmeros debe realizarse hasta que se
ingrese un 0. Se debe imprimir la suma y la cantidad de nmeros
ingresados. Proceso Sumatoria
Variables
X1 n,i,x,suma Entero;
X2
X3 Programa suma Escribir 'El programa terminara
cuando
:
ingrese un cero';
X?
i<-0;
suma<-0;
suma= x1+ x2+ x3+. +x? 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
Construir un algoritmo que permita sumar nmeros ingresados
por teclado. El ingreso de nmeros debe realizarse hasta que se
ingrese un 0. Se debe imprimir la suma, la cantidad de nmeros
ingresados, adems el menor y mayor valor ingresado.
Estructuras Iterativas
Bloque de
Instruccin
1

VC VI , VF,
Salto

Bloque de
Otra estructura iterativa es la siguiente: Instruccin
2

Bloque de
Instruccin
3

Bloque de Instrucin1;
Para Variable_Numerica<-valor_inicial Hasta valor_final Con
Paso paso Hacer

Bloque de Instrucin2;
FinPara

Bloque de Instrucin3;
Construir un algoritmo que permita calcular el
promedio de n nmeros 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 nmero mayor de N
nmeros 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 funcin, 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 funcin 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 nmeros de la
serie de Fibonacci
Crear un algoritmo que permita calcular la siguiente sumatoria:
S= n + 2*n + 3*n +4*n +.+ n*n

Vous aimerez peut-être aussi