Está en la página 1de 56

Fundamentos de Programacin.

Ingeniera en Sistemas Computacionales.


Departamento: Sistemas y Computacin ITV.

Unidad I. Algoritmos.

Lgica de Programacin.

Algoritmos.
Temas :
Concepto de :

Algoritmo

Tipos de Algoritmos:
Diagramas de flujo.
Pseudocdigo.
Diagramas N-S (Nassi scheneiderman).
Desarrollo de algoritmos.

Lgica de Programacin.

Definicin de conceptos.

Programa: sinnimo de software, conjunto de instrucciones que


ejecuta un ordenador.
Lenguaje de programacin: cualquier lenguaje artificial que
puede utilizarse para definir una secuencia de instrucciones para su
procesamiento por un ordenador o computadora.
Algoritmo: Conjunto ordenado y finito de operaciones que
permite hallar la solucin de un problema.
Paradigma: Un paradigma de programacin representa un
enfoque particular o filosofa para la construccin del software. No es
mejor uno que otro sino que cada uno tiene ventajas y desventajas.
Tambin hay situaciones donde un paradigma resulta ms apropiado
que otro.

Lgica de Programacin.

Programacin estructurada.
Uso de tres estructuras lgicas de control:
Secuencial:
Sucesin simple de dos o mas operaciones.
Seleccin:
Bifurcacin condicional de una o ms operaciones.
Interaccin:
Repeticin de una o ms operacin mientras se
cumple una condicin.

Lgica de Programacin.

Pasos en el desarrollo de un programa.


1. Especificacin del programa.
Definicin del problema, Objetivos,
2. Diseo del programa.
Estrategia de solucin, Algoritmos
3. Codificacin del programa.
Implementacin mediante algn lenguaje de programacin.
4. Prueba
5. Documentacin
6. Mantenimiento

Lgica de Programacin.

1. Especificacin del programa.


Se conoce tambin como definicin del problema o anlisis
del programa.
Tareas a realizar.
. Determinacin de objetivos del programa.
. Determinacin de la salida deseada.
. Determinacin de los datos de entrada.
. Determinacin de los requerimientos de procesamiento.
. Documentacin de las especificaciones del programa.

Lgica de Programacin.

2. Diseo del programa.


En este caso se genera una estrategia de solucin con
tcnicas de programacin como:

Pseudocdigo.
Diagramas de flujo.

Lgica de Programacin.

2a. Diseo del programa.


Pseudocdigo.

Lgica de Programacin.

2b. Diseo del programa.


Diagrama de flujo:

BEGIN

WRITE
Introduzca el radio:

READ
radio

Area PI * radio ^ 2

WRITE
El area es : , area

END

Lgica de Programacin.

3. Codificacin.
Implementacin del programa con un lenguaje
programacin.
/* Programa: Calculo del rea de un circulo. */
#include <stdio.h>
#include <conio.h>

main()
{
float radio ;
const float pi = 3.1416f;
float area;
// Lectura de datos.
printf("Dame el radio ");
scanf("%f" , &radio);
// Evaluacin del modelo matematico.
area = pi * radio * radio;
// Salida de resultados.
printf(El area es %10.4f ", area );

de

Lgica de Programacin.

4. Prueba y depuracin del programa.


Depuracin.
a)
b)
c)
d)

Errores
Errores
Errores
Errores

de
de
de
de

sintaxis o de compilacin
ejecucin
lgica
especificacin.

Prueba. Consiste en verificar la funcionalidad del programa a


travs de varios mtodos para detectar errores posibles

a) Chequeo de escritorio
b) Prueba manual de datos.
c) Prueba de datos de muestra en la computadora
d) Prueba por un grupo selecto de usuarios potenciales.

Lgica de Programacin.

5. Documentacin del programa.


Consiste en describir por escrito a nivel tcnico los procedimientos
relacionados con el programa y su modo de uso. Tambin se debe
documentar el programa para que sea ms entendible.
Para quien es la documentacin?.
- Usuarios.
- Operadores.
- Programadores.
- Analistas de sistemas.

