Professional Documents
Culture Documents
DE
INGENIERA
ALGORITMOS
Tomada de http://www.conalepqueretaro.edu.mx/images/stories/informatica.jpg
Introduccin
Objetivos especficos
Clasificacin de problemas
2
Wilson Mauricio Pimiento Crdenas. Fundamentos de la lgica para programacin de computadores. Universidad Piloto.
2009. 1 edicin.
PROGRAMA
DE
INGENIERA
- Salida:
El
punto
medio.
Este
tipo
de
problema
es
algortmico
soluble,
en
razn
a
que
existe
un
procedimiento
que
permite
encontrar
la
solucin.
Ejemplo
soluble
no
algortmico:
de
un
conjunto
de
cuatro
manzanas,
determinar
cul
es
la
ms
bella.
- Entrada:
cada
una
de
las
cuatro
manzanas.
- Proceso:
no
tiene.
- Salida:
una
de
las
manzanas.
Este
tipo
de
problema
planteado
es
categorizado
como
soluble
no
algortmico,
debido
a
que
no
sigue
un
procedimiento
perfectamente
definido
para
encontrar
la
respuesta.
La
solucin
de
un
problema
a
travs
de
un
algoritmo
debe
describir
las
tres
partes
que
lo
componen:
- Elementos
conocidos
(entrada).
- Procedimientos
y
condiciones
(proceso).
- Repuesta
(salida).
Entrada
PROCESO
Salida
Ejemplo
1.
Hacer
un
plato
tpico
colombiano,
de
acuerdo
a
las
anteriores
etapas,
tiene
la
siguiente
clasificacin.
- Entrada:
ingredientes
y
utensilios
de
cocina.
- Proceso:
combinar
los
ingredientes
y
hacer
uso
de
los
utensilios
de
cocina
de
acuerdo
a
la
receta.
- Salida:
el
plato
colombiano.
Ejemplo
2.
Sea
el
nmero
A
=
5
y
el
nmero
B
=
10,
encontrar
el
promedio
de
los
dos
nmeros.
- Entrada:
nmero
A
y
nmero
B.
- Proceso:
sumar
el
nmero
A
con
el
nmero
B
y
dividir
el
resultado
entre
2.
- Salida:
promedio
de
los
dos
nmeros.
PROGRAMA
DE
INGENIERA
Metodologa para el desarrollo de algoritmos
Documentacin
Prueba y
Conversin
del
depuracin del
algoritmo
aun
programa
programa
de
Etapa
5
computador
Diseo y (codificacin)
desarrollo del
Etapa
4
algoritmo
Anlisis del
problema
Etapa
3
Etapa
2
Etapa
1
Proceso para la elaboracin de un programa de computador.
Las
etapas
1
y
2
son
las
ms
complejas
y
las
de
mayor
detenimiento
para
solucionar
un
problema
en
computador,
porque
responden
cada
uno
de
los
interrogantes
sugeridos
en
la
solucin
de
problemas
para
articular
el
desarrollo.
Las
etapas
3
y
4
transforman
el
problema
a
un
algoritmo,
el
cual
se
traduce
a
un
lenguaje
de
programacin
computacional
(C++,
Vistual
Basic,
Java
etc)
que
validar
los
datos
para
determinar
si
satisface
la
solucin
al
problema.
PROGRAMA
DE
INGENIERA
Anlisis del problema
Proceso:
Suma
=
Nmero_A
+
Nmero_B.
Promedio
=
suma/2
Salida El resultado que est almacenado en la variable Promedio.
PROGRAMA
DE
INGENIERA
Diseo y desarrollo del algoritmo
int main()
{
double numeroA, numeroB, suma;
cout<<"Ingrese el numero A : ";
cin>>numeroA;
cout<<"Ingrese el numero B : ";
cin>>numeroB;
cout <<"\n\n";
suma = (numeroA + numeroB);
cout<<"el valor de la suma es: " <<suma <<"\n";
cout<<"\n\n";
system("pause");
}
PROGRAMA
DE
INGENIERA
Prueba y depuracin del programa
Documentacin
Consiste
en
la
descripcin
de
cada
uno
de
los
pasos
que
conllevan
a
la
solucin
del
problema;
su
importancia
radica
en
la
facilidad
que
otorga
para
leer
un
programa,
depurarlo,
hacer
ajustes
y
mantenimiento.
Existen
dos
tipos
de
documentacin:
Interna:
consiste
en
ir
dejando
lneas
de
comentario
dentro
del
programa.
Externa:
incluye
cada
una
de
las
etapas
del
procedimiento
metodolgico
(anlisis,
diseo,
codificacin
y
los
manuales
del
usuario
para
el
manejo
del
programa
y
la
interpretacin
de
los
datos
e
informacin
final).
4
Joyanes A. Luis. Programacin en algoritmos, estructuras de datos y objetos. McGraw Hill 2000.
PROGRAMA
DE
INGENIERA
Composicin de algoritmos: diagramas de flujo y pseudocdigo
Estudio de caso
Datos
de
entrada
Nota1,
Nota2,
Nota3
Primer_parcial
=
Nota1
*
30%
Segundo_parcial
=
Nota2
*
30%
Procesos
Tercer_parcial
=
Nota3
*
40%
Nota_final
=
Primer_parcial
+
segundo_parcial
+
tercer_parcial
Datos
de
salida
La
nota
definitiva
de
la
asignatura
es
Nota_final
Proceso
Procesar notas
Escribir definitiva
Salida
Fin
Figura 4. Etapa de divisin del algoritmo en diagrama de flujo.
Leer Nota1
Entrada
Leer Nota2
Leer Nota3
Escribir definitiva
Salida
Fin
Figura 5. Subdivisin de la primera parte del algoritmo (entrada)
Leer Nota1
Leer Nota2
Entrada
Leer Nota3
Escribir definitiva
Salida
Fin
Por
ltimo,
se
dividir
el
proceso
de
la
salida.
Para
este
caso
de
estudio
no
hay
que
hacer
nada,
en
razn
a
que
la
nota
definitiva
es
un
nico
valor
como
resultado
y
una
nica
actividad
del
subproceso
de
salida.
En
la
figura
7
evidencia
el
proceso.
PROGRAMA
DE
INGENIERA
Inicio
Leer Nota1
Leer Nota2
Entrada
Leer Nota3
Escribir Nota_final
Salida
Fin
Dentro
del
paso
de
diseo
la
siguiente
actividad
consiste
en
tomar
el
diseo
propuesto
y
evaluar
las
operaciones
para
optimizarlo.
A
ste
etapa
final
se
le
denomina
etapa
de
abstraccin
o
refinamiento.
En
la
figura
7
se
muestra
el
algoritmo
desarrollado
anteriormente
en
su
etapa
de
abstraccin
o
refinamiento.
PROGRAMA
DE
INGENIERA
Inicio
Leer Nota1
Leer Nota2
Leer Nota 3
Escribir Nota_final
Fin
Pseudocdigo
4 Leer Nota1
5 Leer Nota2
6 Leer Nota3
8 Escribir Nota_final
9 Fin
Estructuras secuenciales
Estructura secuencial
En
un
programa
estructurado
de
manera
secuencial,
una
accin
(instruccin)
es
seguida
inmediatamente
de
otra
para
su
ejecucin,
de
manera
que
la
salida
de
una
se
convierte
en
la
entrada
de
otra
y
as
sucesivamente
hasta
finalizar
el
proceso.
Las
figuras
8
y
9
representan
una
estructura
secuencial
en
bloques
y
pseudocdigo.
Accin 1
Accin 2
Accin 3
Accin n
6 <Accin
n>
Fin
7
Para
ilustrar
la
estructura
secuencial,
es
pertinente
el
caso
estudio
que
propone
crear
un
algoritmo
para
el
promedio
de
las
notas
de
la
asignatura
programacin
I
(caso
que
ser
utilizado
para
cada
una
de
las
estructuras
propuestas
en
el
curso).
Se
puede
evidenciar
que,
para
la
ejecucin
de
cada
instruccin
debe
haber
terminado
previamente
la
anterior,
como
lo
describe
la
figura
10.
Inicio
Leer Nota1
Leer Nota2
Leer Nota 3
Escribir Nota_final
Fin
Las
estructuras
selectivas
-o
de
decisin-
son
utilizadas
para
tomar
decisiones
lgicas
cuando
hay
un
nmero
de
alternativas
resultantes
de
una
condicin.
Estas
estructuras
evalan
la
condicin
y
se
ejecuta
una
opcin
u
otra
en
funcin
del
resultado.
Las
estructuras
de
decisin
pueden
ser:
Simples
(Si
entonces
/
if
-
then)
Dobles
(Si
entonces
si_no
/
if
then
-
else)
Mltiples
(Segn
sea,
caso
de
/
case)
Estructura simple
Este
tipo
de
estructura
evala
una
condicin
dada
y,
de
acuerdo
con
el
resultado
(verdadero
o
falso),
determina
la
accin
a
seguir.
La
representacin
grfica
de
la
estructura
de
decisin
simple
se
observa
en
la
figura
11.
a.
Falso
(no)
Condicin
Verdadero
(SI)
Acciones
. .
Leer Nota1
Leer Nota2
Leer Nota 3
Nota_final
No
>=
3.0
Si
Fin
PROGRAMA
DE
INGENIERA
Estructura doble
Este
tipo
de
estructura
permite
ejecutar
acciones
en
las
dos
alternativas
posibles
(verdadero
o
falso),
una
vez
evaluada
la
condicin.
La
figura
12
ejemplifica
este
tipo
de
estructura.
a.
Accin A1 Accin A2
si_no else
Ejemplo
Leer Nota1
Leer Nota2
Leer Nota 3
No
Nota_final
Si
>=
3.0
Fin
Estructura mltiple
Este
tipo
de
estructura
permite
seleccionar
una
opcin
entre
mltiples
alternativas,
lo
que
evita
problemas
de
escritura
del
algoritmo
y,
naturalmente,
de
legibilidad.
La
figura
13
evidencia
este
tipo
de
estructura.
PROGRAMA
DE
INGENIERA
a.
1
n
Condicin
2
3
4
Accin
A1
Accin
A2
Accin
A3
Accin
A4
Accin
An
b. Pseudocdigo
Si-no Accin Ax
Fin-segn.
El
resultado
de
la
expresin
(E)
es
evaluado,
el
resultado
se
compara
con
cada
una
de
las
etiquetas
E1,
E2,,
En
y
de
su
incidencia
ejecutar
las
acciones
respectivas.
En
caso
de
no
corresponder
con
ninguna
de
las
etiquetas,
ejecutar
la
accin
Ax.
Debe
tener
en
cuenta
que:
Cada
etiqueta
(E1,
E2,,
En)
es
un
nico
valor
diferente
a
las
dems.
La
expresin
(E)
debe
ser
un
tipo
ordinal,
como
por
ejemplo:
entero,
carcter,
boleano
pero
no
real
o
cadena.
PROGRAMA
DE
INGENIERA
Estructuras repetitivas
Las
estructuras
repetitivas
son
algoritmos
creados
para
repetir
una
o
varias
acciones
en
un
nmero
finito
de
veces.
Las
estructuras
que
repiten
una
sentencia
de
instrucciones
un
nmero
determinado
de
veces
se
denominan
bucles;
repetir
la
ejecucin
de
una
sentencia
de
acciones5
se
llama
iteraccin.
Existen
tres
tipos
de
estructuras
repetitivas:
1. Mientras
(while)
2. Repetir
(repeat)
3. Desde
para
(for)
Mientras (while)
Falsa
(no)
Condicin
Verdadera
(Si)
Acciones
Figura 14. Estructura repetitiva mientras (while).
5
Joyanes A. Luis. Programacin en algoritmos, estructuras de datos y objetos. McGraw Hill 2000
PROGRAMA
DE
INGENIERA
Al
ejecutar
la
estructura
mientras
(while),
primero
debe
evaluar
la
condicin.
Si
el
resultado
de
la
condicin
es
verdadero,
ejecuta
el
cuerpo
del
bucle
(las
acciones)
y
regresa
nuevamente
para
evaluar
la
condicin.
Este
proceso
se
repite
una
y
otra
vez,
mientras
el
resultado
de
la
condicin
sea
verdadero;
si
es
falso,
no
se
ejecuta
ninguna
accin.
Ejemplo
No
Continua
(S/N)
Si
Leer Nota1
Leer Nota2
Leer Nota 3
No
Si
Nota_final
>=
3.0
Fin
Repetir (repeat)
Acciones
Falsa
Condicin
(no)
Verdadera
(Si)
b. Pseudocdigo en espaol. c. Pseudocdigo en ingls.
repetir repeat
En
la
estructura
repetir
las
acciones
siempre
se
ejecutan
al
menos
una
vez;
la
estructura
mientras
evala
la
condicin,
si
sta
es
verdadera,
ejecuta
las
acciones;
de
lo
contrario,
no.
Ejemplo
Leer Nota1
Leer Nota2
Leer Nota 3
No
Si
Nota_final
>=
3.0
No
Si
Continua
(S/N)
Fin
Observe
que
en
la
estructura
repeat,
a
diferencia
de
while,
la
decisin
se
encuentra
al
final
de
la
ejecucin
del
algoritmo.
Verdadero
(si)
Acciones
Incrementar_variable_control
Desde variable_control hasta valor_lmite incrementar_varible_control <valor> hacer
<Accin 1>
<Accin 2>
.
<Accin
n>
Fin_desde
El
bucle
Desde
para
(for)
est
compuesto
por
cuatro
partes:
Parte
de
inicializacin:
est
representada
por
la
variable
de
control
del
bucle.
Parte
de
iteracin:
contiene
una
expresin
lgica
que,
de
ser
verdadera,
hace
que
se
realicen
las
acciones
en
cada
iteracin.
PROGRAMA
DE
INGENIERA
Parte
de
incremento:
en
esta
parte
se
incrementa
o
decrementa
la
variable
de
control
del
bucle.
Parte
de
acciones
(o
sentencias):
contiene
las
acciones
que
se
ejecutan
en
cada
iteracin
del
bucle.
Ejemplo
Contador = 0
No Contador <3
Si
Leer Nota1
Leer Nota2
Leer Nota 3
No
Nota_final
Si
>=
3.0
Contador = Contador + 1
Fin
PROGRAMA
DE
INGENIERA
Anidacin de estructuras
Las
estructuras
anidadas
son
aquellas
que
pueden
contener
otras
estructuras
(de
decisin
y
repetitivas)
cualquier
nmero
de
veces,
ejecutando
diferentes
acciones.
Si
condicin1
entonces
Si
condicin2
entonces
Si
condicin3
entonces
<accin
1>
.
<accin
n>
Representacin
en
pseudocdigo
de
una
estructura
de
decisin
simple
anidada
(si-
entonces)
Si Condicin1 entonces
Si Condicin2 entonces
Si Condicin3 entonces
<Accin1>
<Accin n>
Fin_si
Fin_si
Fin_si
6
Joyanes A. Luis. Programacin en algoritmos, estructuras de datos y objetos. McGraw Hill 2000.
PROGRAMA
DE
INGENIERA
El
siguiente
pseudocdigo
muestra
una
estructura
de
decisin
doble:
Si Condicin1 entonces
<acciones>
Si_no
Si Condicin2 entonces
<acciones>
Si_no
Si Condicin3 entonces
<Acciones>
Si_no
<Acciones>
Fin_si
Fin_si
Fin_si
El
pseudocdigo
se
puede
volver
complejo
en
la
medida
que
sean
agregadas
ms
estructuras
de
decisin
anidadas,
por
lo
que
es
necesario
aplicar
indentacin
(o
sangra),
de
tal
manera
que
corresponda
la
palabra
si
y
fin_si
de
cada
estructura,
tal
como
lo
ilustran
las
lneas.
Las
estructuras
repetitivas
son
anidadas
igual
que
las
estructuras
de
decisin
y
conservan
las
reglas
de
indentacin.
Adicional
a
esto,
la
estructura
interna
debe
estar
contenida
completamente
en
la
externa,
evitando
el
solapamiento.
La
figura
17
(a
y
b)
representa
grficamente
esta
anidacin:
PROGRAMA
DE
INGENIERA
a.
mientras Condicin1 hacer
<acciones>
mientras Condicin2 hacer
<acciones>
mientras Condicin3 hacer
<Accin1>
<Accin n>
Fin_mientras
Fin_mientras
Fin_mientras
b)
mientras Condicin1 hacer
<acciones>
mientras Condicin3 hacer
<Accin1>
<Accin n>
Fin_mientras
mientras Condicin3 hacer
<Accin1>
<Accin n>
Fin_mientras
Fin_mientras
PROGRAMA
DE
INGENIERA
Prueba de escritorio
Prueba
que
el
programador
hace
al
algoritmo
para
verificar
que
cumple
con
las
especificaciones
y
los
resultados
esperados,
sin
necesidad
de
ejecutarlo
en
un
lenguaje
de
programacin.
Proceso
que
se
ejecuta
a
mano
y
paso
por
paso.
Para
dar
una
explicacin
ms
clara
y
precisa
del
proceso
de
la
prueba
de
escritorio,
se
continuar
con
el
estudio
de
caso:
8 Escribir
Nota_final
Fin
9
La
prueba
de
escritorio
comienza
ejecutando
la
lnea
numerada
como
1;
es
decir,
inicia
con
la
ejecucin
del
algoritmo.
En
la
lnea
2
se
deja
un
comentario
sobre
el
objetivo
del
programa
y
en
la
lnea
3
se
definen
las
variables
y
el
tipo
de
dato
que
cada
variable
almacenar
(reales).
En
la
lnea
4
se
ejecuta
una
instruccin
de
entrada;
es
decir,
una
instruccin
que
recibe
un
dato
para
que
el
algoritmo
lo
procese.
En
trminos
de
la
prueba
de
escritorio,
se
debe
registrar
un
dato
que
entra
al
algoritmo
y
queda
almacenado
en
una
variable
en
la
memoria
del
computador;
este
hecho
se
PROGRAMA
DE
INGENIERA
registra
en
la
siguiente
tabla
que,
para
efectos
de
la
prueba
de
escritorio,
se
ir
registrando
cada
suceso
que
ocurra
en
las
lneas
del
algoritmo.
Nota1
Nota2
Nota3
Nota_final
3.6
Como
se
observa
en
la
tabla
anterior,
debajo
de
la
variable
Nota1
aparece
el
dato
real
3.6,
lo
que
significa
que
se
suministr
un
dato
al
algoritmo
y
qued
almacenado
en
Nota1.
En
el
algoritmo,
las
instrucciones
5
y
6
hacen
exactamente
lo
mismo
que
la
instruccin
4,
con
la
diferencia
que
puede
suministrar
datos
diferentes
a
voluntad
del
usuario,
haciendo
uso
del
computador.
La
prueba
de
escritorio
supone
que
al
suministrar
las
notas
4.4
y
3.2,
quedan
almacenadas
en
las
variables
Nota2
y
Nota3
respectivamente.
La
tabla
con
los
anteriores
valores
se
ver
as:
Nota1
Nota2
Nota3
Nota_final
3.6
4.4
3.2
La
instruccin
7
toma
cada
uno
de
los
datos
almacenados
en
las
variables
Nota1,
Nota2
y
Nota3,
multiplicando
por
30%,
30%
y
40%
respectivamente
cada
una.
El
resultado
de
la
anteriores
operaciones
se
suman
y
almacenan
en
la
variable
Nota_final.
La
instruccin
nmero
8
tiene
como
fin
reportar
el
contenido
de
la
variable
Nota_final;
es
decir,
el
valor
3.6.
Esta
variable
se
resalta
con
un
crculo
para
identificar
que
hace
parte
de
los
datos
de
salida
esperados
del
algoritmo.
Nota1
Nota2
Nota3
Nota_final
A
continuacin
ser
codificado
el
algoritmo
que
recibe
dos
nmeros
enteros
por
el
teclado
y
entrega
la
suma
de
stos
nmeros,
aplicando
la
estructura
del
lenguaje
de
programacin
de
alto
nivel
C++.
#include "iostream"
using namespace std;
int main()
{
double numeroA, numeroB, suma;
cout<<"Ingrese el numero A : ";
cin>>numeroA;
cout<<"Ingrese el numero B : ";
cin>>numeroB;
cout <<"\n\n";
suma = (numeroA + numeroB);
cout<<"el valor de la suma es: " <<suma <<"\n";
cout<<"\n\n";
system("pause");
}
Nota:
Para
evitar
que
los
nombres
de
las
funciones
programadas
por
el
usuario
sean
confundidas
con
las
definidas
por
las
libreras
estndar
de
C++
(las
que
se
#incluyen
<
entre
smbolos
menor-que<
y
mayor-que
>),
lo
que
conllevara
a
la
provocacin
de
errores
difciles
de
detectar
y
corregir,
la
solucin
establecida
por
C++
son
las
namespace
(espacio
de
nombres),
que
para
el
caso
anterior
es
std,
que
incluye
las
definiciones
para
cout,
cin
etc.
El
formato
es
el
siguiente:
Using
namespace
std
PROGRAMA
DE
INGENIERA
Resumen