Está en la página 1de 72

Un problema es una abstracción de la realidad para la cual nos interesa conocer

una solución.

Una solución es un procedimiento o método para establecer el mecanismo de


transformación del mundo que nos lleve a satisfacer ciertos requerimientos.

Figura 1. Problema-
solución. Fuente: https://www.andresfuentesangarita.com/2017/01/si-no-eres-parte-de-la-solucion-
eres-parte-del-problema-2/

La computadora es el principal instrumento para la realizar una segunda lectura, en


el proceso siempre nos lleva a la codificación y ejecución de un programa. Este
proceso debe plantear programas creativos que el usuario se las ingenie para poder
dar solución a cualquier problema que surja.

Según (Joyanes Aguilar & Zahonero Martínez, 2001) “las fases para la
resolución de un problema son:

 Análisis del problema


 Diseño del algoritmo
 Herramientas de programación
 Codificación de un programa
 Compilación y ejecución de un programa
 Verificación y depuración de un programa
 Documentación y mantenimiento”

 Para analizar el problema se debe de tener en claro las especificaciones de


los requisitos si se quiere obtener una solución adecuada. Según (Fernández
Cárdenas) en “esta fase el objetivo es ayudar al programador a que llegue a
una cierta comprensión de la naturaleza del problema”.
 “Una adecuada definición del problema junto con las especificaciones de
entrada y salida nos ayudan a poder definir con precisión el problema, los
cuales son los requisitos fundamentales para una solución
eficaz” (Fernández Cárdenas).
 Para conseguir una idea del problema en general y lo que se requiere, se
realiza una primera lectura.
 Con una segunda lectura se pretende adquirir los resultados deseados y
los datos necesarios que resolverán el problema.


 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.

En la programación las herramientas para diseñar algoritmos más utilizados son:

 El Pseudocódigo.
 Los Diagramas de flujo de datos (DFD).

“Los diagramas de flujos o flujogramas son representaciones gráficas de un


algoritmo o proceso.” (Joyanes Aguilar & Zahonero Martínez, 2001) Estos
diagramas utilizan señaléticas con significados definidos que representan las fases
del algoritmo, y representan el proceso de ejecución mediante flechas de dirección
que conectan los puntos de inicio y de fin del proceso.

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.

La codificación es la escritura del algoritmo en el lenguaje de programación elegido


. El código puede ser escrito fácilmente debido a que la estructura del algoritmo es
independiente del lenguaje.

“Para realizar la conversión del algoritmo en el programa se deben sustituir las


palabras reservadas en español por sus homónimos en inglés, y las
operaciones/instrucciones indicadas en lenguaje natural por el lenguaje de
programación correspondiente” (Joyanes Aguilar & Zahonero Martínez, 2001, pág.
51)

En esta etapa es necesario un programa editor, ya que el algoritmo se ha convertido


en un programa fuente, se lo introduce a la máquina y se los almacena en la
memoria. “Convirtiendo el programa en un archivo de programa. Posteriormente el
programa fuente debe ser traducido a lenguaje máquina, este proceso se ejecuta
con el compilador y el sistema operativo que se encarga de la
compilación”. (Joyanes Aguilar & Zahonero Martínez, 2001)

Luego de la compilación suelen presentarse errores (errores de compilación) en


el programa por lo que es necesario volver a revisar el código fuente, corregir los
errores presentados y compilar nuevamente hasta que esté libre de errores,
consiguiendo un programa objeto que todavía no es ejecutable directamente.

“A continuación, se debe instruir al sistema operativo para que realice la fase de


montaje o enlace (link), carga, con las bibliotecas del programa del compilador. El
proceso finalmente produce un programa ejecutable”.

Las órdenes para compilar y ejecutar, según los programas en C, C++,... o


cualquier otro lenguaje dependerá de su entorno de programación y del sistema
operativo en que se ejecute Windows, Linux, Unix, etc. (Joyanes Aguilar &
Zahonero Martínez, 2001, pág. 52)

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.

Al momento de ejecutar el código, se presenta los siguientes errores:

1. Errores de compilación. “Se originan por un uso equivocado de las reglas


que existen en los diferentes lenguajes de programación, se los conoce
también como error de sintaxis. Si existe este error, la máquina no puede
interpretar la instrucción, provocando que no se genere el programa objeto y
el compilador imprimirá una lista detallada de los errores encontrados durante
la compilación”.

2. Errores de ejecución. “Se provocan por instrucciones que la computadora


puede comprender, pero no ejecutar. Ejemplos típicos son: división por cero
y raíces cuadradas de números negativos. Aquí el programa paraliza la
ejecución del programa e imprime un mensaje de error”.

3. Errores lógicos. “Resultan de la estructura lógica del programa, el error se


llega a encontrar en el diseño del algoritmo. Debido a que el programa puede
funcionar correctamente y no produce errores de compilación ni de ejecución
se vuelve en uno de los errores más difíciles de detectar y sólo puede
advertirse el error por la obtención de resultados incorrectos. Aquí se deberá
volver a la fase de diseño del algoritmo, modificar el algoritmo, cambiar el
programa fuente y compilar y ejecutar una vez más” (Joyanes Aguilar &
Zahonero Martínez, 2001)

Al momento de encontrar ciertos errores dentro del código, se procede a la


depuración donde se eliminan y/o corrigen los errores presentados.

La documentación del problema es importante porque influye en el resultado final,


ya que consta de los pasos descritos que conllevan a la resolución de dicho
problema.

Los programas con escasa documentación son difíciles de leer, depurar,


modificar e imposibles de mantener

En un programa la documentación puede ser interna la cual se coloca “en líneas


de comentarios y externa donde se incluye análisis, pseudocódigos, diagramas de
flujo o manuales de usuario cuyas instrucciones ayudan a ejecutar e interpretar el
programa” (Joyanes Aguilar & Zahonero Martínez, 2001).

“La documentación es vital cuando se desea corregir posibles errores futuros o


bien cambiar el programa” (Joyanes Aguilar & Zahonero Martínez, 2001, pág. 53)

Para comprender el proceso para la resolución de problemas mediante la máquina,


se procederá a resolver el siguiente ejemplo:

Calcular e imprimir la superficie y la longitud la circunferencia, utilizando


como dato de entrada el radio de un círculo

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.

Las salidas del problema serán dos variables: superficie y longitud de la