6. Mantenimiento del programa.


Es el paso final del desarrollo del software. Alrededor del 75% del
costo total del ciclo de vida de un programa se destina al
mantenimiento. El propsito del mantenimiento es garantizar que
los programas en uso estn libres de errores de operacin y sean
eficientes y efectivos.

Lgica de Programacin.

Algoritmos.
Los algoritmos son una lista bien definida, ordenada y finita
de operaciones que permite hallar la solucin a un
problema.

Cul es la diferencia entre programa y algoritmo?

Lgica de Programacin.

Tipos de un algoritmo
Los algoritmos pueden ser expresados de muchas maneras,
incluyendo al lenguaje natural, pseudocdigo, diagramas de
flujo y lenguajes de programacin entre otros.

El diseo de un algoritmo es independiente del lenguaje que


despus se vaya a utilizar para codificarlo.

Lgica de Programacin.

Diagrama de flujo.
Un diagrama de flujo constituye la representacin grafica de
la solucin del problema.
Smbolos ms utilizados:

Lgica de Programacin.

Significado de los smbolos ms utilizados.


Inicio/Fin Representan respectivamente el inicio y fin del algoritmo.
Flecha. Indica el sentido y trayectoria del proceso de informacin o tarea.
Entrada /Salida: Se usa para representar la entrada/salida de datos al
programa.
Rectngulo. Se usa para representar un evento o proceso determinado.

Rombo. Se utiliza para representar una condicin. Normalmente el flujo


de informacin entra por arriba y sale por un lado si la condicin se
cumple o sale por el lado opuesto si la condicin no se cumple. El rombo
adems especifica que hay una bifurcacin.

Lgica de Programacin.

Asignacin.
<nombre_de_variable>
<expresion>

Ejemplos:

Lgica de Programacin.

Entrada y Salida de datos.


Entrada
READ
<lista_variables
>

Salida.
WRITE
<lista_expresion
es>

Lgica de Programacin.

Entrada de datos.
READ
<lista_variables
>

Ejemplos.
READ
radio

READ
base,
altura

Lgica de Programacin.

Salida de datos.
WRITE
<lista_expresion
es>

Salida.
WRITE
Introduzca el
radio :
WRITE
El area es = ,
area

Lgica de Programacin.

Inicio (BEGIN) y Fin (END)


BEGIN
Instruccion_1
Instruccin_2

.
Instruccin_N

END

Lgica de Programacin.

Diagrama de flujo completo.


BEGIN

PI = 3.1416

WRITE
Introduzca el radio:

READ
radio

PI = ????
Area PI * radio ^ 2

WRITE
El area es : , area

END

Lgica de Programacin.

Decisiones.
SI
(TRUE)

Bloque_instruccion
es_1

Decisi
n

No
(FALSE)

Bloque_instruccion
es_2

Lgica de Programacin.

Ejemplo.
El
siguiente
algoritmo
muestra
el
mensaje
apropiado, de acuerdo a las
siguientes alternativas:
APROBADO
NO APROBADO
Se mostrara el mensaje de
APROBADO si el promedio
es mayor o igual a 70. El
promedio se calcula en
base a tres calificaciones.

Lgica de Programacin.

Estructuras de repeticin.

NO
(FALSE)

PROCESO

CONDICI
N

(Cuerpo del
Ciclo)

SI
(TRUE)

PROCESO
(Cuerpo del
Ciclo)

SI
(TRUE)

CONDICI
N

NO
(FALSE)

Lgica de Programacin.

Estructuras controlada por contador.


Inicializacin

VC 0

VC <
N

Actualizacin.
VC
VC+1

VC .- Variable de
control.

SI
(TRUE)

PROCESO
(Cuerpo del
Ciclo)

NO
(FALSE)

N .- numero de
veces a repetir el
proceso

Lgica de Programacin.

Contador.
Inicializacin del contador

