Está en la página 1de 46

FUNDAMENTOS DE PROGRAMACIÓN

2019-1

Capítulo 4

DISEÑO DE ALGORITMOS
Capítulo 5

IMPLEMENTACIÓN DE ALGORITMOS

1
Retomando lo aprendido
Algoritmo <Nombre del Algoritmo>
……..
//comentarios
Leer <variable>
<otra variable>  <valor a asignar>
Si <expresión lógica> entonces
<instrucciones>
FinSi
Escribir “Mensaje a mostrar”, <variable>
Fin Algoritmo

2
Retomando lo aprendido

3
Decisiones en la vida diaria

http://micarrerauniversitaria.com/c-ingenieria/ingenieria-economica/ https://elsanturariodelaelectronica.webnode.es/circuitos-logicos/
https://commons.wikimedia.org/wiki/File:Putrajaya_Bridge_073.jpg http://iimp.org.pe/pptjm/jm20150827-planeamiento-estrategicos.pdf
https://asantos.milaulas.com/course/index.php?categoryid=3
Agenda
1. Diseño de algoritmos
• Pseudocódigo
• Diagramas de Flujo
• Estructuras Selectivas Dobles
2. Implementación de Algoritmos

5
Estructura selectiva doble
La expresión lógica debe devolver un
valor de verdad o de falso. Pueden ser
varias proposiciones unidas por
conectores.
Si <expresión_lógica> Entonces
El indentado o sangría nos
<acciones_por_verdadero>
ayuda a mantener el orden y
a tener en claro que
SiNo
acciones se ejecutarán si la
<acciones_por_verdadero>
expresión lógica es verdad y
qué acciones se ejecutarán
Fin Si
si la expresión es falsa.

Si la expresión lógica es verdad Si la expresión lógica es falsa entonces


entonces se ejecutarán las acciones o se ejecutarán las acciones o la acción
la acción especificada. especificada.

6
Estructura selectiva doble
Camino que se sigue en
La expresión lógica debe devolver un caso la expresión lógica
valor de verdad o de falso. Pueden ser sea verdad
varias proposiciones unidas por
conectores.

Camino que se sigue en


caso la expresión lógica
sea Falso

Si la expresión lógica es falsa entonces Si la expresión lógica es verdad


se ejecutarán las acciones o la acción entonces se ejecutarán las acciones o
especificada. la acción especificada.

7
Estructura selectiva doble
¿El número M es múltiplo de el numero N ?

8
Pseudocódigo
Debemos recordar que:
• Siempre debe tener la estructura Algoritmo – FinAlgoritmo
• Para asignar usamos la flecha que apunta a la izquierda 
• Para comparar usamos el signo =
• Existen funciones matemáticas como trunc, redon, abs, rc, sen, cos
entre otras
• El indentado siempre debe estar presente por una cuestión de
orden y de estructura
• Las palabras reservadas Leer y Escribir son las únicas que podemos
usar para la lectura y escritura de datos respectivamente

