You are on page 1of 65

Algoritmos

y
Programas

Una primera definicin


Un algoritmo consiste en el grupo de
instrucciones que definen la secuencia de
operaciones a realizar para resolver un
sistema especfico o clase de problema.
Es una serie ordenada de instrucciones,
pasos o procesos que llevan a la solucin
de un determinado problema.

2. Concepto de Algoritmo

La
metodologa
de
la
programacin es aquella que es
necesaria para resolver problemas
mediante programas, su eje es el
algoritmo.

Problema

Diseo
del
algoritmo

Programa

Pasos para la solucin


de un problema
El diseo del algoritmo describe el
anlisis del problema y desarrollo
del algoritmo.
Expresar el algoritmo como un
programa en un lenguaje de
programacin.
Ejecutar y validar el programa por
la computadora.

Caractersticas
algoritmos

de

los

Preciso, indicar el orden de cada paso.


Definido,
el mismo resultado se
obtendr al ejecutar el algoritmo n
ocasiones.
Finito,
deber terminar en algn
momento.

Como resolver un problema


Entender

el problema
Trazar un plan
Ejecutar el plan (resolver)
Revisar

COMPRENDER EL
PROBLEMA
Leer el problema varias veces
Establecer los datos del problema
Aclarar lo que se va a resolver (Cul es la
pregunta?)
Precisar el resultado que se desea lograr
Determinar la incgnita del problema
Organizar la informacin
Agrupar los datos en categoras
Trazar una figura o diagrama

HACER EL PLAN
Escoger

y decidir las operaciones a

efectuar
Eliminar los datos intiles
Descomponer el problema en otros
ms pequeos

EJECUTAR EL PLAN
(RESOLVER)
Ejecutar

en detalle cada operacin


Simplificar antes de calcular
Realizar un dibujo o diagrama

ANALIZAR LA SOLUCIN
Dar

una respuesta completa


Hallar el mismo resultado de otra
manera
Verificar por apreciacin que la
respuesta es adecuada

Ejemplos bsicos de
algoritmos
Escribe

lo ms detalladamente posible
y en orden, los pasos a seguir para
llevar a cabo cada una de las
siguientes tareas:

Comprar una revista


1
2
3
4
5
6
7
8
9
10
11
12

Envolver un regalo
1
2
3
4
5
6
7
8
9
10
11
12

Cocinar un huevo
1
2
3
4
5
6
7
8
9
10
11
12

Construir un avin paso a paso de


forma ordenada y escribir los pasos
1
2
3
4
5
6
7
8
9
10
11
12

LENGUAJES DE
PROGRAMACIN

3. Los lenguajes
programacin
Cuando

de

el procesador de datos es una


computadora entonces el algoritmo de
solucin se expresa en un programa.
Por tanto, un programa es escrito en un
lenguaje de programacin.
Luego, la programacin consiste en
expresar las operaciones en forma de
programa de un algoritmo.

Tipos de lenguajes
Mquina;

escritos en cdigo binario.

Bajo

nivel (ensamblador); escrito en


nemotcnicos.

Alto

nivel; diseados para ser


entendidos por el ser humano.

Instrucciones bsicas

Entrada/Salida; transferencia de informacin entre


dispositivos perifricos y memoria central.

Aritmtico/Lgicas; ejecutan operaciones de stos


tipos.

Selectivas; seleccionan tareas en funcin de los


resultados

Repetitivas; permiten la iteracin de secuencias de


instrucciones un nmero dado de veces

Traductores del Lenguaje


A)

Intrpretes; Toma un
programa fuente lo traduce e
inmediatamente lo ejecuta.

Programa fuente

Intrprete

Traduccin
y ejecucin
en lnea

Traductores
(cont.)

del

Lenguaje

B) Compiladores; traduce un
programa fuente a cdigo objeto.

Programa
fuente

Compilador
(Compiler)

Programa
Objeto

Programa
ejecutable
Montador
(Linker)

4. Datos, Tipos de Datos


y Operaciones Primitivas
Un dato es la expresin general que
describe los objetos con los cuales opera
la computadora
Los tipos son: simples (no estructurados)
y compuestos (estructurados). Aquellos
se subdividen en:

Numericos (integer, real)


Lgicos (booleans)
Carcter (char, string)

Datos primitivos
Datos

Numrico

Entero

Carcter

Real

Lgico

5. Constantes y Variables

Constantes: valores que durante la


ejecucin de un programa no
cambian su valor.

Variables: valores que cambiarn


durante la ejecucin del programa

6. Expresiones
Se

definen como una combinacin de


constantes, variables, smbolos de
operacin, parntesis, y nombres de
funciones especiales.
Una expresin consta de operandos y
operadores.
Las expresiones se clasifican en
aritmticas, lgicas y carcter.

Expresiones aritmticas
Operador

Significado

Tipo de operandos

Tipo resultado

**

Exponenciacin

Entero o real

Entero o real