Contabiliza el numero de
calificaciones mayores o
iguales a 70

aprobados 0

NO
(FALSE)
CONDICI
N

SI
(TRUE)
READ
calificaci
on

SI
Calificacion
>= 70

aprobados aprobados
+1

Actualizacin del
contador sujeto a una
condicin

Lgica de Programacin.

Acumulador.
Acumula las calificaciones.
Inicializacin del acumulador.

suma 0

NO
(FALSE)
CONDICI
N

SI
(TRUE)
READ
calificaci
on

suma suma +
calificacion

Actualizacin del
acumulador.

Lgica de Programacin.

Pseudocdigo.
Diremos que una notacin es un pseudocdigo si con
ella podemos describir un algoritmo utilizando
palabras y frases del lenguaje natural sujetas a
determinadas reglas.
No existe un pseudocdigo totalmente estndar, ya
que depende de quin lo utilice.

Lgica de Programacin.

Estructura de un pseudocdigo.

En pseudocdigo, todos los algoritmos tienen la misma


estructura, la cual viene definida por tres secciones.

Cabecera.
Declaraciones.
Cuerpo.

Lgica de Programacin.

Cabecera.

ALGORITHM <nombre_del_algoritmo>

Ejemplo:
ALGORITHM area_Circulo
ALGORITHM AreaCirculo
ALGORITHM AREA_CIRCULO
No se permiten espacios en blanco.

Lgica de Programacin.

Declaraciones.
En esta seccin se declaran las constantes, los tipos de datos
y las variables que se usan en el algoritmo.
[ CONST
<declaracin_constantes>
]
[ TYPE
<declaracin_tipos_de_datos> ]
[ VAR
<declaracin_variables>
]
Ejemplo:
CONST
PI = 3.1416
VAR
radio, area

Lgica de Programacin.

Cuerpo del algoritmo.


En el cuerpo se escriben todas las instrucciones del algoritmo.
BEGIN
<intsruccin_1>
<instruccin_2>
.
<instruccin_N
END
Ejemplo:
BEGIN
WRITE (Introduzca el radio : )
READ (radio)
area PI * radio ^ 2
WRITE (El area es = , area)
END

Lgica de Programacin.

El algoritmo completo.
ALGORITHM area_Circulo
CONST
PI = 3.1416
VAR
radio, area
BEGIN
WRITE (Introduzca el radio : )
READ (radio)
area PI * radio ^ 2
WRITE (El area es = , area)
END

Lgica de Programacin.

Comentarios.
ALGORITHM area_Circulo
/* Declaracin */
CONST
PI = 3.1416
VAR
radio, area
BEGIN
// Datos de entrada
WRITE (Introduzca el radio : )
READ (radio)
// Calculo del area.
area PI * radio ^ 2
WRITE (El area es = , area)
END

Lgica de Programacin.

Decisin.
IF ( <expresin_lgica> ) THEN
<bloque_instrucciones_1>
[ ELSE
<bloque_instrucciones_2> ]
END_IF
Ejemplo:
IF ( promedio >= 70 ) THEN
WRITE (APROBADO)
ELSE
WRITE (NO APROBADO)
END_IF

Lgica de Programacin.

Ejemplo.
ALGORITHM

AlumnoAprobado

VAR
c1 , c2 , c3
promedio
BEGIN
WRITE (Introduzca tres calificaciones)
READ (c1, c2, c3)
promedio ( c1 + c2 + c3 ) / 3
IF (promedio >= 70) THEN
WRITE( APROBADO)
ELSE
WRITE( NO APROBADO)
END_IF
END

Lgica de Programacin.

Ejemplo.
Definicin del problema.
La velocidad final que logra un automvil que se desplaza
con una aceleracin constante (a) se puede expresar por:

vf

2
0

2as

1/ 2

Donde, s es la distancia recorrida por el automvil en un


tiempo t y puede ser obtenida por:

s v0 t

1/ 2 a t 2

Y v0 es la velocidad inicial.
Elabore un algoritmo para determinar la velocidad final del
automvil.