circunferencia. El tipo de dato de estas variables también son los reales positivos.
Entradas: radio (variable RADIO).

Salidas: superficie (variable Área), y circunferencia del círculo (variable


Circunferencia).

Todas las variables de tipo real positivo.

DISEÑO.

La descomposición del problema se divide en lo que se quiere encontrar (Área-


Circunferencia) y el dato proporcionado (radio). A continuación, se muestra la
fragmentación del problema en subproblemas más simples.

Figura 3. Descomposición
del problema.
Fuente:http://profayadira.yolasite.com/resources/Diagramas%20de%20flujo%20y%20pseudocodig
os.pdf

Los pasos para solucionar el problema serían los siguientes

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

se puede definir a un algoritmo como un conjunto ordenado y finito de


operaciones que permite hallar la solución de un problema.

Los algoritmos no tienen que ver con ningún lenguaje de programación ya


que dado cualquier tipo de algoritmo puede convertirse en cualquier lenguaje de
programación en si el algoritmo es la base lógica antes de la programación.
La utilización de los algoritmos son la base esencial para la programación
su estructura tiene como modelo y como ejemplo la representación de
soluciones ante la toma de decisiones mediante pequeños pasos o procesos
que van conectados secuencialmente.

Básicamente el algoritmo es el medio universal de solución para después


codificarlo en cualquier lenguaje de programación.

A continuación se presentan las 5 propiedades planteadas por Donald Knuth:

 Carácter finito. "Un algoritmo siempre debe terminar después de un número


finito de pasos".
 Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las
operaciones a llevar a cabo deben ser especificadas de manera rigurosa y
no ambigua para cada caso".
 "Un algoritmo tiene cero o más entradas: Cantidades que le son dadas antes
de que el algoritmo comience, o dinámicamente mientras el algoritmo corre.
Estas entradas son tomadas de conjuntos específicos de objetos".
 "Un algoritmo tiene una o más salidas: cantidades que tienen una relación
específica con las entradas".
 Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de
que todas las operaciones a realizar en un algoritmo deben ser
suficientemente básicas como para que en principio puedan ser hechas de
manera exacta y en un tiempo finito por un hombre usando lápiz y papel".

Al describir un algoritmo es necesario ser lo más preciso posible, de modo que sea
sencillo implementarlo.

Es necesario entonces:

 Definir una serie de operaciones básicas con las cuales se hará la


especificación.
 A partir de las operaciones definidas, se debe proceder a enumerar los pasos
que componen el algoritmo.
 En esta etapa se debe tener en consideración el control de flujo del mismo:
o Secuencial.
o Decisiones.
o Iteraciones.

 Existen diferentes técnicas de escribir un algoritmo:

 1. Lenguaje natural.

 2. Pseudocódigo.

 3. Diagrama de flujo de datos (DFD).

 4. Diagrama de Nassi Schneiderman.


 Las técnicas a revisar en este tema serán el Pseudocódigo y el Diagrama
de flujo de datos (DFD).

Es una manera de facilitar la codificación del problema, es un paso antes de usar


un lenguaje de programación.

Su importancia radica en que puede ser traducido a cualquier lenguaje de


programación.

Forma General de un Algoritmo en Pseudocódigo

La estructura de un pseudocódigo es la siguiente

Figura 1. Estructura Pseudocódigo. Fuente: Autoría propia.

 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:

Desarrollar en Pseudocódigo el algoritmo para sumar dos números reales.


Figura 2. Suma dos números reales Pseudocódigo. Fuente: Autoría propia.

Un diagrama de flujo o flujograma es una forma de representar gráficamente los


pasos para resolver un problema en específico.

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.

Figura 4: Ejemplo Diagrama de flujo. Fuente: Autoría propia

a sintaxis es la serie de criterios o reglas que en programación deben seguirse para


indicar las respectivas instrucciones en un lenguaje de programación.

Por otro lado, la semántica se refiere al significado que tienen las instrucciones
(coherencia y concordancia).

Dato es un objeto o una representación simbólica, la cual podríamos mencionar


como variable.

Estos tienen algún valor o contenido con el que va a interactuar directamente


con el algoritmo.

El tamaño de dicho dato dependerá del lenguaje donde se programe.

Algunos de ellos son:

 Numérico: entero o real


 Lógico
 Carácter

Numérico
Entero: Subconjunto finito de números únicamente enteros donde el rango
dependerá del lenguaje de programación donde realicemos el algoritmo.

Real: Subconjunto de los números reales donde la precisión de los decimales es


limitado.

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.

La conformación, o la unión de varios caracteres se le denomina cadena de


caracteres.

Los tipos de datos primitivos se les definen como las variables o constantes que va
a poseer un programa.

Dependiendo del tipo de información que contengan, se determinará los valores


que pueden asignarse a un dato, además de las operaciones que se podrán realizar
con los valores.

Los tipos de datos básicos:

 char
 int
 float
 double
 bool

Tipo de dato char


Una variable de tipo char almacena en un espacio de memoria un carácter o un
dato de tipo entero pequeño, ya que ocupa 1 byte (8 bits) en la memoria.

Tiene un rango de valores que se le puede asignar de 0 hasta 255 sin signo y
de -128 hasta 127 con signo.

Tipo de dato int


El tipo de dato int almacenan solo números enteros donde mediante
modificadores se podrá elegir el tamaño del número como un entero corto (short int)
o un entero largo (long int).

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

Tipo de dato float


Es un tipo de dato de tipo flotante que almacenan números decimales en su
espacio de memoria donde su tamaño es de 4 bytes (32 bits) con un rango de
valores con 6 dígitos de precisión.
Tipo de dato double
Este tipo de dato posee un tamaño de memoria de 8 bytes (64 bits) con un rango
de valores amplio, cabe recalcar que este es un dato similar al Float pero con 10
dígitos de precisión.

Tipo de dato bool


Es un tipo de dato muy sencillo ya que este solo podrá almacenar dos únicos
valores que pueden ser verdadero o falso.

Su tamaño en la RAM (Memoria de Acceso Aleatorio) será de apenas 1 byte


(8 bits).

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.

Declaración de una variable

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:

Figura 1. Declaración de variables, PSeInt. Fuente: Autoría propia.

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.

Reglas para asignar nombres a una variable


Todas las variables están conformada por un nombre al que se denomina
como identificador. Para asignar un nombre a este identificador debe seguirse
reglas que se describen a continuación.

 La variable puede llevar caracteres numéricos o alfanuméricos: Letras de