9
Diagrama de flujo
Debemos recordar que:
• Siempre debe tener la estructura Algoritmo – FinAlgoritmo (dentro
de elipses
• Para asignar usamos la flecha que apunta a la izquierda  y debe ir
en un rectángulo
• Para comparar usamos el signo =
• Existen funciones matemáticas como trunc, redon, abs, rc, sen, cos
entre otras
• Siempre se debe poder seguir el flujo y llegar al fin del algoritmo
• Las palabras reservadas Leer y Escribir son reemplazadas por
paralelogramos, para la lectura utilizamos la flechita que apunta
hacia adentro y para la escritura la flechita que apunta hacia afuera

10
Instrucciones
En ANSI C una de las instrucciones más usadas de salida es:
printf : permite imprimir datos según determinado
formato en la salida estándar
Debemos recordar que:
• Para poder usarlas necesitamos invocar al archivo de cabecera que
contiene su declaración
#include <stdio.h>
• Tiene dos argumentos:
• el primer argumento se utiliza para especificar una cadena de
formato que se utiliza para especificar el tipo de dato de la
variable cuyo valor se desea escribir.
• El segundo argumento es/son las variables que se quieren
imprimir en la salida estándar.
• Recuerde que el orden es muy importante

11
Instrucciones
En ANSI C una de las instrucciones más usadas de entrada es:
scanf: permite leer datos según determinado
formato en la entrada estándar
Debemos recordar que:
• Para poder usarlas necesitamos necesario invocar al archivo de
cabecera que contiene su declaración
#include <stdio.h>
• Tiene dos argumentos:
• el primer argumento se utiliza para especificar una cadena de
formato que se utiliza para especificar el tipo de dato de la
variable cuyo valor se desea leer.
• El segundo argumento se utiliza para especificar la dirección de
memoria en donde se encuentra la variable cuyo contenido se
desea actualizar con el valor ingresado por el usuario.
• Recuerde que el orden es muy importante.
12
Instrucciones
Debemos recordar que:
• Al final de cada instrucción debe ir el punto y coma (;)
• El bloque se delimita por las llaves {}
• Indentar es necesario para tener un código ordenado
• Los comentarios se colocan dentro de los signos /* */
• La función main retorna un entero de valor 0
• Para asignar usamos el signo =
• Para comparar usamos el signo ==
• Como conectores tenemos &&(conjunción) || (Disyunción)
y ! (negación)

13
Estructura selectiva doble
La expresión lógica debe devolver un
valor de verdad o de falso. Pueden ser
varias proposiciones unidas por
conectores. Se delimita con paréntesis. If ( <expresión_lógica> )

Si la expresión lógica es verdad <acción_por_verdadero> ;


entonces se ejecutará la acción else
<acción por falso>;
El indentado o sangría
nos ayuda a mantener
el orden y a tener en
claro que acciones se
ejecutarán si la Si la expresión lógica es falsa entonces
expresión lógica es se ejecutará la acción
verdad.

14
Estructura selectiva doble
La expresión lógica debe devolver un El bloque es definido
valor de verdad o de falso. Pueden ser por las llaves
varias proposiciones unidas por
conectores. Se delimita con paréntesis. If ( <expresión_lógica> ) {

Si la expresión lógica es verdad <acciones_por_verdad> ;


entonces se ejecutará la acción }
else{
<acción por falso>;
El indentado o sangría
nos ayuda a mantener
}
el orden y a tener en
claro que acciones se
ejecutarán si la Si la expresión lógica es falsa entonces
expresión lógica es se ejecutará la acción
verdad.

15
Ejercicio
El alumno Juan Ramírez desea saber, en base a su
nota final, si aprobó o no el curso de Fundamentos
de programación, considerando que la nota
aprobatoria es 10.5

Definición
Explicación: Calcular si se aprobó o no el curso
Datos de entrada: nota final
Salida: resultado del curso
Fórmula: verificar si es mayor o menor a 10.5

16
Diseño - Pseudocódigo

A. B.

C. D.

17
Diseño - Diagrama de Flujo
A. B.

C. D.

18
Codificación
A. B.

Las opciones C y D no se pueden implementar porque necesitaríamos


cadenas de caracteres que es un tema que no abarca el curso

19
Ejercicios
Se desea conocer cual es el número mayor o igual de
un par de datos ingresados.

Definición
Explicación: Comprobar que número es mayor
o igual
Datos de entrada: números enteros
Salida: número con mayor valor
Fórmula: verificar que número es mayor del
par ingresado

20
Diseño - Pseudocódigo

21
Codificación

22
Ejercicios
Juan debe calcular el valor de la función f(x)
mostrada a continuación:
Para probar el uso de la función se ha creado la
siguiente hoja de cálculo:

Además, se ha considerado validar el dominio de


la función f(x). De no ser válido, se debe colocar el
mensaje “El valor x es incorrecto”

Definición
Explicación: Calcular la función f(x).
Datos de entrada: x Datos de prueba:
Salida: el valor de la función en x X = 2.5
Fórmula: Salida esperada:
6.25

23
Codificación

24
Ejercicios
Se desea calcular el área de un triángulo de lados a, b y c, utilizando la fórmula del
semiperímetro. El programa solicitará al usuario el valor de cada lado y deberá verificar
que sean datos válidos, valores enteros positivos. Además, basado en los lados del
triángulo deberá comprobar que formen efectivamente un triángulo, analizando si cada
uno de estos es menor que el semiperímetro.

De no cumplir alguna de las condiciones deberá imprimir un mensaje de error


adecuado.

Siga las fases del proceso de resolución de problemas.

Definición
Explicación: Calcular el área de un triángulo
Datos de entrada: lados (a, b, y c)
Salida: área del triángulo
Fórmula:

25
Codificación

26
Ejercicios
Otto necesita reforzar sus Datos de prueba:
conocimientos sobre prismas Arista de la base (cm): 2.0
hexagonales regulares. Altura (m) : 0.05
Para ello, ha decidido crear Resultados esperados:
una hoja de cálculo en Excel Area lateral (cm2) : 60.00
como se muestra a Area Total(cm2): 80.78
continuación: Volumen (cm3): 51.96
Además, él ha considerado validar los datos del prisma, es decir, que sean mayores
que cero. Si los datos son correctos, debe realizar los cálculos. Si no lo son, debe
mostrarse en la observación el mensaje "Datos iniciales incorrectos".
Se le pide:
Definición
Explicación: Calcular volumen del prisma.
Datos de entrada: arista base (cm) y altura (m)
Salida: área lateral, área total y volumen
Fórmula:

27
28
Ejercicio – Ex. Parcial 2018-2 Pr. 1

29
Ejercicio – Ex. Parcial 2018-2 Pr. 1
Continuación:

30
Pseudocódigo
Algoritmo Examen1_2018_2_P1
// Lectura de datos
Escribir 'Ingrese las longitudes de cada lado de un cuadrilatero:’
Leer l1,l2,l3,l4
Escribir 'Ingrese los valores en grados sexag. de cada angulo del cuadrilatero:’
Leer ang1,ang2,ang3,ang4
Escribir 'Ingrese la cantidad de lados paralelos que existen en el cuadrilatero:’
Leer nParalel
// Se evalua que la suma de angulos internos sea 360
Si (ang1+ang2+ang3+ang4)!=360 Entonces
Escribir 'Para que sea un cuadrilatero la suma de angulos internos debe ser 360 grados sexag.’
SiNo
// Se verifica la cantidad de lados paralelos, que un lado no sea mayor a la suma de los otros tres
// Tambie se verifica que ningun angulo sea 0 o 180.
Si ( (nParalel<>0 Y nParalel<>2 Y nParalel<>4) O
l1>l2+l3+l4 O l2>l1+l3+l4 O l3>l1+l2+l4 O l4>l1+l2+l3 O
ang1=0 O ang2=0 O ang3=0 O ang4=0 O
ang1=180 O ang2=180 O ang3=180 O ang4=180) Entonces
Escribir 'No es un cuadrilatero’
SiNo

31
Pseudocódigo - Continuación
Si nParalel=4 Entonces
Si l1=l2 Y l2=l3 Y l3=l4 Y ang1=90 Y ang1=ang2 Y ang2=ang3 Y ang3=ang4 Entonces
Escribir 'Es un cuadrilatero del tipo paralelogramo y es un cuadrado.’
SiNo
Si ang1=90 Y ang1=ang2 Y ang2=ang3 Y ang3=ang4 Y
((l1=l2 Y l3=l4) O (l1=l3 Y l2=l4) O (l1=l4 Y l2=l3)) Entonces
Escribir 'Es un cuadrilatero del tipo paralelogramo y es un rectangulo.'
SiNo
Si ((ang1=ang2 Y ang3=ang4) O (ang1=ang3 Y ang2=ang4) O (ang1=ang4 Y ang2=ang3)) Y
(l1=l2 Y l2=l3 Y l3=l4) Entonces
Escribir 'Es un cuadrilatero del tipo paralelogramo y es un rombo.’
SiNo
Si ((ang1=ang2 Y ang3=ang4) O (ang1=ang3 Y ang2=ang4) O (ang1=ang4 Y ang2=ang3)) Y
((l1=l2 Y l3=l4) O (l1=l3 Y l2=l4) O (l1=l4 Y l2=l3)) Entonces
Escribir 'Es un cuadrilatero del tipo paralelogramo y es un romboide.’
SiNo
Escribir 'No es un cuadrilatero.’
FinSi
FinSi
FinSi
FinSi
32
Pseudocódigo Continuación
SiNo
Si nParalel=2 Entonces
Si (ang1=90 Y ang2=90) O (ang1=90 Y ang3=90) O (ang1=90 Y ang4=90) O (ang2=90 Y ang3=90) O
(ang2=90 Y ang4=90) O (ang3=90 Y ang4=90) Entonces
Escribir 'Es un cuadrilatero del tipo trapecio y es un trapecio rectangulo.'
SiNo
Si (ang1=ang2 Y ang3=ang4) O (ang1=ang3 Y ang2=ang4) O (ang1=ang4 Y ang2=ang3) Entonces
Escribir 'Es un cuadrilatero del tipo trapecio y es un trapecio isosceles.’
SiNo
Si (ang1+ang2=180 Y ang3+ang4=180) O (ang1+ang3=180 Y ang2+ang4=180) O
(ang1+ang4=180 Y ang2+ang3=180) Entonces
Escribir 'Es un cuadrilatero del tipo trapecio y es un trapecio escaleno.’
SiNo
Escribir 'No es un cuadrilatero.’
FinSi
FinSi
FinSi
SiNo
Escribir 'Es un cuadrilatero del tipo trapezoide.’
FinSi
FinSi
33
Pseudocódigo - Continuación
FinSi
FinSi
FinAlgoritmo

34
Ejercicio - Programa en C

35
Ejercicio – Programa en C
Continuación:

36
Ejercicio – Programa en C
Continuación:

37
Ejercicio – Ex. Parcial 2018-2 Pr. 2

38
Ejercicio – Ex. Parcial 2018-2 Pr. 2

39
Pseudocódigo
Algoritmo Examen1_2018_2_P2
Definir G Como Real
Definir None Como Real
G <- 9.8
None <- 999.999
Escribir "Desea resolver problemas de cinematica (C) o de dinamica (D)"
Leer opcion

Si opcion = 'C' Entonces


Escribir "Que desea calcular?"
Escribir "1. Tiempo"
Escribir "2. Velocidad final y espacio recorrido"
Escribir "3. Velocidad final y desaceleracion"
Leer opCinem
Si opCinem=1 Entonces
Escribir "Ingrese la aceleracion en km/h2, la velocidad inicial en km/h y la velocidad final m/s"
Leer a, vo, vf
tHoras <- ((vf*18/5) - vo) /a
Escribir "Tardo ", tHoras, " horas"
Sino

40
Pseudocódigo - Continuación
Si opCinem = 2 Entonces
Escribir "Ingrese la aceleracion en m/s2, la velocidad inicial en m/s y el tiempo en minutos"
Leer a, vo, t
vf <- vo + a * t * 60
e <- vo * t * 60 + (1/2) * a * (t * 60)^2
Escribir "La velocidad final es ", vf, " m/s y el espacio recorrido es ", e, "m."
SiNo
Si opCinem = 3 Entonces
Escribir "Ingrese la distancia en m y el tiempo en s."
Leer e, t
vo <- 2*e/t
a<- -vo/t
Escribir "La velocidad inicial es ", vo, " m/s y la aceleracion que produjeron los frenos es ", a,
"m/s2."
SiNo
Escribir "Ingreso una opcion invalida para cinematica."
FinSi
FinSi
FinSi
Sino

41
Pseudocódigo - Continuación
Si opcion = 'D' Entonces
Escribir "Ingrese las masas en kg y la aceleracion y la aceleracion en m/s2"
Leer m1, m2, a
Escribir "Ingrese la fuerza en newtons, la velocidad en m/s y el coeficiente de rozamiento"
Leer F, vo, coefR
Si m2 = None y F=None y vo=None y coefR=None Entonces
T <- m1 * (a + G)
Escribir "La tension de la cuerda en newtons es ", T, "N."
Sino
Si a = None y vo = None y coefR = None Entonces
a <- F / (m1 + m2)
Escribir "La aceleracion es ", a, " m/s2."
Sino
Si m2 = None y a = None Entonces
Fr <- coefR * m1 * G
a <- Fr / m1
t <- vo * (5/18) / a
Escribir "La aceleracion es ", a, " m/s2, demora en detenerse ", t " s, y la fuerza de
rozamiento es ", Fr, " N."
SiNo

42
Pseudocódigo - Continuación
Escribir "Los datos ingresados no corresponden a ningun problema de dinamica."
FinSi
FinSi
FinSi
SiNo
Escribir "Ha seleccionado un tipo equivocado de ejercicio"
FinSi
FinSi

FinAlgoritmo

43
Resumiendo lo aprendido
Algoritmo <Nombre del Algoritmo>
……..
//comentarios
Leer <variable>
<otra variable>  <valor a asignar>
Si <expresión lógica> entonces
<instrucciones>
SiNo
<instrucciones>
finSi
Escribir “Mensaje a mostrar”,
<variable>
Fin Algoritmo

44
Resumiendo lo aprendido

45
Bibliografía

• Joyanes, L. (2008). Fundamentos de programación (4a. ed.).


Madrid: McGraw-Hill/Interamericana de España.
• Joyanes, L. y Zahonero, I. (2010). Programación en C, C++,
Java y UML (1a. ed.). México, D.F.: McGraw-
Hill/Interamericana Editores.
• Lopez, L. (2005). Programación estructurada en lenguaje C
(1a. ed.). México, D.F.: Alfaomega Grupo Editor.
• Correa, G. (1992). Desarrollo de algoritmos y sus
aplicaciones en Basic, Pascal, Cobol y C (3a. ed.). Santafé de
Bogotá: McGraw-Hill Interamericana.

46

También podría gustarte