Suma

Entero o real

Entero o real

Resta

Entero o real

Entero o real

Multiplicacin

Entero o real

Entero o real

Divisin

Real

Real

Div

Divisin entera

Entero

Entero

Mod

mdulo

Entero

Entero

Reglas de prioridad
Operador

Grfo

Parentesis

( )

Exponencial

**

Multi, divide

*, /

Div y mod

Div, mod

Ms y menos

+, -

Operadores de relacin
Expresin 1

Operador de
relacin

Expresin 2

Operador

Significado

<

Menor

>

Mayor

Igual

<=

Menor o igual

>=

Mayor o igual

<>,!=

Distinto

Operadores lgicos
Operador lgico

Expresin lgica

Significado

Not

Not p

Negacin

And

PyQ

Conjuncin

Or

PoQ

disyuncin

7. Funciones Intrnsecas
Funcin

Descripcin

Abs(x)

Absoluto

Arctan(x)

Tangente inversa

Cos(x)

Coseno

Exp(x)

Exponencial

Ln(x)

Log neperiano

Log10(x)

Log decimal

Round(x)

Redondeo

Sin(x)

Seno

Sqr(x)

Cuadrado

Sqrt(x)

Raz cuadrada

Trunc(x)

Truncamiento

8. Operacin de Asignacin
Es

la forma de darle valores


tanto a variables como
constantes, se representa con
el smbolo

Tipos de asignacin
Aritmtica
Lgica
Cadena

de carcteres

9. Entrada y salida de
informacin

La operacin de lectura READ


permite el ingreso de los datos
necesarios
para
los
clculos
computacionales.

La operacin de escritura WRITE


imprime la informacin procesada
por el programa y su respectivo
algoritmo.

PROBLEMAS RESUELTOS
CON COMPUTADORAS Y
HERRAMIENTAS DE
PROGRAMACION

29/11/15

34

2.2 SOLUCION DE PROBLEMAS

Fases de fragmentacin:

29/11/15

Anlisis del problema: definicin concisa


a fin de que sea analizado en todo
detalle.
Diseo del algoritmo: procedimiento,
paso a paso, para la solucionar el
problema dado.
Solucin
del
algoritmo
con
la
computadora: codificacin del algoritmo
en un lenguaje de programacin
35

2.3 ANALISIS DEL PROBLEMA


El

propsito es ayudar al programador a


llegar a un cierto grado de comprensin
de la naturaleza del problema.

Una

buena definicin del problema,


junto con una descripcin detallada de
entrada y salida, son los requisitos ms
importantes para una solucin eficaz.

29/11/15

36

2.3 ANALISIS DEL PROBLEMA cont.


1.

Que informacin debe proporcionar la


solucin del problema.
Solucin del
Problema

Anlisis del
Problema

Diseo del
algoritmo

Solucin por
computadora

2.3 ANALISIS DEL PROBLEMA cont.


2. Que datos se necesitan para resolver
el problema.
Anlisis del
Problema
Definicindel
Problema

Especificaciones
de entrada

Especificaciones
de salida

2.3 ANALISIS DEL PROBLEMA cont.


Ejemplo:

leer los lados de un tringulo


rectangulo e imprima la hipotenusa.
Entradas:

valores de los lados (variable


LADO1 y variable LADO2).
Salida: valor de la hipotenusa (variable
LADO3).
Variables: LADO1, LADO2 y LADO3 (tipo
reales).

2.4 DISEO DEL ALGORITMO

La informacin proporcionada al algoritmo


constituye su entrada y la informacin
producida constituye su salida.

Los problemas complejos se resuelven


eficazmente
si
se
fragmentan
en
subproblemas que sean ms sencillos de
solucionar que el original. Esta tcnica es
conocida como divide y vencers (divide and
conquer).

2.4 DISEO DEL ALGORITMO cont.


La

descomposicin del problema


original en subproblemas cuya solucin
puede implementarse a travs de la
computadora se le denomina diseo
descendente (top down design)
La descripcin detallada de la solucin
mediante pasos especficos se le
denomina refinamiento del algoritmo
(stepwise refinement).

2.4 DISEO DEL ALGORITMO cont.


Diseo del
algoritmo
Diseo
descendente

Refinamiento
por pasos

Herramientas de
programacin
diagramas de flujo
-pseudocdigo

2.4 DISEO DEL ALGORITMO cont.


Ejemplo:

Determine a los nmeros


menores que 90 y mltiplos de 9, as
como su sumatoria.

Definicindel
Problema

Especificaciones
de entrada

Especificaciones
de salida

Imprimir
mltiplos de 9
y su suma
siempre y
cuando sea
menor que 90

TOTAL = 0
NUM = 9
LIMITE = 90

NUM, TOTAL

2.4 DISEO DEL ALGORITMO cont.


Diseo
descendente
Mltiplos de 9

Sumatoria

Refinamiento
por pasos
a)

Num=9

b)

Print num

