Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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.
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> )
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> ) {
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.
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:
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.
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
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
46