Lgica de Programacin.

Anlisis.
Se desea obtener la velocidad final del automvil (vf). Por lo tanto
se convierte en el parmetro de salida o respuesta del programa.
Realizando una inspeccin sobre el modelo matemtico a
resolver, se observa que la velocidad inicial , la aceleracin y el
tiempo de recorrido debern ser proporcionados como entrada por
parte del usuario.
La distancia recorrida (s) en este caso solo es un parmetro
intermedio para la solucin final y por lo tanto solo es auxiliar para
obtener la velocidad final que es el objetivo del problema.
El sistema de unidades es responsabilidad del usuario al
proporcionar los datos de entrada ( por ejemplo si la velocidad
inicial estar dada en m/s o Km/hr), siendo este homogneo para
Identificadores
todos los datos.Parmetros.
Salida

vf

Entrada

a , t , v0

Auxiliares

Constantes

Lgica de Programacin.

Diseo del programa (algoritmo).


Diagrama de flujo.
BEGI
N
WRITE
Introduzca la vel. Inicial,
aceleracion y el tiempo

Entrada de datos.

READ
v0, a, t

s v0 t + a t2
vf ( v02 + 2 a s ) ^
0.5
WRITE
La velocidad final es :
, vf

END

Evaluacin
modelo
matemtico
Salida de resultados

Lgica de Programacin.

Diseo del programa (algoritmo).


Pseudocdigo.
ALGORITHM Automvil
VAR
vf
// Velocidad final.
v0 , a, t
// Vel. Inicial, aceleracion y tiempo.
s
// distancia recorrida.
BEGIN
WRITE (Dame la velocidad inicial)
READ (v0)
WRITE (Dame la aceleracin)
READ (a)
WRITE (Dame el tiempo de recorrido)
READ
(t)
s v0 t + a t2
vf ( v02 + 2 a s ) ^ 0.5
WRITE La velocidad final es : , vf
END

Lgica de Programacin.

Ejemplo.
Anlisis.
x b x c 0
Una ecuacin cuadrtica de la aforma
tiene dos soluciones o races y estn pueden ser reales o
complejas. Las dos soluciones reales x1 y x2 pueden ser
evaluadas por:
b b2 4 a c
b b2 4 a c
y
x1
x2
2a
2a
2

Para determinar si la ecuacin tiene races reales o


complejas depende del radical como se muestra ac
Si : b2 4 a c >= 0
ontinuacion
Las soluciones son reales

Sino
Las soluciones son complejas.

Se desea obtener las races reales de la ecuacin y para el


caso de que sean races complejas solo se mostrara el
mensaje de Races complejas, sin llevar cabo el calculo de
estas.

Lgica de Programacin.

Parmetros .
Parmetros.
Salida

x1, x2

Races complejas

Entrada

a, b, c

Auxiliares

Constantes

Lgica de Programacin.

Algoritmo.
Diagrama de flujo.
BEGI
N
WRITE
Coeficientes :

READ
a,b, c
r b2 4 a
c

1
SI
(TRUE)

r
>=
0

x1 ( -b + r ^ 0.5) /
(2 a)

WRITE
Raices
complejas

x2 ( -b r ^ 0.5) /
(2 a)
WRITE Las raices
son : , x1

NO
(FALSE)

, x2

1
END

Lgica de Programacin.

Algoritmo.
Pseudocdigo.
ALGORITHM Ecuacion_Cuadratica.
VAR
x1 , x2
a,b,c
r
BEGIN
WRITE (Dame los coeficientes a , b y c : )
READ (a, b, c)
r b^2 - 4 a c

IF (r >=0) THEN
x1 ( -b + r ^ 0.5) / (2* a)
x2 ( -b r ^ 0.5) / (2* a)
WRITE Las raices son : , x1 , x2
ELSE
WRITE Las raices son complejas
END_IF
END

Lgica de Programacin.

