Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El Seudo-Código es una herramienta para el diseño de programas, que toma las mejores
características del lenguaje natural (idioma español) y de los lenguajes de programación
(C, C++, Java, Python, Matlab, Pascal, Fortran, Cobol, etc.), mismo que resulta adecuado
para tanto la lógica, como la estructura de los algoritmos, la naturaleza de los datos y es
fácil de leer e interpretar. Una vez elaborada la solución del algoritmo, es sencillo
traducirla al lenguaje de alto nivel que se desee.
Programa NombreAlgoritmo;
Declaración de constantes;
Declaración de variables;
Definición de procedimientos o funciones;
Inicia NombreAlgoritmo
Instrucciones del algoritmo
Fin Programa NombreAlgoritmo.
Instrucciones de secuencia.
Instrucciones de selección.
Instrucciones de repetición.
Instrucciones de secuencia:
Son aquellas que van una a continuación de otra:
Instrucción1;
Instrucción2;
Instrucción3;
…
InstrucciónN;
En ciertos casos, se requiere agrupar las sentencias formando un bloque, por lo que se
requiere emplear la estructura:
Inicia NombreProceso
Lista de instrucciones
Fin Proceso NombreProceso
TAREA:
Resolver los ejercicios propuestos del texto guía desde la pag 119 hasta la pag 132.
Implementarlos en Lenguaje C y Python. Usar la metodología para resolver problemas en
la computadora, en por lo menos cuatro ejercicios.
NRC 6492: ejercicios de la serie 1, 4, 7, 10 …
NRC 7676: ejercicios de la serie 2, 5, 8, 11 …
Instrucciones de selección:
Variante:
Si condición es verdadera Entonces
Bloque de instrucciones verdadero
Python:
http://www.mclibre.org/consultar/python/lecciones/python-if-else.html
Ejercicio:
Siguiendo la metodología para resolver problemas por computadora diseñar un algoritmo
en seudocódigo e implementar un programa en Lenguaje C y Python para ingresar un
valor entero y determinar si es par o impar.
Solución:
Ver el archivo ParImpar.docx
SI ANIDADOS:
Un si anidado es aquel que va dentro de una alternativa verdadera o falsa de otro si.
Ejemplos:
Tablas de decisión:
Ejemplo1:
CONDICIONES SE EJECUTA SENTENCIA
C1, C2 Y C3 deben ser verdaderas BLOQUE1
C1, C2 deben ser verdaderas Y C3 debe ser falsa BLOQUE2
C1 debe ser verdadera Y C2 falsa BLOQUE3
Ejemplo2:
CONDICIONES SE EJECUTA SENTENCIA
C1, C2 Y C3 deben ser verdaderas BLOQUE1
C1, C2 deben ser verdaderas Y C3 debe ser falsa BLOQUE2
C1 debe ser falsa BLOQUE3
SOLUCION:
Ejemplo 1:
Si C1 Y C2 Y C3 Entonces
BLOQUE1;
Si C1 Y C2 Y NO C3 Entonces
BLOQUE2;
Si C1 Y NO C2 Entonces
BLOQUE3;
Ejercicios:
Solución:
Ver el archivo Triangulo.docx
Variante:
Si condición es verdadera Entonces
Bloque de instrucciones verdadero;
Ejercicio 3 Página 128
Dada la siguiente instrucción
Si A<B Entonces Si B<=C Entonces Proceso UNO SI C<>D Entonces X1;
Caso_Contrario X3…32; Fin Proceso UNO Caso_Contrario X3; Caso_Contrario
X4;
a. Reescribir la instrucción de tal manera que se pueda visualizar su lógica. De
ser posible simplificar al máximo la instrucción.
b. Escribir3333 la instrucción equivalente usando condiciones compuestas sin
anidamiento.
SOLUCION:
Se debe transformar la sentencia si original a otra equivalente con uso de condiciones
simples:
Si (A>B) Entonces
Si (A>B) Entonces
XX+15;
Caso_Contrario
Si (C <> D) Entonces
XX+15;
Caso_Contrario
Si C>D Entonces
XX+3;
Caso_Contrario
XX-1;
Se buscan condiciones redundantes o contradictorias a fin de simplificar esta estructura:
Si (A>B) Entonces
Si (A>B) Entonces // Condición redundante
XX+15;
Caso_Contrario // A <= B es una condición contradictoria
Si (C <> D) Entonces
XX+15;
Caso_Contrario
Si C>D Entonces
XX+3;
Caso_Contrario
XX-1;
b) SI A<=B Entonces
Si C<=D Entonces
XX-1
Caso_Contrario
XX+3
Caso_Contrario
XX+15;
Para la estructura original:
Instrucción A>B C>D
XX + 15; Verdadero
X X + 3; Falso Verdadero
X X – 1; Falso Falso
Caso variable De
val1: instucción1;
val2: instucción2;
val3: instucción3;
…
valN: instucciónN;
Caso_contrario
Instrucción;
Fin Caso;
Ejemplo:
Modificar la versión que utiliza si anidados con condiciones simples de ventas para que
use la estructura de selección múltiple.
SOLUCION:
Programa Ventas4;
// Usa la estructura de selección múltiple con condiciones simples
Const
LIM1 = 500;
LIM2 = 1000;
LIM3 = 1500;
PORC1 = 0.05;
PORC2 = 0.07;
PORC3 = 0.08;
PORC4 = 0.1;
// Declaración de variables:
Var
Nombre: HILERA;
MontoV, Comision: REAL;
Nanios: ENTERO
Inicia Ventas4
// Ingreso de datos:
Escribir(“Ingresar el nombre del vendedor: ”);
LeerYSaltar(Nombre);
Escribir(“Ingresar el monto de ventas: ”);
LeerYSaltar(MontoV);
Escribir(“Ingresar el numero de años en la empresa: ”);
LeerYSaltar(Nanios);
// Calcular la comisión:
Caso MontoV < LIM1 De
Verdadero: Comision PORC1 * MontoV;
Caso_Contrario
Caso MontoV < LIM2 De
Verdadero: Comision PORC2 * MontoV;
Falso: Caso MontoV <=LIM3 De
Verdadero: Comision PORC3 * MontoV;
Falso: Comision PORC4 * MontoV;
Fin Caso;
Fin Caso;
Fin Caso;
Caso Nanios > 6 De
Verdadero: Comision 2 * Comision;
Falso:;
Fin Caso;
Caso Nanios > 10 De
Verdadero: Comision Comision + 10 * (Nanios – 10);
Falso:;
Fin Caso;
// Despliegue de resultados:
EscribirYSaltar(Nombre,“ ha vendido “,MontoV,“ y tiene “,Nanios, “ años en la
empresa”);
EscribirYSaltar(“ por tanto recibe un ingreso de “, Comision);
Fin Programa Ventas4.
Bloque de instrucciones;
Programa CocienteResiduo;
// Declaración de variables:
Var
A, B, Cociente, Residuo: ENTERO;
Inicia CocienteResiduo
// Ingreso de datos:
Escribir(“Ingresar 2 valores enteros: “);
LeerYSaltar(A, B);
// Calculo del Cociente y Residuo:
Cociente 0;
Residuo A;
Mientras Residuo >= B Hacer
Inicia RestasSucesivas
Cociente Cociente + 1;
Residuo Residuo – B;
Fin Proceso RestasSucesivas;
// Despliegue de resultados:
EscribirYSaltar(“El cociente y residuo de “,A, “ y “, B, “ es: “,Cociente, “ y “,Residuo);
Fin Programa CocienteResiduo.
Repetir
Bloque de instrucciones
SOLUCION:
Programa CocienteResiduo;
// Declaración de variables:
Var
A, B, Cociente, Residuo: ENTERO;
Inicia CocienteResiduo
// Ingreso de datos:
Repetir
Escribir(“Ingresar el dividendo > 0: “);
LeerYSaltar(A);
Hasta que A > 0;
Repetir
Escribir(“Ingresar el divisor > 0: “);
LeerYSaltar(B);
Hasta que B > 0;
// Calculo del Cociente y Residuo:
Cociente 0;
Residuo A;
Mientras Residuo >= B Hacer
Proceso RestasSucesivas
Cociente Cociente + 1;
Residuo Residuo – B;
Fin Proceso RestasSucesivas;
// Despliegue de resultados:
EscribirYSaltar(“El cociente y residuo de “,A, “ y “, B, “ es: “,Cociente, “ y “,Residuo);
Fin Programa CocienteResiduo.
Implementar un programa en Seudo-codigo para ingresar y validar un entero mayor que
cero y calculardesplegando por pantalla sus factores primos
SOLUCION:
Programa FactoresPrimos;
// Declaración de variables:
Var
Num, aux, factor: ENTERO;
Inicia FactoresPrimos
// Ingreso de datos:
Repetir
Escribir(“Ingresar el numero > 0: “);
LeerYSaltar(Num);
Hasta que Num > 0;
Escribir(“LOS FACTORES PRIMOS DE ”, Num, “SON: 1 ”);
aux Num;
factor 2;
Repetir
Si aux MOD factor = 0 Entonces
Proceso DespliegaDescompone
Escribir(factor, “ “);
aux aux DIV factor;
Fin Proceso DespliegaDescompone
Caso_contrario
factor factor + 1;
Hasta que aux = 1;
EscribirYSaltar();
Fin Programa FactoresPrimos.
Desarrollar un programa para desplegar los numero naturales < 101 en orden ascendente.
SOLUCION:
Programa NumerosNaturalesAscendente;
// Declaración de variables:
Var
N: ENTERO;
Inicia NumerosNaturalesAscendente
// Generar y desplegar los números naturales:
Para N 1 a 100 Hacer
Escribir (N, “ “);
EscribirYSaltar();
Fin Programa NumerosNaturalesAscendente.
Desarrollar un programa para desplegar los numero naturales < 11 en orden descendente.
SOLUCION:
Programa NumerosNaturalesDescendente;
// Declaración de variables:
Var
N: ENTERO;
Inicia NumerosNaturalesDescendente
// Generar y desplegar los números naturales:
Para N 10 a 1 : -1 Hacer
Escribir (N, “ “);
EscribirYSaltar();
Fin Programa NumerosNaturalesDescendente.
CICLOS ANIDADOS:
Ejemplo.
Desarrollar el ejercicio 24 pag. 140.
SOLUCION:
Programa SerieExp;
// Declaración de constantes:
Const
error = 1E-6;
max = 20;
// Declaración de variables;
Var
expx, potencia, factorial, x, termino: REAL;
i, j, nter: ENTERO;
Inicia SerieExp
// Ingreso de datos:
Escribir(“Ingresar el exponente de e: “);
LeerYSaltar(x);
// Calculo de la serie:
expx = 0;
nter 0;
para i 0 a max hacer
Proceso CalculaSerie
Si i = 0 Entonces
potencia 1;
Caso_contrario
potencia x;
para j 2 a i hacer
potencia potencia * x;
factorial 1;
para j 2 a i hacer
factorial factorial * j;
termino potencia / factorial;
nter nter + 1;
expx expx + termino;
Si Abs(termino) <= error Entonces
Salir;
Fin Proceso CalculaSerie
// Desplegar resultados
EscribirYSaltar(“Exp(“, x, “) = “, expx, “Nro. De términos = “, nter);
Fin Programa SerieExp