Documente Academic
Documente Profesional
Documente Cultură
Asignatura: Programación
Algoritmos, Pseudocódigo, Diagramas de Flujo de Datos, Lenguaje C, C++
Docentes: MSc. Javier A. Arellano G. Lcdo. José Wilmer Jaimes J.
Algoritmos
Un algoritmo se puede definir como un conjunto bien definido de procedimientos lógicos o
matemáticos que se pueden seguir para resolver un problema.
Aunque su popularidad está asociada al área de la computación el término proviene de Mohammed
al-Khowarizmi, matemático persa que vivió durante el siglo IX y alcanzó gran reputación por el
enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir números decimales; la
traducción al latín del apellido en la palabra algorismus que derivó posteriormente en algoritmo.
Euclides, matemático griego del siglo IV a.c, que inventó el método para encontrar el máximo común
divisor de dos números se considera el otro gran padre de la algoritmia.
Los algoritmos pueden escribirse en lenguaje natural, por ejemplo: una receta de cocina escrita en
español, o en pseudoformal el cual permite una representación intermedia entre el lenguaje natural y
los lenguajes de programación.
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de
la computadora que los ejecuta. Un mismo algoritmo se puede traducir a dos o más lenguajes de
programación por ejemplo: PHP, Java, Visual Basic, C, Pascal, etc; para ello deben considerarse las
reglas de sintaxis propias de cada lenguaje
De acuerdo a Joyanes L. (2000) “Un algoritmo es un método para resolver un problema mediante una
serie de pasos precisos, definidos y finitos.” (pág. 17).
Las características fundamentales que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
El resultado del algoritmo debe estar definido. Si se sigue un algoritmo dos veces con los
mismos datos de entrada, se debe obtener el mismo resultado cada vez.
Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento, es
decir, se debe tener un número finito de pasos.
La solución de un problema exige el desarrollo de un algoritmo eficaz que resuelva el problema
planteado. Los pasos para la resolución de un problema pueden describirse de la siguiente manera:
Análisis del problema y desarrollo del algoritmo. En esta fase se diseña el algoritmo, que
refiere una secuencia ordenada de pasos que conducen a la solución de un problema
planteado.
Fase de codificación. En esta fase se escribe el algoritmo como un programa en un lenguaje
de programación, en nuestro caso en Turbo Pascal.
Ejecución y validación del programa por la computadora.
Gráficamente:
En la programación, los algoritmos son muy importantes, ya que permiten conseguir la forma más
eficiente de solucionar un problema. Es importante recordar que un lenguaje de programación es tan
sólo un medio para expresar un algoritmo y una computadora es sólo un procesador para ejecutarlo.
Tanto el lenguaje de programación como la computadora son los medios para obtener un fin:
conseguir que el algoritmo se ejecute y se efectúe el proceso correspondiente.
Para realizar el diseño de algoritmos su utilizan comúnmente dos herramientas: el pseudocódigo y
el diagrama de flujo (flowchart).
De acuerdo a Joyanes L (2002: 43) “El pseudocódigo es una herramienta de programación en la
que las instrucciones se escriben en palabras similares al inglés o español, que facilitan tanto la
escritura como la lectura de programas. En Esencia el pseudocódigo se puede definir como un
lenguaje de especificación de algoritmos.”, es decir es una representación intermedia entre el
lenguaje natural y los lenguajes de programación.
El diagrama de flujo es una representación gráfica de un algoritmo, los símbolos utilizados están
normalizados y su uso es internacional. Los símbolos más utilizados son:
IMPRIMIR / SALIDA DE
DECISIÓN DATOS
NO
SI
PROCESO
CONECTOR
Una herramienta básica para la realización de algoritmos son los diagramas de Entrada – Proceso –
Salida o diagramas E-P-S, los cuales nos permiten dividir la solución en las tres fases indicadas.
Análisis E-P-S
Especificaciones de entrada: Información necesaria para la solución del problema.
¿Qué datos son de entrada?
¿Cuántos datos se introducirán?
¿Cuáles datos de entrada son válidos?
Proceso: Operaciones o cálculos necesarios para encontrar la solución del problema.
¿Qué cálculos de deben realizar?
¿Qué transformaciones debe hacerse sobre la data obtenida?
Especificaciones de salida: Resultados finales de los cálculos y transformaciones realizadas sobre
los datos de entrada
¿Cuál es la información obtenida para presentar como salida?
Pág. 3
Todas las librerías STL de C++ contienen una declaración del espacio de nombre std, es decir que
todas las librerías que hacen parte del estándar de C++ colocan entidades dentro de este espacio de
nombre.
Por esta razón cuando declaramos el uso del espacio de nombre std por medio de "using namespace
Pág. 5
std;", podemos evitar estar escribiendo std::cout o std::cin, etc en nuestro código. Por ello es
necesario colocar luego de las instrucciones declarativas una linea con la expresión: “using
namespace std;”, cabe destacar que el editor Zinjai la incluye por defecto.
Librería math.h:
Contiene los prototipos de las funciones y otras definiciones para el uso y manipulación de funciones
matemáticas.
Librería stdio.h
El nombre de la librería significa "standard input-output header" (cabecera estándar E/S), contiene
diferentes funciones que permiten realizar operaciones estándar de entrada/salida (E/S), así como la
definición de tipos para dichas operaciones, esta librería provve una gran cantidad de objetos entre
los más utilizados tenemos.
printf, fprintf, sprintf y snprintf: permiten imprimir salidas de datos.
vprintf: permite imprimir salidas de datos.
scanf, fscanf y sscanf: permiten capturar datos de de entrada por teclado.
vfscanf, vscanf, vsscanf: permiten capturar datos de de entrada por teclado.
Librería stdlib.h
Contiene los prototipos de las funciones, macros, y tipos para utilidades de uso general, tanto en C
como en C++
Librería iomanip
Provee facilidades para manipular el formateo de salida, así como la base utilizada cuando se
formatean enteros y los valores precisión o punto flotante.
Estructura de un programa en C++
La estructura de un programa en C ++ se detalla en la siguiente imagen
Pág. 6
#include <iostream.h>
#include <math.h>
suma=a+b;
return 0;
}
Los programas desarrollados en C y C++ deben tener una función principal la cual debe llamarse
siempre main, esta función sirve como punto de partida para la ejecución del programa, además
controla la ejecución del programa haciendo las llamadas a otras funciones. Generalmete todo
programa deje de ejecutarse al final de esta función. Zinjai incluye la función main por defecto.
Sintaxis
Al finalizar el programa se coloca “return 0”, la razón de devolver un número entero es para indicarle
al sistema si las operaciones del programa se ejecutaron de manera correcta o no, el cero (0) es un
código estándar utilizado en diferentes lenguajes de programación para indicar que todas
instrucciones programadas se ejecutaron con éxito.
Tipos de Datos en C++
En C++ los datos se clasifican en primitivos y derivados, los datos primitivos, también conocidos
como atómicos vienen definidos dentro del lenguaje, y son los: char, enteros, reales, tipo lógico y tipo
carácter ampliado.
Datos tipo char
Los valores de tipo char se usan normalmente para guardar valores definidos en el juego de
caracteres ASCII, así como cualquier cantidad de 8 bit.
Pág. 7
Número de bytes
Tipo de Dato Descripción Rango
típico
Los datos tipo entero permiten usar los calificadores signed y unsigned. Estos calificadores indican
si el número tiene signo o no. Si se usan solos, sin indicar el tipo de dato se asume que es te es int.
Un ejemplo de ello si unsigned x; será equivalente a declarar unsigned int x;
Número de
Tipo de Dato Descripción Rango
bytes típico
Los datos enteros de tipo signed son equivalentes a los enteros sin utilizar el calificador, por ello
declarar signed int a; es equivalente a escribir int a;
Tipo de Número de
Descripción Rango
Dato bytes típico
Tipo lógico
Los datos de este tipo sólo pueden contener dos valores: true ó false (verdadero ó falso).
Si se muestran como enteros, el valor true toma el valor 1 y false el valor 0.
Tipo de Número de
Descripción Rango
Dato bytes típico
Identificadores en C++
Un identificador es un conjunto de caracteres alfanuméricos de una determinada longitud que sirve
para identificar las entidades de un programa, en C++ los identificadores son una secuencia de
caracteres alfanuméricos que se utilizan para denominar diferentes entidades, entre ellas:
Variables.
Constante.
Clases, estructuras o uniones.
Tipos enumerados.
Funciones.
Macros y parámetros de macros.
Para crear los identificadores en C++ existen reglas que son muy fáciles de seguir:
Un identificador se forma con una secuencia de letras (minúsculas de las a a la z; mayúsculas de la A
a la Z; y dígitos del 0 al 9).
El guión bajo o underscore (_) se considera como un carácter alfanumérico más.
Un identificador no puede contener espacios en blanco, ni otros caracteres distintos de los citados.
El primer carácter de un identificador debe ser siempre una letra o un (_), es decir, no puede ser un
número.
Se hace distinción entre letras mayúsculas y minúsculas. Así por ejemplo, Edad es considerado un
identificador distinto de edad y de EDAD.
Pág. 9
Constantes
Una constante hace referencia a un dato cuyo valor se mantendrá fijo durante la ejecución del
programa que lo contiene, en la programación es muy extendido el uso de las constantes para
valores no efímeros.
En C++, una constante puede ser de tipo entero, real, carácter, de cadena y se pueden expresar de
dos formas diferentes:
Por su valor.
Con un nombre (identificador).
Un ejemplo de ellos, las contantes de tipo entero están expresadas por su valor:
-5
10
Declaración de constantes en C++
Existen dos maneras de declarar los valores constantes en C++: mediante una expresión, con #define
o mediante el uso de const, que de esta forma se toma como un término.
#define, esta instrucción permite declarar constantes de una manera sencilla de la siguiente forma:
#define const;
#define PI 3.141592
#define NUMERO_E 2.718281
La instrucción define nos genera una expresión que no puede tomarse como tipo de dato en un flujo,
por lo que no es la manera más idónea de declarar una constante en C++.
Lo recomendable es declarar las constantes después de la de la declaración de bibliotecas y antes de
comenzar con la función principal, para que éstas tengan un carácter global. La palabra reservada
const permite declarar constantes de una manera más apropiada, ya que estas poseen un tipo de
dato asociado y por tanto se consideran el estándar para declararlas en C++.
Los parámetros de const son muy parecidos al de las variables solo que aquí se le antepone la
instrucción const al inicio para especificar la naturaleza del dato.
const tipo_de_dato nombre_de_la_constante = valor_de_la_constante;
const float precio 234.56;
Expresiones Aritméticas
Las expresiones aritméticas son un conjunto de datos o funciones unidos por operadores aritméticos,
estás expresiones son iguales a las fórmulas matemáticas, contienen variables y constantes sobre
las cuales se realizan operaciones aritméticas, estas operaciones puede ser suma (+), resta (-),
multiplicación (*), división (/), Asignación (=),Resto de división entera (mod) (%), incremento (++) y
decremento (--)
El resultado de la evaluación de una expresión aritmética siempre es un número, los operadores (+, -,
*) pueden utilizados con tipos reales o enteros, teniendo en cuenta que si ambos son enteros el
resultado es entero, si a menos uno es real el resultado es real; El operador (/) siempre da como
resultado un número real. El operador mod (%) el resto de la división entera.
Pág. 11
Ejercicios
Diseñar un algoritmo que permita calcular y mostrar por pantalla el área de un Trapecio teniendo
como datos de entrada las bases y la altura del mismo; el área del trapecio es igual a la suma de las
bases por la altura, y dividido por dos.
B = base mayor
b = base menor
h = altura
Diagrama E – P – S A = (B + b)*h/2
ENTRADA PROCESO SALIDA
B (base mayor) A = (B + b)*h/2 A (área del trapecio)
b (base menor)
h (altura)
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <iomanip>
using namespace std;
Una pirámide tiene una base y caras triangulares que se levantan para unirse en un mismo vértice. La
base puede ser un polígono tal como un cuadrado, un rectángulo, un triángulo, etc; Diseñe un
algoritmo que permita calcular y mostrar por pantalla el volumen de una pirámide cuya base sea un
rectángulo. La fórmula para hallar dicho volumen es
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <iomanip>
using namespace std;