Ejercicio.
Elabore un algoritmo para que Acepte o Rechace una varilla circular,
los criterios de aceptacin son los siguientes; Su longitud debe ser mayor
de 7.75 cm. y menor de 7.85 cm, su dimetro no debe ser menor de
0.335 cm. no mayor de 0.346 cm.. Adems su masa no debe exceder de
5.6 gr.
La masa de la varilla es igual al volumen multiplicado por la densidad
especfica del material.
(Suponga la densidad especfica de la varilla como constante e igual a 7.8
gr/cm3.)

Anlisis.

Condiciones de aceptacin:

Parmetros.

7.75 < Longitud < 7.85

Salida

Texto (Aceptada Rechazada)

Entrada

longitud , diametro

Auxiliares

masa

Constantes

DENSIDAD , PI

0.335 <= Dimetro <= 0.346


Masa <= 5.6

Lgica de Programacin.

Diagrama de flujo.

Lgica de Programacin.

Pseudocdigo.
ALGORITHM Varilla_Circular
CONST
DENSIDAD = 7.8
PI = 3.1416
VAR
longitud, diametro
masa
BEGIN
WRITE ("Dame la longitud )
READ ( longitud)
WRITE ("Dame el diametro )
READ (diametro)
IF (longitud > 7.75 AND longitud < 7.85) THEN
IF ( diametro >= 0.335 AND diametro <= 0.346) THEN
masa PI *diametro2 / 4 * longitud * DENSIDAD
IF (masa <= 5.6) THEN
WRITE ("Aceptada)
ELSE
WRITE ("Rechazada)
END_IF
ELSE
WRITE ("Rechazada)
END_IF
ELSE
WRITE ("Rechazada)
END_IF
END

Lgica de Programacin.

Pseudocdigo.
ALGORITHM Varilla_Circular
CONST
DENSIDAD = 7.8
PI = 3.1416
VAR
longitud, diametro
masa
BEGIN
WRITE ("Dame la longitud )
READ ( longitud)
WRITE ("Dame el diametro )
READ (diametro)
IF (longitud > 7.75 AND longitud < 7.85) THEN
IF ( diametro >= 0.335 AND diametro <= 0.346) THEN
masa PI *diametro2 / 4 * longitud * DENSIDAD
IF (masa <= 5.6) THEN
WRITE ("Aceptada)
ELSE
WRITE ("Rechazada)
END_IF
ELSE
WRITE ("Rechazada)
END_IF
ELSE
WRITE ("Rechazada)
END_IF
END

Lgica de Programacin.

Solucin No 2 versin con banderas.


Diagrama de flujo.

Pseudocdigo.
ALGORITHM varilla_Circular2
CONST
DENSIDAD = 7.8
PI = 3.1416
VAR
longitud, diametro
masa, aceptada
BEGIN
WRITE "Dame la longitud "
READ longitud
WRITE "Dame el diametro "
READ diametro
aceptada FALSE

IFf (longitud > 7.75 AND longitud < 7.85)


IF ( diametro >= 0.335 AND diametro <= 0.346)
masa PI *diametro2 / 4 * longitud * DENSIDAD
IF (masa <= 5.6)
aceptada TRUE
END_IF
END_IF
END_IF
IF aceptada
WRITE Aceptada
ELSE
WRITE Rechazada
END_IF
END

Lgica de Programacin.

Ejemplo.
Un equipo de aire acondicionado se encuentra diseado para encenderse
bajo las siguientes condiciones; De las 9 hrs. en adelante y hasta antes de
las 16 hrs si la Temperatura sobrepasa los 25C y la humedad es mayor
de 0.6 o si la Temperatura es mayor de 30C independientemente de la
humedad. Antes de las 9 hrs o de las 16 hrs en adelante
si la
Temperatura es mayor de 30C y la humedad mayor de 0.7
Considere solo horas, no considere fracciones (minutos y segundos).
Elabore un algoritmo para indicar si el equipo se encuentra Encendido o
Apagado

Anlisis.

Condiciones para el encendido.

Parmetros.

SI Hr >= 9 AND Hr < 16


(R1)
T >25 AND h > 0.6
(R1a)
o
T > 30
(R1b)
SI Hr < 9 OR Hr >= 16
(R2)
T>30 AND h > 0.7
(R2a)

Salida

Encendido

Apagado

Entrada

hr, T , h

Auxiliares
Constantes

Lgica de Programacin.

Diagrama de flujo.

Pseudocdigo..
ALGORITHM aire_Acondicionado
VAR
Hr, T , h
BEGIN
WRITE "Dame la Hora "
READ Hr
WRITE "Dame la Temperatura "
READ T
WRITE "Dame la humedad "
READ h
IF (Hr >= 9 ANDHr < 16)
IF ( T > 25 AND h > 0.6)
WRITE ON
ELSE
IF (T > 30)
WRITE ON"
ELSE
WRITE OFF
END_IF
END_IF
ELSE
IF ( T > 30 AND h > =:7)
WRITE ON
ELSE
WRITE OFF
END_IF
END_IF

Lgica de Programacin.

Ejemplo.- Elabore un programa que muestre el mensaje apropiado de acuerdo, a las siguient
alternativas:
Mensaje.
Promedio.
Muy Bien
90..100
ALGORITHM Alumno
Bien.
80..89
CONSTANT
Regular.
70..79
VARAIABLE
Mal
0..69
c1 , c2 , c3
El promedio es calculado en base a tres
Promedio
evaluaciones parciales.
Representacin algortmica.

BEGIN
WRITE Dame sus tres calificaciones
READ c1 , c2 , c3
promedio <- (c1 + c2 + c3) / 3.0;

IF ( promedio >=90 y promedio <=100)


WRITE "Muy Bien "
ELSE
IF ( promedio >= 80 )
WRITE "Bien "
ELSE
IF (promedio >=70 )
WRITE "Regular "
ELSE
WRITE "Mal
END_IF
END_IF
END_IF
END

Lgica de Programacin.

Ejercicio.
La velocidad que adquiere un paracaidista en cada libre puede
ser expresada por:
c
t

gm
v(t )
1 e m
c

y la distancia recorrida en el tiempo t

c
gm
m mt
:
s (t )
e
t
c
c

Donde:
c.- Es una constante que depende del diseo del paracadas
= 12 Kg/s.
m.- Masa del paracaidista.
g Constante gravitacional = 9.81 m /s2

Elabore un algoritmo para determinar la velocidad y distancia


recorrida, para un tiempo proporcionado por el usuario.

Lgica de Programacin.

Ejercicio.
El alcance horizontal (x) que logra un proyectil, que es disparado
con una velocidad inicial (v0) y con un ngulo () con respecto a la
horizontal, puede ser expresado por:

x v0 x

Donde t es el tiempo que el proyectil permanece en el aire, el cual


puede ser determinado por:

voy

2
voy

2gh

v0 x

v0 cos eno

v0 y

v 0 seno

h es la altura a la cual es disparado el proyectil y g la constante


gravitacional igual a -9.81.

Elabore un algoritmo para determinar el alcance horizontal del


proyectil. El ngulo deber ser proporcionado en grados.

Lgica de Programacin.

Ejercicios.
Dada la fecha (da, mes y ao) por parte del usuario Elabore
un algoritmo que indique si la fecha es CORRECTA o NO
CORRECTA.

Recuerde que el nmero de das por mes es:


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

No das

31

31

30

31

30

31

31

30

31

30

31

El mes nmero 2 tendr 29 o 28 das dependiendo si el ao


es bisiesto o no es bisiesto. Un ao es bisiesto si este es
divisible entre 4 excepto si este es divisible entre 100, salvo
si este es divisible entre 400. Por ejemplo 2100 es divisible
entre 4 y divisible entre 100 por lo tanto no es bisiesto, sin
embargo el ao 2000 es divisible entre 4, entre 100 y entre
400 y si es bisiesto
FIN

También podría gustarte