c)

Num <= 90
regresar a)

d)

Num=+9

Total=+num

Herramientas de
programacin

2.4 DISEO DEL ALGORITMO cont.


1.
2.
3.
4.
5.
6.
7.

Inicio
Total=0, Num=9, Limite=90
Print Num
Total=Total+Num
Si Num <= Limite entonces
Num=Num+9 y regresar a 3
Print Total
Fin

2.5 SOLUCION DE PROBLEMAS


MEDIANTE LA COMPUTADORA

Una vez diseado el algoritmo y


representado mediante una herramienta de
programacin se debe:
Solucin del
Problema por
Computadora

Codificacin
del programa

Ejecucin del
programa

Comprobacin
del programa

2.6 REPRESENTACION GRAFICA


DE LOS ALGORITMOS
Los
mtodos
usuales
para
representarlo son:
1. Diagrama de flujo
2. Lenguaje
de
especificacin
de
algoritmo

2.6 REPRESENTACION GRAFICA DE LOS


ALGORITMOS cont

Reglas para la elaboracin de


diagramas de flujo

Poner un encabezado que incluya un ttulo que identifique la


funcin del algoritmo; el nombre del autor; y la fecha de
elaboracin;
Slo se pueden utilizar smbolos estndar (ISO
5807);
Los diagramas se deben dibujar de arriba haca abajo y de
izquierda a derecha;
La ejecucin del programa siempre empieza en la
parte superior del diagrama;
Los smbolos de Inicio y Final deben aparecer
solo una vez;

La direccin del flujo se debe representar por medio de


flechas (lneas de flujo);
Todas las lneas de flujo deben llegar a un smbolo o a
otra lnea;
Una lnea de flujo recta nunca debe cruzar a otra.
Cuando dos lneas de flujo se crucen, una de ellas debe
incluir una lnea arqueada en el sitio donde cruza a la otra
(ilustracin 2-5);
Se deben inicializar las variables que se utilicen o
permitir la asignacin de valores mediante consulta al
usuario;

Las bifurcaciones y ciclos se deben dibujar


procurando una cierta simetra;
Cada rombo de decisin debe tener al menos dos
lneas de salida (una para SI y otra para NO);
Las acciones y decisiones se deben describir
utilizando el menor numero de palabras posible; sin
que resulten confusas o poco claras;
Si el Diagrama se vuelve complejo y confuso, es
mejor utilizar smbolos conectores para reducir las
lneas de flujo;
Todo el Diagrama debe ser claro, ordenado y fcil de recorrer;
El Diagrama se debe probar recorrindolo con datos iniciales simples
(prueba de escritorio).

2.7 PSEUDOCODIGO
Es

un lenguaje de especificacin de
algoritmos que permite una codificacin
rpida y simple.
Su
ventaja radica en que el
programador no debe preocuparse por
la sintaxis de un lenguaje de
programacin en particular.
Utiliza palabras sencillas de entender
para codificar programas.

ESTRUCTURA
DE UN
PROGRAMA

Concepto de Programa
Conjunto de instrucciones que producirn
la ejecucin de una determinada tarea.
Esencialmente es un medio para lograr
un fin.

PROCESO DE
PROGRAMACION
Consiste en la solucin de
problemas y el desarrollo de
programas

Fases del proceso de


programacin
Definicin y anlisis del problema.
Diseo de algoritmos:

Diagrama de flujo.
Diagrama (N-S).
Pseudocdigo

Codificacin del programa.


Depuracin y verificacin del programa.
Documentacin.
Mantenimiento.

Partes de un programa
concepto de caja negra
Entrada

Algoritmo

Salida

Tipos de Instrucciones
(acciones que resuelven un problema)
De

inicio / fin.
De asignacin.
De lectura,
De escritura.
De bifurcacin.

Elementos bsicos de un
programa
Palabras reservadas.
Identificadores (nombres de variables).
Caracteres especiales.
Constantes.
Variables.
Expresiones.
instrucciones.

Otros elementos
Iteraciones,
Contadores,
Acumuladores,
Interruptores,
Estructuras:
Secuenciales,
Selectivas,
Repetitivas.

Iteraciones
Es el segmento de un algoritmo o programa, cuyas
instrucciones se repiten un nmero determinado de
veces mientras se cumple una determinada
condicin. Sus partes son:
decisin
cuerpo del bucle
salida

Contadores

Un contador es una variable cuyo valor se


incrementa o decrementa en una cantidad
constante en cada iteracin.

Acumuladores

Un Acumulador es una variable cuya misin


es almacernar cantidades distintas
resultantes de sumas sucesivas.

Interruptores

Un interruptor ( conmutador, bandera, flag) es


una variable que puede tomar diversos
valoresdurante la ejecucin de un programa y
que permite comunicar informacin desde
una parte a otra del mismo.

Componentes de un algoritmo
Algoritmo
Cabecera del programa
Seccin de declaracin
Seccin de acciones