la A a la Z (pueden ser mayúsculas únicamente para diferenciar una
segunda palabra en nuestra variable, o minúsculas) y números.

 No deben comenzar con un signo o número, siempre con una letra.


 Solo se acepta el signo de guion bajo, como parte del identificador.

 Existen palabras reservadas que NO pueden usarse como variables.

 El número máximo de caracteres que debe tener el identificador debe ser de


31.

 Siempre se recomienda relacionar (o nombrar) al identificador de acuerdo al


tipo de información que va a almacenar.

Asignación de Valores

Pseudocódigo

En PSeint bastará con colocar, por ejemplo, las siguientes instrucciones.


Figura 4. Creación de variables y asignación de variables.Fuente: Autoría propia.

Como se puede apreciar en la imagen, la asignación se realiza con dos signos,


"menor que" y "guión medio", quedando de esta manera: <- .

Diagrama de Flujo

Figura 5. Diagrama de flujo de asignación de valores. Fuente: Autoría propia.

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.

Un dato a tomar en cuenta es que el valor que va contener la variable únicamente


puede ser correspondiente al tipo de dato con el que la hemos declarado.

Figura 6. Declaración de variable.Fuente: Autoría propia.

Una variable, puede ser declarada para funcionar en distintas partes del
programa o únicamente en una sola parte.

Existen 2 tipos de variables:

 Globales: devuelven valores desde cualquier parte del programa, si bien


pueden ahorrar líneas de código, su uso también puede considerarse como
una mala práctica de programación, puesto que podría modificarse un valor
en alguna parte en la ejecución de nuestro programa.
 Locales: solo se pueden manipular en la parte o sección de nuestro código.

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.

Declaración de una constante

Pseudocódigo

En pseudocódigo, para declarar una constante se la declara al igual que las


variables pero en mayúsculas.
Figura 7. Declaración de constantes en PSeInt.Fuente: Autoría propia.

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:

Figura 8 .Diagrama de flujo de la declaración de constantes en PSeInt. Fuente: Autoría propia.

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.

Figura 10.Declaración de constante PI en C++.Fuente: Autoría propia.

Asignación de Valores

En pseudocódigo, para asignar el valor de una constante se escribe en primer


lugar el nombre de la constante en letras MAYÚSCULAS a la izquierda, precedido
de los signos (<- ) y luego su valor.
Figura 11.Asignación de valores en PSeInt.Fuente: Autoría propia.

Diagrama de Flujo
El valor de una constante representada a través de un diagrama de flujo va
representado mediante una caja rectangular, así:

Figura 12. Diagrama de flujo de asignación de valores en PSeInt.Fuente: Autoría propia.

Lenguaje C++
El valor o valores de una constante se pueden agregar únicamente al momento
de su declaración.

const listaDeAlumnos = 12;

Las constantes simbólicas o con nombre se pueden identifican por su nombre y


el valor que se le ha asignado. Una constante literal puede ser un valor de cualquier
tipo que se utiliza como tal. Además, cada constante puede ser:
 Numéricas enteras: El rango de los enteros. Compuesta por un signo (-,+) .
 Numéricas Reales: Compuestas por signos (+, -) seguido de una serie de
dígitos (0…9), que además tiene una parte decimal.

 Lógicas: Existen unicamente dos constantes lógicas, verdadero o falso.

 Carácter: Cualquier carácter del juego de caracteres utilizado colocado entre


comillas simples o apóstrofes. Los caracteres que reconocen las
computadoras son dígitos, caracteres alfabéticos, tanto mayúsculas como
minúsculas, y caracteres especiales.

 Cadena: Serie de caracteres válidos encerrados entre comillas simples.


(Joyanes, 2008, p.4).

 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 utilizados en el pseudocódigo:


 Figura 2. Operadores.
Fuente: Autoría propia.

 Para crear una expresión se debe utilizar los diferentes tipos de


operadores, siendo los operadores matemáticos los de mayor uso. Una
expresión es un conjunto o combinación de variables, constantes,
operadores y funciones: seno(a+30*PI).

 Los operadores relacionales permiten comparar dos expresiones , el


resultado de la comparación siempre tendrá dos resultados o verdadero o
falso. (7>2) = Falso

 Cuando se necesita comparar más de dos expresiones se utilizan los


operadores lógicos. ((3+2)<5) && (7<8) = Falso

 Los operadores algebraicos permiten operar variables numéricas. 7+2=9

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.

Operador Lógico Operación Resultado

== (igual que) a == b 0

!= (diferente que) a != b 1

< (menor que) a<b 1

> (mayor que) a>b 0

<= (menor o igual


a <= b 1
que)

>= (mayor o igual


a >= b 0
que)

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).

And Lógico (&&)


El operador and o “y” devuelve true solo si sus dos expresiones son
verdaderas.

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

Negación Lógica (!)


Este operando invierte el significado de la instrucción.

a !a
0 1

1 0

Incremento (++)
Es un operador aritmético que incrementa el valor de la variable.

El operador ++ aumenta en uno el valor de la variable y actualiza el valor de la


misma.

Hay dos tipos:

 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;

se asigna a "y" el valor de 10.

Pero, si se escribe:

x=9;
y=x++;

"y" toma el valor de 9.

En ambos casos "x" queda con el valor 10.

Ejemplo 2:
int toyota;
toyota = 2001;

En la variable entera toyota se asigna al valor 2001

Una expresión puede contener operadores lógicos, operadores aritméticos,


operadores relacionales y paréntesis, donde al momento de evaluar la expresión
sigue ciertos pasos dependiendo los operadores que contenga la expresión.

Evalúa lo que contenga dentro de los paréntesis “( )”.

1. Evalúa los operadores aritméticos.


2. Evalúa los operadores relacionales.
3. Evalúa los operadores lógicos.
4. En caso de que existan operadores iguales, los evalúa desde izquierda a
derecha.
5. Se evalúa la asignación.

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:

Figura 3. Jerarquía de Operadores:Fuente: Autoría propia


Algunas instrucciones o expresiones se evalúan dependiendo su asociatividad,
sin importar que sea de izquierda a derecha o derecha a izquierda, pero existen
operadores que tienen más prioridad que otros, por ende estos se evalúan primero.

Figura 4. Descripción del Operador. Fuente: Autoría propia


