Documentos de Académico
Documentos de Profesional
Documentos de Cultura
una solución.
Figura 1. Problema-
solución. Fuente: https://www.andresfuentesangarita.com/2017/01/si-no-eres-parte-de-la-solucion-
eres-parte-del-problema-2/
Según (Joyanes Aguilar & Zahonero Martínez, 2001) “las fases para la
resolución de un problema son:
Figura 2. Análisis del problema.
Fuente: http://profayadira.yolasite.com/resources/Diagas%20de%20flujo%20y%20pseudoc
odigos.pdf
El algoritmo está formado por pasos ordenados que dan las instrucciones
que la máquina debe de ejecutar, “la información que se proporciona al
algoritmo, constituye su entrada y la información producida por el algoritmo
constituye su salida”. (Fernández Cárdenas)
Para resolver problemas complejos, la manera más efectiva es cuando
se lo descompone en subproblemas, los cuales son más sencillos de
solucionar comparados con el original, este mecanismo se denomina divide
y vencerás.
(Fernández Cárdenas) afirma: “La descomposición del problema original
en subproblemas más simples y a continuación dividir estos subproblemas
en otros más simples se denomina diseño descendente (top-down design)”.
Para la obtención de un algoritmo claro, completo, y eficaz es necesario
varios niveles de refinamiento, especialmente si es un problema complejo.
El Pseudocódigo.
Los Diagramas de flujo de datos (DFD).
Por su parte los pseudocódigos tratan de un falso lenguaje que solo puede ser
entendible para ser humano, pero no puede ser comprendido o interpretado por una
máquina (computador), está pensado como la representación de un algoritmo que
es diferente de otros lenguajes de programación.
En esta fase se lleva a cabo la ejecución del problema, utilizando datos variados de
entrada, también conocidos como datos de prueba, que ayudarán a determinar los
errores (“bugs”) dentro programa. Para verificar se necesitará datos de prueba de
diferentes gamas como: valores corrientes de entrada, valores de entrada
exagerados que ayudarán a ver las limitaciones del código y otros valores que
comprueben aspectos específicos del programa.
ANÁLISIS.
El único dato de entrada es el radio del círculo, sin embargo, este dato puede
ser cualquier valor dentro del conjunto de los numero reales positivos.
DISEÑO.
Figura 3. Descomposición
del problema.
Fuente:http://profayadira.yolasite.com/resources/Diagramas%20de%20flujo%20y%20pseudocodig
os.pdf
1. Inicio
2. Ingresar el valor del radio
3. Calcular la superficie
4. Calcular la Longitud
5. Imprimir el valor del Radio
6. Imprimir el valor de la Superficie
7. Imprimir el valor de la Longitud
8. Fin
Al describir un algoritmo es necesario ser lo más preciso posible, de modo que sea
sencillo implementarlo.
Es necesario entonces:
1. Lenguaje natural.
2. Pseudocódigo.
Comienza con la palabra clave Algoritmo o Proceso, seguida del nombre del
programa.
Secuencia de instrucciones
Finaliza con la palabra FinAlgoritmo o FinProceso.
Una secuencia de instrucciones es una lista de una o más instrucciones y/o
estructuras de control. El conjunto de instrucciones del programa debe ir
entre delimitadores para indicar su inicio y su final.
Cada acción finaliza con un punto y coma.
Las instrucciones de un proceso se escribirán con sangría respecto a sus
delimitadores para resaltar dicho proceso.
Ejemplo:
Estos diagramas utilizan una serie de símbolos con significados especiales y son
la representación gráfica de los pasos de un proceso.
Simbología
Figura 3.
Diagrama de flujo de
datos.Fuente: https://sites.google.com/site/soporteadistancia117360/home/diagrama-de-flujo
Ejemplo:
Desarrollar en diagrama de flujo el algoritmo para sumar dos números.
Por otro lado, la semántica se refiere al significado que tienen las instrucciones
(coherencia y concordancia).
Numérico
Entero: Subconjunto finito de números únicamente enteros donde el rango
dependerá del lenguaje de programación donde realicemos el algoritmo.
Lógico
Conjunto conformado por valores VERDADERO y FALSO.
Carácter
Un carácter es un tipo de dato donde cada letra o signo por individual tiene un
valor de 1 Byte, siendo el tipo de dato más ligero en comparación a otros.
Los tipos de datos primitivos se les definen como las variables o constantes que va
a poseer un programa.
char
int
float
double
bool
Tiene un rango de valores que se le puede asignar de 0 hasta 255 sin signo y
de -128 hasta 127 con signo.
Se puede declarar solo como int y por defecto se tomará como un entero largo.
La diferencia en los tipos de enteros es que el entero corto ocupará 4 bytes (32 bits)
en la memoria
Una variable es una posición en la memoria donde dependiendo del tipo de dato,
podrá almacenar información correspondiente al dato. Son todos aquellos valores
que pueden o no cambiar en el transcurso de un algoritmo.
Pseudocódigo
La declaración o inicialización de las variables en pseudocódigo a través de la
herramienta PSeint se la puede realizar de la siguiente manera:
El uso de cada tipo de variable va sujeto a las necesidades del algoritmo que
deseamos desarrollar. Si tenemos muchas variables del mismo tipo, podemos
agrupar las variables separándolas con comas.
Diagrama de Flujo
Para declarar variables, se utiliza las cajas rectangulares, podemos observar que
existen diferentes tipos de datos.
Figura 2. Diagrama de flujo de creación de variables. Fuente: Autoría propia.
Lenguaje C++
En el lenguaje C++ las variables deben ser declaradas al inicio del código para
su posterior uso en cualquier operación que se realice.
Para declarar un variable en lenguaje C++ primero se debe especificar qué tipo
de dato se piensa utilizar, luego se debe dar un nombre a la variable, el cual debe
empezar con letra minúscula para diferenciarlas de las constantes y si el nombre
contiene más de una palabra se deberán separa con un guion bajo “_” o con una
letra mayúscula en la segunda palabra.
Ejemplo:
int nota_alumno;
Si se va a declarar más de una variable del mismo tipo, se pueden separar con
una coma “,”, en la asignación de valores de una variable se debe introducir el signo
igual “=” donde posteriormente se asignará cualquier valor o carácter dependiendo
el tipo de datos que sea y cuando este declara que tipo de dato, nombre y valor,
finalizando la declaración de las variables con un ";".
Figura 3. Identificación de variables y tipos de datos. Fuente: Autoría propia.
Asignación de Valores
Pseudocódigo
Diagrama de Flujo
Lenguaje C++
Una vez que la variable ha sido definida, está lista para almacenar datos, como
se puede observar en el ejemplo, la variable ya está guardando el valor de 12 al
momento de realizar la declaración.
Una variable, puede ser declarada para funcionar en distintas partes del
programa o únicamente en una sola parte.
Son valores de cualquier tipo de datos que se mantienen fijo en todo el transcurso
del programa, y que por ningún motivo este va a cambiar.
Pseudocódigo
Diagrama de Flujo
Al declarar constantes, se utiliza al igual que las variables las cajas rectangulares,
como se puede observar en el siguiente gráfico:
Lenguaje C++
Para declarar una constante hay dos maneras de hacerlo el cual la sintaxis para
cada uno es diferente donde declarar mediante el comando define y el uso del
modificador const.
Comando #Define
Esta instrucción permite declarar una constante (además de otras) de una
manera muy cómoda y sencilla. Cabe recalcar que se puede usar este comando
después de haber declarado las librerías.
Figura 9.Declaración de constantes en C++.Fuente: Autoría propia.
Modificador CONST
La instrucción const permite declarar o convertir una variable en una constante,
siendo imposible modificar su valor después de ser declarada como constante.
Asignación de Valores
Diagrama de Flujo
El valor de una constante representada a través de un diagrama de flujo va
representado mediante una caja rectangular, así:
Lenguaje C++
El valor o valores de una constante se pueden agregar únicamente al momento
de su declaración.
Figura 1.Operadores.
Fuente: http://www.utn.edu.ec/reduca/programacion/fundamentos/expresiones.html
1. Definición
El Pseudocódigo dispone de un conjunto básico de operadores que
pueden ser utilizados para la construcción de expresiones simples y
complejas.
Operadores Relacionales
Son operadores que toman dos valores lógicos y realizan comparaciones
devolviendo un valor entero “1” cuando es verdadero o “0” cuando es falso.
== (igual que) a == b 0
!= (diferente que) a != b 1
Operadores de Asignación
Es una operación que se le representa con el signo igual “=” y su principal
función es la de asignar valores a una variable y se considera una instrucción,
también se puede realizar una instrucción que contenga el operador de asignación
y al mismo tiempo un operador aritmético.
EJEMPLO
num = 23;
Operadores Aritméticos
Los operadores aritméticos son operaciones que toman dos valores numéricos
y devuelve un valor único a la variable que se le esté asignando la operación.
Instrucción
num = num + 7;
num = num - 7;
num = num * 7;
num = num / 7;
num = num % 7;
Operaciones Lógicos
Son expresiones booleanas que cumplen una tabla de verdad para sus
operadores y como resultado devuelve un valor de verdad (1) o falso (0).
a &&
a b
b
0 0 0
0 1 0
1 0 0
1 1 1
Or Lógico (||)
Este operador va a devolver un “0” o falso si las dos expresiones son falsas.
a b a || b
0 0 0
0 1 1
1 0 1
1 1 1
a !a
0 1
1 0
Incremento (++)
Es un operador aritmético que incrementa el valor de la variable.
Prefijo: El ++ se pone antes del operando, con lo que C++ lleva a cabo la
operación de incremento antes de utilizar el valor del operando.
Sufijo: El ++ se pone después del operando, con lo que C++ utiliza su valor
antes de realizar la operación de incremento
Ejemplo 1:
Se escribe:
x=9;
y=++x;
Pero, si se escribe:
x=9;
y=x++;
Ejemplo 2:
int toyota;
toyota = 2001;
También es importante recalcar que algunos operadores tienen más prioridad que
otros empezando del uso del paréntesis.
1. ()
2. Exponeciación, radicación, módulo
3. *, /
4. +-
Ejemplo:
Las funciones pueden ser usadas en cualquier expresión, por ejemplo si se tiene
una variable "numero" y es de tipo real, pero solo se quiere la parte entera se usa
la función trunc().
Las funciones son como una caja negra; es decir, sabemos el resultado que
genera pero no se sabe como las realiza internamente.
Ejemplo
C<- 5*4+8/2-1
Ejemplo 1:
Ejemplo 2
a=4;
Ejemplo 3:
a=4;
x=( ++a - 12) * ( a – 8):
Estos errores se producen cuando están mal escritas las instrucciones del código
fuente. Se deben a palabras o expresiones escritas de forma errónea o incompleta,
variables que no son declaradas, falta de algún signo, etc. Este error es detectado
cuando el programa es puesto en marcha o ejecutado y el compilador muestra una
lista de los errores de sintaxis. («Codificación de un programa | Tutorial de
Programación | Abrirllave.com», s. f.)
Ejemplo:
Estos errores son poco perceptibles y se producen cuando la sintaxis del código
está escrita de forma correcta, pero el significado no es el que pretendía.
Un error puede hacer que el programa se ejecute de una forma muy diferente con
un mensaje de error, ya que ni el compilador ni el sistema proporcionan información
sobre qué es lo que está fallando. («Errores semánticos | Compilador | Lenguaje de
programación», s. f.)
Ejemplo:
1. int x=5,r;
2. r = x/2;
3. cout<<r<<endl;< span=""></r<<endl;<>
El valor esperado de “r” es 2.5 pero la variable “r” es una variable de tipo entero, por
lo que solo toma la parte entera de la operación.
Ejemplo 2:
1. string nombre;
2. nombre = “José”;
3. apellido = “Zambrano”;
4. cout<<”El nombre y apellido es: ”<<nombre<<apellido<<endl;<
span=""></nombre<<apellido<<endl;<>
Son los que se producen cuando un programa es ejecutado, son los más difíciles de
detectar por el compilador, ya que es error de lógica y no de sintaxis, por ejemplo:
realizar una suma en vez de una multiplicación o la división de un número entre
cero.
Figura 10. Error en tiempo de ejecución, división entre cero. Fuente: Autoría propia.
Figura 11. Error en tiempo de ejecución, división entre cero. Fuente: Autoría propia.
//Var
i<-6;
k<-33;
x<-0.123;
y<-1.40E-1;
z<- 0.3E-3
Para cada expresión siguiente analizar los errores indicando de qué tipo son; si
no existen errores, quitar de la expresión todos los paréntesis innecesarios y luego
evaluar la expresión escribiendo su valor resultante.
-(i ^ (2*k))
Antes de escribir un código, el programador debe entender con claridad que datos
van a usarse, el resultado deseado y el procedimiento que va a utilizarse para
producir este resultado.
Las funciones de E/S de la consola nos permiten controlar la entrada por teclado
y la salida por pantalla.
Lectura
“Consideramos como entrada aquella operación que nos permite leer un valor,
para después asignársela a una variable o más variables determinadas. Por lo tanto,
el comando leerá uno o más variables” (Antonio, 2013).
PSEUDOCODIGO
Ejemplo:
Leer num1;
Leer num1,num2;
En el segundo ejemplo de la misma manera se pide que ingrese dos valores por
teclado, los cuales al presionar Enter se almacenarán tanto en la variable num1
y num2 respectivamente.
Para guardar un valor en una variable, la misma debe estar creada con
anterioridad, caso contrario nos emitirá un error.
Si la variable existe, esta pierde su valor anterior ya que tomará el valor nuevo,
por lo cual se dice que la lectura es "destructiva".
DIAGRAMA DE FLUJO
Figura 1. Símbolo de entrada. Herramienta Pseint. Fuente: Autoría propia.
Salida
“Consideramos como salida aquella operación que nos permite dar escritura o
impresión de un valor, con el fin de enseñar al lector el resultado de una variable o
más de manera general” (Antonio, 2013).
PSEUDOCODIGO
Ejemplo:
EJEMPLO
Escribir Sin Saltar , ... , ;
DIAGRAMA DE FLUJO
Ejemplo de Entrada/Salida
Pseudocódigo
Proceso Suma_Resta_Multiplicacion_Division
Leer numero1;
Leer numero2;
//variable multiplicacion
FinProceso
Diagrama de flujo
Entrada :cin()
La instrucción cin puede usarse para introducir y almacenar tantos valores como
símbolos de extracción, >>, y variables que haya para contener los datos
introducidos. Tomando el valor de flujo de su izquierda y lo sitúa en la variable
situada a la derecha.
Formato de instrucción
Ejemplo
#include
int main()
int i;
cin>>i;
Salida : cout()
Mediante los valores de las variables se pueden enviar a la pantalla con cualquier
combinación de variables y cadenas. cout es usado como operador de inserción,
“<< “.
Ejemplo:
#include
return 0;
La cadena control determina como se lee los valores de las variables como
especificador de formato.
Formato de la función
Figura 5. Especificadores de formato para la función scanf() y prinf().Fuente: Autoría propia
Para esto se agrega los especificadores, para que su salida sea modificada. Por
ejemplo, se especifica el número de decimales y su justificación hacia la izquierda.
Se coloca el símbolo % y el código, de forma que esté en medio de las dos, además
se puede usar más de un modificador en el mismo sitio.
c.Entero. Este permite que los dígitos que aparezcan por cada número a
imprimir.
#include
int main()
printf("%3.8d \n",109000);
return 0;
3. Ajuste de Salida: Todas las salidas están ajustadas a la longitud derecha del
campo a una longitud mayor que el dato que el de imprimir.
Ejemplo:
#include
#include
int main()
double num;
return 0;
En este ejemplo se usa como especificador de formato el %lf que es usado para
datos long double (especificador de coma flotante).
Entrada
1. getchar()
getchar(void);
2. getche()
3. getch()
El getche() y getch() no son parte del ANSI, pero son las más utilizados.
Salida
putchar()
putchar(int c);
Ejemplo
#include
#include
#include
int main ()
char variable;
putchar(variable);
return 0;
Entrada:gets()
Lee una cadena de caracteres insertada por teclado, mientras se pulse el retorno
y es almacenada en la dirección apuntada por el argumento (puntero a carácter.
Salida: puts()
Escribe en pantalla la cadena apuntada por su argumento. Donde el carácter nulo
se transforma en un carácter de salto de línea, en caso de algún error.
El prototipo de la función puts() es:
puts(char *cadena);
Ejemplo:
#include
#define TAM_MAXIMO 80
int main()
char cadena[TAM_MAXIMO];
gets(cadena);
puts(cadena);
return 0;
Estructura Secuencial
Estructura Condicional
Instrucción 1;
Instrucción 2;
…
Instrucción n;
PSEUDOCODIGO
Figura 1. Asignación
Pseudocódigo. Fuente: Autoría propia.
DIAGRAMA DE FLUJO
Figura 2. Asignación
Diagrama de flujo. Fuente: Autoría propia.
CODIFICACION EN C++
Figura 3. Asignación ,
Codificación C++. Fuente: Autoría propia.
PSEUDOCODIGO
DIAGRAMA DE FLUJO
CODIFICACION EN C++
Figura 6. Escritura Codificación C++. Fuente: Autoría propia.
Así como su nombre dice se puede asignar valores a las variables también se puede
leer el contenido que almacenan las respectivas variables.
PSEUDOCODIGO
DIAGRAMA DE FLUJO
CODIFICACION EN C++
Figura 9. Lectura Codificación C++. Fuente: Autoría propia.
Esta instrucción se basa en una condición cuyo requerimiento debe ser cumplido
para que se ejecute la misma, caso contrario el mismo no se ejecutará.
PSEUDOCODIGO
Si <condición> Entonces</condición>
FinSi
Esta condición debe ser evaluada como verdadera o falsa, para lo cual se
utilizan los operadores de relación.
DIAGRAMA DE FLUJO
Figura 11. Condicional Si-entonces Diagrama de flujo. Fuente: Autoría Propia.
CODIFICACION C++
Sintaxis:
If (condición) {
Instrucción;
PSEUDOCODIGO
La estructura está conformada por:
Si <condición> Entonces</condición>
SiNo
FinSi
DIAGRAMA DE FLUJO
Figura 14. Condicional Si-
sino Diagrama de flujo. Fuente: Autoría Propia.
CODIFICACION C++
Sintaxis:
if (condición) {
Instrucción1;
} else {
Instrucción 2;
Si (condición 1) entonces
Instrucción 1;
SiNo
Si (condición 2) entonces
Instrucción 2;
SiNo
Instrucción 3;
FinSi
FinSi
PSEUDOCODIGO
Figura 16. Condicional Si anidado Pseudocódigo. Fuente: Autoría propia.
DIAGRAMA DE FLUJO
CODIFICACION EN C++
Sintaxis:
if (condición 1) {
Instrucción 1;
} else if (condición 2) {
Instrucción 2;
} else {
Instrucción 3;
}
Figura 18. Condicional Si anidado Diagrama de flujo. Fuente: Autoría propia.
Segun Hacer
<número1>: </número1>
<...>
De Otro Modo:
FinSegun
PSEUDOCODIGO
Figura 19. Condicional
Según-Hacer Pseudocódigo. Fuente: Autoría propia.
DIAGRAMA DE FLUJO
CODIFICACION EN C++
Sintaxis:
switch (valor) {
case valor 1:
Instrucción 1;
break;
case valor 2:
Instrucción 2;
break;
case valor n:
Instrucción n;
Break;
Sintaxis:
Para
Sintaxis:
La sentencia for está conformada por:
Las instrucciones
Inicio: El inicio se ejecuta solo en el primer ciclo. El inicio consiste en una variable
inicializada.
Proceso tabla
x1<-x*2;
Escribir "2X",x,"=",x1;
FinPara
FinProceso
int main() {
int x,x1;
for (x=1;x<=12;x++) {
x1 = x*2;
return 0;
Repaso el código:
En este ejemplo se ha utilizado la librería iostream y el espacio de nombres (using
namespace std) para usar el (cout y cin) en la entrada y salida de datos.
x1 = x*2
Sintaxis
Mientras<condición>Hacer</condición>
Instrucciones;
En diagrama de Flujo
Mientras
Esta estructura permite que el programa se repita mientras se cumpla una cierta
condición se usa” while”. En la sentencia while no se conoce el número de
repeticiones que tendrá el código, simplemente se repetirá los ciclos que sean
necesarios hasta que la condición definida no se cumpla.
La sintaxis:
While (condición) {
Instrucciones;
PSEUDOCODIGO
Proceso Adivina_Numero
Leer num_ingresado;
Si num_secreto>num_ingresado Entonces
SiNo
FinSi
Leer num_ingresado;
FinMientras
Si num_secreto=num_ingresado Entonces
SiNo
FinSi
FinProceso
(Pseint, 2019)
DIAGRAMA DE FLUJO
Figura 5.Diagrama de flujo. Fuente: Autoría propia
CODIFICACION EN C++:
int main() {
int intentos;
int num_ingresado;
int num_secreto;
if (num_secreto>num_ingresado) {
} else {
cout << "Le quedan " << intentos << " intentos:" << endl;
if (num_secreto==num_ingresado) {
cout << "Exacto! Usted adivino en " << 11-intentos << " intentos." <<
endl;
} else {
cout << "El numero era: " << num_secreto << endl;
return 0;
Repetir-Hasta
Sintaxis
Repetir
< instrucciones >
Note que, dado que la condición se evalúa al final, las instrucciones del cuerpo
del ciclo serán ejecutadas al menos una vez.
Do-while
Sintaxis
do {
Instrucciones.
PSEUDOCODIGO
Proceso repetir_
Repetir
leer clave;
Si clave <> 12345 Entonces
FinSi
Escribir "Bienvenido";
FinProceso
DIAGRAMA DE FLUJO
CODIFICACION EN C++:
int main()
int valida=12345;
int clave;
do///especificación
if(clave!=valida)printf("No valida?\n");
while (clave!=valida);
return 0;