Figura 5. Operadores Relacionales. Fuente: Autoría propia

Existen operaciones que no pueden ser calculadas directamente al crear una


expresión, para ello los lenguajes de programación y el pseudocódigo utilizan
funciones.

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().

entero <- trunc(numero);

Las funciones son como una caja negra; es decir, sabemos el resultado que
genera pero no se sabe como las realiza internamente.

Una función en pseudocódigo se presenta como un subalgoritmo que forma


parte del algoritmo principal, el cual permite resolver una tarea específica.
Figura 6. Lista de funciones integradas en PseInt.
Fuente: http://algoritmoscolegio40.blogspot.com/2012/09/operadores-y-funciones-de-pseint.html

Una expresión es una combinación de constantes, variables o funciones, que es


interpretada de acuerdo a las normas particulares de precedencia y asociación para
un lenguaje de programación en particular.

Ejemplo

C<- 5*4+8/2-1

C<- 20+8/2-1 se multiplica 5*4

C<- 20+4-1 se divide 8/4

C<- 24-1 se suma 20+4

C<- 23 se resta 24-1


Para crear una expresión se necesita utilizar todos los operadores mencionados
conjuntamente con variables, constantes o valores numéricos, lógicos y caracteres
y funciones propias de los lenguajes.

Ejemplo 1:

Se debe colocar las expresiones ordenadas para que el resultado no se altere.

PSEUDOCODIGO CODIFICACION EN C++

x <- ((a+1) - 12) * (a - 8); x = (a++ - 12) * (a - 8);

Una expresión está conformada por operadores, paréntesis y funciones que al


momento de evaluarlas se cumplen algunas reglas que son: reglas de precedencia
de operadores, reglas de asociatividad y el uso de paréntesis.

Al evaluar cada expresión esta devuelve un valor donde se va evaluando con


mayor prioridad los operadores con mayor precedencia, al momento que ha dos
operadores de igual precedencia se aplica la regla de asociatividad, para evaluar
correctamente una expresión se toma en cuenta la jerarquía de operadores.

La evaluación de las expresiones se realiza de acuerdo a la precedencia


preestablecida.

Ejemplo 2

Evaluar la siguiente expresión de post incremento en C++.

a=4;

x = (a++ - 12) * (a - 8);

Figura 7. Evaluación de expresiones.Fuente: Autoría propia.


1. Se evalúa (a++ - 12) obteniendo "-8", a++ primero asigna el valor a la
variable (a=4) y después incrementa el valor (a=5).
2. Al evaluar (a-8) obtenemos "-3" por el incremento.
3. Al final con los resultados se realiza la multiplicación.

Ejemplo 3:

Evaluar la siguiente expresión de pre incremento en C++.

a=4;
x=( ++a - 12) * ( a – 8):

Figura 8. Evaluación de expresiones.Fuente: Autoría propia

1. Al evaluar (++a) se obtiene un nuevo valor para “a” = 5 ya que la operación


++a primero incrementa el valor de la variable y después asigna. Al operar
el paréntesis (5-12) = -7.
2. Si se evalúa (a - 8), se debe reemplazar los valores obtenidos, donde "a" es
igual a 5, (5-8) obteniendo el valor de "-3”.
3. Al final se realiza la multiplicación entre los resultados en este caso "-7" y "-
3" obteniendo como resultado 21.

Al momento de programar se tiende a cometer errores. Las personas comenten


errores al momento de realizar la codificación de un programa.

La programación tiene diferentes tipos de errores, unos fáciles de detectar y otros


difíciles de depurar.

Existen errores de compilación y de ejecución que son detectados al momento


de finalizar la codificación.

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.)

Este tipo errores impedirá, tanto al compilador como al intérprete traducir la


instrucción, ya que, ninguno de los dos podrá entender lo que está haciendo el
programador. («Errores en programación. Los errores al programar y su soluc», s.
f.)

Ejemplo:

1. cout<<”Ingrese un número”<<endl;< span=""></endl;<>


2. couut<<”Ingrese un número”<<endl;< span=""></endl;<>

En el ejemplo anterior en el ejemplo 1, cout es un flujo de salida estándar del


programa C++, que imprime en pantalla y en el ejemplo 2 cout está escrito de forma
incorrecta porque tiene "dos u" y el programa no lo puede interpretar por lo que lo
detecta como un error.

Figura 10. Error de sintáxis Codeblocks. Fuente: Autoría propia.

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.

La escritura obedece las reglas del lenguaje de programación y por ello el


compilador no detecta errores semánticos.

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;<>

En la primera línea la variable "nombre" está declarada como un string, pero la


variable apellido no está declarada y al momento de hacer la impresión no puede
realizarlo porque falta una variable por declarar.

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.

Asumir la siguiente declaración de variables:

//Var

Definir i,j,k como Entero;

Definir x,y,z como Real;

Definir e,f,g como Logico;

Definir a,b,c como Caracter;

//Las variables se han inicializado de la siguiente manera:

i<-6;

k<-33;

x<-0.123;

y<-1.40E-1;

z<- 0.3E-3

// Considerar las variables i y k de tipo Entero y las variables x, y, z de tiempo Real,


cuyos valores asignados son:

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.

 (-(3*z+y)/Abs(5Mod 8)+Rcuad(z-y/10)<x)o no(i<="">k)</x)o>


Figura 11. Ejemplo: Autoría propia

 y + (Abs (TRUNCA(z MOD y)*z ^ 2) * y – 5

Error de Sintaxis Error Semántico

El error de sintaxis se presenta porque está abierto un paréntesis que luego no


se lo cierra.

El error semántico se presenta porque el operador MOD solo se utiliza con


operandos enteros.

-(i ^ (2*k))

Figura 12. Ejemplo: Autoría propia


El error de ejecución se presenta porque se desborda el límite de la máquina
para almacenar los números enteros.

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.

El procedimiento, o solución, seleccionado se conoce como algoritmo.

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

Leer variable de entrada;

Ejemplo:

Leer num1;

Leer num1,num2;

La instrucción leer permite ingresar un valor o conjunto de valores de acuerdo a


las variables que se les asigne.

En el primer ejemplo se pide el ingreso un valor por teclado y cuando presione


Enter se almacenará en la variable num1.

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.

En la Figura 1 se representa la lectura. Se coloca las variables como se


encuentra en la imagen y si son varias variables se las separa por comas. La flecha
que se encuentra en la esquina superior derecha se encuentra apuntando hacia el
interior e indica que es una entrada.

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

Escribir “variable de salida”;

Ejemplo:

Escribir “Ingrese un valor a num1” ;

En este ejemplo la instrucción escribir mostrará una cadena de caracteres en


pantalla, en este caso el texto a mostrar es "Ingrese una valor a num1".

Si en alguna parte de la codificación se escribe las palabras clave como "SIN


SALTAR" o "SIN BAJAR “, los datos codificados se mostrarán en pantalla pero no
avanzará a la línea siguiente, por lo tanto, la siguiente lectura o escritura del código
continuará en la misma línea.

En caso contrario, si se desea que haga un salto de línea se coloca la instrucción


"Escribir".

EJEMPLO
Escribir Sin Saltar , ... , ;

Escribir , ... , Sin Saltar;

DIAGRAMA DE FLUJO

Figura 2. Símbolo de entrada. Herramienta Pseint.Fuente: Autoría propia.

En la Figura 2 se presenta el Diagrama de Flujo de Datos de la instrucción


Escribir. Si existe mas de una expresión, esta es separada por comas.

La flecha que está ubicada en la esquina superior derecha apunta hacia el


exterior indicando que es una salida.

Ejemplo de Entrada/Salida

Elaborar un algoritmo que lea dos números enteros, calculando y escribiendo


el valor de su suma, resta, producto y división.

 Pseudocódigo

Proceso Suma_Resta_Multiplicacion_Division

Definir numero1, numero2, suma, resta, multiplicacion, division como entero;

Escribir "Introduce el primer número";

Leer numero1;

Escribir "Introduce el segundo número";

Leer numero2;

suma<-numero1+numero2;//Suma los números y asigna el resultado a la


variable suma
Escribir "La suma es ", suma; //Mostrar el resultado de la suma por pantalla

resta<-numero1-numero2;//Resta los números y asigna el resultado a la


variable resta

Escribir "La resta es ", resta;

multiplicacion<-numero1*numero2;//Multiplica los números y asigna el


resultado a la

//variable multiplicacion

Escribir "La multiplicación es ", multiplicacion;

division<-numero1/numero2;//Divide los números y asigna el resultado a la


variable division

Escribir "La división es ", division;

FinProceso

 Diagrama de flujo

Figura 3. Diagrama de flujo. Herramienta Pseint. Fuente: Autoría


propia.
Para usar las palabras claves cin y cout se debe escribir la instrucción "using
namespace std", que permite usarlas. Este espacio de nombre permite simplificar
las instrucciones std::cin y std::cout.

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

cin >> num1;

Se produce un valor que se leerá en la terminal y que se asignará a la variable


num1.

Ejemplo

#include

using namespace std;

int main()

int i;

cout<<"introduzca un numero: "<<endl;< span=""></endl;<>

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

using namespace std;


int main()

cout<<"Hello Friend"<<endl;< span=""></endl;<>

return 0;

Nota: Estas instrucciones se encuentran en la biblioteca estándar y es


estrictamente necesario usar antes de implementar el int main el using namespace
std;.

Este tipo de función se encuentra en la librería <stdio.h>. La función printf() y


scanf() en C, permiten escribir o leer datos de cualquier tipo como caracteres,
cadenas y números.

Entrada con formato scanf()


Su propósito es leer todos los datos de cualquier tipo, convirtiéndolo a un formato
apropiado por interno. La sintaxis de comando requiere un especificador de formato
para saber qué tipo de dato va a interpretar y la dirección de una nueva variable, la
cual se obtiene escribiendo un "&" seguido de la misma.

El prototipo de scanf() es:

scanf (cadena_control, &argumento);

La cadena control determina como se lee los valores de las variables como
especificador de formato.

Los especificadores de formato establecen el formato de salida por pantalla de


los argumentos. La forma más sencilla de escribir un especificador de formato es
con el carácter (%) seguido de un carácter de conversión que indique el tipo de dato
del argumento.

La especificación de la función scanf() en el lenguaje C ANSI se muestra en


la Figura 5.

Formato de la función
Figura 5. Especificadores de formato para la función scanf() y prinf().Fuente: Autoría propia

Salida con formato :printf()


Depende del tipo de dato para que la variable sea impresa.

El prototipo de printf() es:

printf (cadena_control, argumento);

printf (char *cadena_control, argumento);


La cadena_control, se encuentra formada de dos elementos:

1. El primer elemento es el caracter que se mostrará en pantalla,.


2. El segundo elemento, incluirá los “especificadores de formato”, los cuales
definen la forma en que se mostrará el argumento, por ejemplo, los tipos: int,
char, etc.

 Los Argumentos: son expresiones o variables a imprimirse y pueden ser


omitidas.

Si un “especificador de formato” no tiene argumento, en el mejor caso, se


obtendrá datos sin sentido en la salida.

La función printf() toma la cantidad de caracteres escritos en la salida o un


valor que produzca un error.

El especificador de la función scanf() tiene exactamente el mismo formato


para la función prinf() en el lenguaje C ANSI, se muestra en la Figura 5.

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.

1. Especificador de longitud mínima: Permite guardar en un espacio de


memoria para la la impresión de la variable.

Figura 6. Especificador de longitud mínima.Fuente: Autoría propia

2. Especificador de precisión: Es un punto seguido de un entero, de acuerdo


al tipo de dato al que vayamos aplicar.

a. Punto flotante.Permite determinar las posiciones del decimal que se vaya a


imprimir.
b. Cadena de Caracteres. Es el valor máximo de caracteres que se van a
imprimir.

c.Entero. Este permite que los dígitos que aparezcan por cada número a
imprimir.

#include

int main()

printf("%4f \n", 102.345);

printf("%3.8d \n",109000);

printf("%10.15s \n", "Esto es facil");

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.

4. El modificador l y h: Se le aplican especificadores de formato d,i,x,o y u.

%ld: imprimirá un entero largo.

%hd: imprimirá un entero corto.

5. El modificador # y *: Si # procede a los especificadores f, e o g, el


cual asegura obtener un punto decimal y el * precede a la longitud mínima de campo
y la precisión pasando como argumentos a printf() en vez de utilizar una constante.

Ejemplo:

#include

#include

int main()

double num;

printf ("Introduce un numero decimal: ");


scanf ("%lf", &num);

printf ("Has introducido %lf", 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).

Permite únicamente la lectura y escritura. Estas se encuentran en la


librería conio.h.

Entrada
1. getchar()

Lee desde el teclado al carácter y lo guarda en la memoria temporal hasta que


se pulse la tecla de ENTER.

El prototipo de la función getchar() es:

getchar(void);

2. getche()

Lee el carácter con eco sin esperar ningún retorno.

El prototipo del getche() se encuentra en la librería , siendo similar al getchar().

3. getch()

Lee el carácter sin eco y tampoco espera el retorno, el cual no se mostrará en


pantalla el eco del carácter que se incluyó.

El getche() y getch() no son parte del ANSI, pero son las más utilizados.

Salida

 putchar()

Escribe su argumento de un tipo carácter en pantalla en la ubicación del cursor.

El prototipo de la función putchar() es:

putchar(int c);
Ejemplo

#include

#include

#include

int main ()

char variable;

while ( ( variable = getchar() ) != '0')

{ //no parara hasta que la la letra sea un numero cero

printf(" -Siiiii ");

putchar(variable);

getchar(); //Este getchar sirve solo para colocar una pausa

return 0;

Permite únicamente la lectura y escritura. Este tipo de funciones se encuentran en


la librería stdio.h.

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.

El prototipo de gets() es:

char *gets(char *cadena);

Esta función toma en primer lugar un puntero a la cadena, el cual se debe


asegurar que el array apuntado por la cadena no supere el límite.

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);

Esta función requiere mucho menos y se ejecuta de manera espacio.

Ejemplo:

#include

#define TAM_MAXIMO 80

int main()

char cadena[TAM_MAXIMO];

printf("Por favor, escriba una línea de no más de 80 caracteres:\n");

gets(cadena);

printf("La línea que has introducido es:\n");

puts(cadena);

return 0;

Nota: El uso del gets es algo complicado ya que la función no conoce el


tamaño del array, simplemente va leyendo datos de la entrada hasta que llega al
final.

La programación estructurada permite el ahorro de tiempo al momento de escribir


código por lo cual hace que el código sea más sencillo de entender, mantener y
modificar. Este tipo de programación tiene las siguientes estructuras:

 Estructura Secuencial
 Estructura Condicional

Consiste en ejecutar instrucciones de modo que se da una después de otra, se


agrupan en una serie ordenada y además, el orden de las instrucciones se establece
en el propio algoritmo.
La forma de una estructura secuencial es la siguiente:

Instrucción 1;
Instrucción 2;

Instrucción n;

Esta es la estructura fundamental de cualquier algoritmo estándar.

Como su nombre lo indica permite asignar un valor que debe pertenecer a la


misma naturaleza que la variable.

PSEUDOCODIGO

Sintaxis: <- <expresión>;</expresión>

En este ejemplo podemos observar que para asignar una variable


debemos usar el signo menor que “<” y el guion “-”.

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.

En el ejemplo dentro de C++ podemos ver que para asignar un valor


debemos hacer uso del signo igual “=”.

Permite imprimir un mensaje en la pantalla de la consola o sistema.

PSEUDOCODIGO

Sintaxis: Escribir , ,..., ;

Para poder imprimir un mensaje debemos hacer uso de la


expresión Escribir y lo que queremos que nos muestre la pantalla entre comillas
dobles.
Figura 4. Pseudocódigo Escritura. Fuente: Autoría propia.

DIAGRAMA DE FLUJO

Figura 5. Escritura Diagrama de flujo. Fuente: Autoría propia.

El símbolo utilizado para la escritura es el que se encuentra en el gráfico de


color verde, para diferenciar de la lectura, podemos observar en la parte superior
derecha del gráfico una flecha hacia arriba.

CODIFICACION EN C++
Figura 6. Escritura Codificación C++. Fuente: Autoría propia.

En C++ para imprimir un mensaje debemos usar la librería iostream y hacer


uso de las expresiones cout<< Igualmente el mensaje debe ser escrito entre
comillas dobles.

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

Sintaxis: Leer , , ...,;

Primero deberemos definir las variables a usar durante la construcción de


nuestro algoritmo y luego hacer uso de la expresión Leer a continuación de la
variable que queremos que sea leída.

Es aconsejable colocar antes un mensaje, que permita al usuario saber qué


es lo que está ingresando, en el ejemplo podemos observar que se coloca el
mensaje “Ingrese un Número”, el cuál le ayuda al usuario a darse cuenta de lo que
tiene que ingresar por medio del teclado.
Figura 7. Lectura Pseudocódigo. Fuente: Autoría propia.

DIAGRAMA DE FLUJO

Figura 8. Lectura Diagrama de flujo. Fuente: Autoría propia.

CODIFICACION EN C++
Figura 9. Lectura Codificación C++. Fuente: Autoría propia.

Debemos definir las variables a usar durante la construcción de nuestro


algoritmo y luego hacer uso de la instrucción cin>> que está dentro de la
librería iostream.

Se basa en incluir una condición que determinará la manera en la que se lleva a


cabo una instrucción, basado en la respuesta que se recibe, que será relacionada
con la condición de la que se dispone.

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

La estructura está conformada por:

Si <condición> Entonces</condición>
FinSi

Condición: Es una expresión o conjunto de expresiones, que se tiene que


cumplir con el fin de que se ejecute la instrucción.

Esta condición debe ser evaluada como verdadera o falsa, para lo cual se
utilizan los operadores de relación.

Su uso se da si se desea realizar una acción únicamente si se cumple la


condición especificada.

También denominada SI Simple, permite evaluar un conjunto de


instrucciones siempre y cuando la condición se cumple (se evalúe como verdadera).

En el ejemplo, podemos observar que si el número ingresado está dentro


del rango (valores menores que 10), se imprime un mensaje.

Figura 11. Condicional Si-entonces Pseudocódigo. Fuente: Autoría Propia.

DIAGRAMA DE FLUJO
Figura 11. Condicional Si-entonces Diagrama de flujo. Fuente: Autoría Propia.

CODIFICACION C++

Sintaxis:

If (condición) {

Instrucción;

Figura 12. Condicional Si-entonces Codificación C++. Fuente: Autoría Propia.

Esta instrucción comparte similitudes con la anterior con la diferencia de que si no


se cumple la condición se ejecutará otra instrucción especificada dentro del
condicional

PSEUDOCODIGO
La estructura está conformada por:

Si <condición> Entonces</condición>

SiNo

FinSi

Condición: En caso de cumplirse, el mismo ejecutará la instrucción de si


caso contrario ejecutará la instrucción en sino.

Su uso se da para cuando se desea tener dos respuestas a partir del


cumplimiento de una condición.

Aquí estableceremos las acciones verdaderas y falsas que el algoritmo


reconocerá a través de las condiciones de Si-SiNo.

Figura 13. Condicional Si-sino Pseudocódigo. Fuente: Autoría Propia.

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;

Figura 15. Condicional Si-sino Codificación C++. Fuente: Autoría Propia

Esta instrucción permite la inclusión de un condicional dentro de otro de modo que


permite la especificación de varias condiciones simultáneas. Este tipo de estructura
se utiliza cuando tengo un problema con más de una respuesta.
La estructura está conformada por:

Si (condición 1) entonces

Instrucción 1;

SiNo

Si (condición 2) entonces

Instrucción 2;

SiNo

Instrucción 3;

FinSi

FinSi

Esta instrucción se usa habitualmente para cuando se necesite extender una


sentencia SI para que acepte más opciones.

Se podrán presentar cuantas condiciones a cumplir se quieran, pero si


ninguna de las condiciones antes puestas se cumple el algoritmo tomara la última
opción.

PSEUDOCODIGO
Figura 16. Condicional Si anidado Pseudocódigo. Fuente: Autoría propia.

En el ejemplo podemos observar que se puede tener 3 opciones, la


primera si el número es menor o igual a 10 y desplegará el mensaje “El número
está en rango”, la segunda respuesta “Número en rango de 15”, aparece si el
número ingresado es mayor que 10 y menor o igual a 15, y si no se cumplen
ninguna de las anteriores desplegará en el mensaje “El número está fuera de
rango”.

DIAGRAMA DE FLUJO

Figura 17 Condicional Si anidado Diagrama de flujo. Fuente: Autoría propia.

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.

“Esta instrucción permite ejecutar opcionalmente varias acciones posibles,


dependiendo del valor almacenado en una variable de tipo numérico. Al ejecutarse,
se evalúa el contenido de la variable y se ejecuta la secuencia de instrucciones
asociada con dicho valor.” (gonzales, 2016)

Utiliza la siguiente estructura:

Segun Hacer

<número1>: </número1>

<número2>, <número3>: </número3></número2>

<...>

De Otro Modo:

FinSegun

Esta instrucción se utiliza en la mayoría de algoritmos para la creación de


menús.

Esta estructura condicional se basa en acciones de opción múltiple; si el


usuario ingresa una opción por teclado que este dentro de las opciones declaradas
se ejecutará una acción en específico, por otro lado si no se ingresa una opción
declarada el algoritmo se dará por finalizado.

PSEUDOCODIGO
Figura 19. Condicional
Según-Hacer Pseudocódigo. Fuente: Autoría propia.

DIAGRAMA DE FLUJO

Figura 20. Condicional


Según-Hacer Diagrama de flujo. Fuente: Autoría propia.

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;

Break: Esta sentencia en C++ permite finalizar cada una de las


instrucciones establecidas en el algoritmo. Si esta sentencia no se coloca después
de cada instrucción el algoritmo seguirá ejecutando la siguiente instrucción, aunque
esta no esté dentro de la opción escogida.

Figura 21. Condicional Según-Hacer Codificación C++. Fuente: Autoría propia.

on estructuras que permiten las repeticiones de instrucciones hasta cumplir la


condición que se estableció.
Figura 1. Estructura cíclicas o repetitivas. Fuente: https://www.freepik.es/fotos-vectores-
gratis/repetir

La instrucción “Para” ejecuta una secuencia de instrucciones un número


determinado de veces.

Sintaxis:

Para <- Hasta Con Paso Hacer

FinPara (Pseint, 2019)

Figura 2. Para-Diagrama de flujo. Fuente: Autoría propia

Esta es la estructura más compleja de todas. Funciona con un contador, es


decir que es una variable que puede ir aumentando o disminuyendo su valor, una
vez que llegue a su máximo o mínimo dejará de repetir el bloque de
instrucciones.

Al ingresar al bloque, la variable recibe el valor y se ejecuta los pasos


secuencialmente formando la estructura del ciclo. Luego se incrementa la
variable en unidades y se evalúa si el valor almacenado en superó al valor . Si esto
es falso se repite hasta que supere a . Si se excluye la condición, Con Paso , la
variable se incrementará en 1.

Para

La instrucción for (para), nos permite especificar el número de ciclos que se


desea repetir, es ideal implementarlo cuando se sabe el número de iteraciones.

Sintaxis:
La sentencia for está conformada por:

for (inicio; condición; incremento) {

Las instrucciones

Inicio: El inicio se ejecuta solo en el primer ciclo. El inicio consiste en una variable
inicializada.

Condición: La condición es el encargado de regir el comportamiento del for, en


caso de que la condición no se cumpla el ciclo se rompe.

Incremento: Es la encargada de incrementar el valor de la variable


inicializada. Luego entre llaves “{}” colocar las instrucciones que se repetirán

Ejemplo: En este ejemplo se va a desarrollar un algoritmo de un código que


muestra la tabla de multiplicar del 2 del 1 al 12.

Proceso tabla

Definir x,x1 Como Real;

Para x<-1 Hasta 12 Con Paso 1 Hacer

x1<-x*2;

Escribir "2X",x,"=",x1;

FinPara

FinProceso

Asignación de diagrama de flujo


Figura 3.Diagrama de flujo. Fuente: Autoría propia

Ejemplo para c++:

#include < iostream>

using namespace std;

int main() {

int x,x1;

for (x=1;x<=12;x++) {

x1 = x*2;

cout << "2X" << x << "=" << x1 << endl;

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.

A continuación se declaran las variables x y x1 como valores enteros, x será el


contador que permitirá realizar 12 repeticiones de la impresión de la tabla. La
variable x1, la que contenga el resultado de la multiplicación en cada pasada del
ciclo.

La estructura for, permitirá repetir desde 1 hasta 12 veces las instrucciones:

x1 = x*2

cout << "2X" << x << "=" << x1 << endl;

En x1 se asigna el valor de x multiplicado por 2 y la siguiente línea imprimirá:


2X1=2 la primera vez y saltará a la siguiente línea, en el for x tomará el siguiente
valor que sería 2 y volverá a ejecutar las misma líneas anteriores, hasta que x tome
el valor de 12 y saldrá del ciclo de repetición.

Ejecuta la secuencia de instrucciones mientras una condición sea verdadera

Sintaxis

Mientras<condición>Hacer</condición>

Instrucciones;

FinMientras (Pseint, 2019)

En diagrama de Flujo

Figura 4.Diagrama de flujo. Fuente: Autoría propia


Se repetirá todo el bloque de instrucciones mientras la condición lógica sea
verdadera es considerada una Pre-Condición es decir que la expresión lógica es
analizada antes de realizar por primera vez el bloque de instrucciones.

La condición es analizada al momento de ejecutar la instrucción, si como


resultado del análisis es verdadera, se llevan a cabo la secuencia de instrucciones
que estructuran el ciclo. “Al finalizar la ejecución del cuerpo del ciclo se vuelve a
evaluar la condición y, si es verdadera, la ejecución se repite. Estos pasos se repiten
mientras la condición sea verdadera”. (Pseint, 2019)

Si al evaluar la condición resulta ser falsa, las instrucciones no pueden ejecutarse


nunca.

Si la condición siempre es verdadera, al ejecutar esta instrucción se produce un


ciclo infinito. “A fin de evitarlo, las instrucciones del cuerpo del ciclo deben contener
alguna instrucción que modifique la o las variables involucradas en la condición, de
modo que ésta sea falsificada en algún momento y así finalice la ejecución del
ciclo”. (Orea, 2019)

Es importante en este tipo de estructuras indicar, que el programador es quien


lleva el control del ciclo, generalmente se utilizan variables contadoras, para evitar
que el ciclo se vuelva infinito.

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;

Mientras que la condición establecida se cumpla se repetirá las instrucciones que


se encuentran dentro de los corchetes.

Ejemplo: El juego consiste en que el usuario en 10 intentos adivine un número.

PSEUDOCODIGO

Proceso Adivina_Numero

Definir intentos,num_secreto,num_ingresado Como Entero;


intentos<-10;

num_secreto <- azar(100)+1; // función azar crea un numero


aleatorio

Escribir "Adivine el numero (de 1 a 100):";

Leer num_ingresado;

Mientras num_secreto<>num_ingresado Y intentos>1 Hacer

Si num_secreto>num_ingresado Entonces

Escribir "Muy bajo";

SiNo

Escribir "Muy alto";

FinSi

intentos <- intentos-1;

Escribir "Le quedan ",intentos," intentos:";

Leer num_ingresado;

FinMientras

Si num_secreto=num_ingresado Entonces

Escribir "Exacto! Usted adivino en ",11-intentos," intentos.";

SiNo

Escribir "El numero era: ",num_secreto;

FinSi

FinProceso

(Pseint, 2019)

DIAGRAMA DE FLUJO
Figura 5.Diagrama de flujo. Fuente: Autoría propia

CODIFICACION EN C++:

#include < iostream>

#include < cstdlib>

using namespace std;

int main() {

int intentos;

int num_ingresado;

int num_secreto;

intentos = 10; // número de intentos dados

num_secreto = (rand()%100)+1; // rand-Función que genera un número


aleatorio

cout << "Adivine el numero (de 1 a 100):" << endl;

cin >> num_ingresado;


while (num_secreto!=num_ingresado && intentos>1) {

if (num_secreto>num_ingresado) {

cout << "Muy bajo" << endl;

} else {

cout << "Muy alto" << endl;

intentos = intentos-1; // se reduce el número de intentos según el

//número de iteraciones que ejecuta el while

//como condición en el while, el numero ingresado debe ser diferente del


número //aleatorio (num_secreto) y el número de intentos deben ser mayor que 1,
entonces //si las condiciones son verdaderas se ejecuta las instrucciones hasta que
la condición //no se cumpla

cout << "Le quedan " << intentos << " intentos:" << endl;

cin >> num_ingresado;

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

Ejecuta una secuencia de instrucciones hasta que la condición sea verdadera.

Sintaxis

Repetir
< instrucciones >

Hasta Que <condición> (Pseint, 2019)</condición>

A diferencia del “Mientras “es considerada una estructura Post-Condicional es


que decir que esta expresión es analizada después de realizar por primera vez el
bloque de instrucciones. En resumen, se ejecutará por lo menos una vez.

Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el cuerpo


del ciclo se ejecuta una vez y luego se evalúa la condición. Si la condición es falsa,
el cuerpo del ciclo se ejecuta nuevamente y se vuelve a evaluar la condición. Esto
se repite hasta que la condición sea verdadera.

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

En este formato se puede usar un “while”: La sentencia do – while realiza primero


las instrucciones establecida y luego verifica si la condición se cumple. Al igual que
la estructura while, en esta no se conoce el número de veces que se repetirá las
instrucciones.

Sintaxis

do {

Instrucciones.

} while (condición); (Pseint, 2019)

Como se puede observar las instrucciones se ejecutarán antes de la verificación


de la condición, en caso de que la condición se cumpla se repetirá el ciclo
nuevamente.

Ejemplo:Diseñar un algoritmo que valide un número entero de dígitos, en este caso


“12345” y si el número es incorrecto, pedir nuevamente el número.

PSEUDOCODIGO

Proceso repetir_

Definir clave como real;

Repetir

Escribir "ingrese la clave de acceso";

leer clave;
Si clave <> 12345 Entonces

Escribir "Contraseña Incorrecta";

FinSi

Hasta Que clave=12345;

Escribir "Bienvenido";

FinProceso

DIAGRAMA DE FLUJO

Figura 6. Diagrama de flujo. Fuente: Autoría propia

CODIFICACION EN C++:

#include < iostream>

using namespace std;

int main()

int valida=12345;

int clave;

do///especificación

cout<<”Ingrese la clave en números: “<<endl;< span=""></endl;<>


cin>>clave;

if(clave!=valida)printf("No valida?\n");

while (clave!=valida);

cout<<”La clave es correcta”<<endl; condición<="" span=""></endl;>

return 0;

Repaso del ejercicio:

En este ejercicio utilizamos la estructura repetitiva “while”, en este caso, se


comprueba la condición final, de este modo que nos preguntará la clave al menos
una vez.

Las instrucciones que se encuentran dentro del cuerpo de la estructura While, se


ejecutarán mientras la condición (clave!=valida) sea Verdadera.

También podría gustarte