Sie sind auf Seite 1von 10

Algoritmos, Estructura de Datos & Objetos

Técnicas de Diseño de Algoritmos.


1. Especificación Pseudocódigo.
2. Especificación UML (Activity Diagram).

1. Especificación Pseudocódigo.- Los algoritmos deben ser escritos


en lenguajes similares a los programas. La técnica metodológica que
usaremos es esencialmente el lenguaje algorítmico basado en
PSEUDOCODIGO, y la comprobación e implementación del mismo
requerirá la transcripción en código usando lenguajes de programación
estructurados, como por ejemplo: Lenguaje C++ ANSI, Lenguaje OO Java
de Sun Microsystems , etc. La escritura de un
algoritmo mediante
una herramienta de
programación
2. Secciones. Un algoritmo basado en Pseudocódigo, consta de tres (diagramas UML y
SECCIONES: pseudocódigo) debe
estar basada en la
 Una cabecera de programa. “Programación
 Una sección de declaraciones de tipos y Estructurada y
 Una sección de Acciones o actividades (Lógica de aplicación). Modular” de modo
que facilite su
posterior codificación
2.1. La Cabecera de Programa, es un identificador simple que describe al en un lenguaje de
programa. Comienza con la palabra reservada Algoritmo. programación que
admita estas
2.2. La sección de declaraciones, contiene los tipos y declaraciones de metodologías que a
variables y constantes. Comienza con la palabra reservada var su vez son el soporte
de la POO.
2.3. La sección de acciones, contiene las actividades o acciones
ejecutables – Lógica de aplicación – que definen la solución del problema.
Comienza con la palabra clave inicio y termina con la palabra fin

La palabra Algoritmo, va seguida por el nombre


Algoritmo. cabecera del programa asignado al programa completo (identificador).

var Aquí se define los tipos y se declaran las variables


sección de declaraciones y constantes. (Identificadores con nombre).

inicio Aquí va la lógica de programa. Son actividades o


sección de acciones acciones ejecutables que posteriormente deberá
realizar la computadora cuando el algoritmo sea
o convertido en programa ejecutable.
actividades

fin

Fig. 1. Representación de un algoritmo basado en Pseudocódigo: Secciones

Mg. Jorge Medi@nero A. Pag. 1


Algoritmos, Estructura de Datos & Objetos

3. DESCRIPCION DE LAS SECCIONES DE UN ALGORITMO.

3.1. Sección: Cabecera del programa o algoritmo.

Todos los algoritmos y programas deben comenzar con una cabecera en la que se exprese el nombre
representativo del programa. Así.

Algoritmo <Identificador del programa>

3.2. Sección: Declaraciones.

En esta sección se definen y declaran todas las variables y constantes usadas en el algoritmo,
listándose sus tipos y nombres o identificadores. Esta sección comienza con la palabra reservada var
(variable) y tiene el formato:

var
tipo_dato: <lista_identificadores>
const [tipo_dato:] < C_IDENTIFICADOR > = valor_inicial

3.3. Sección de Actividades o Acciones.

En esta sección se define la lógica paso a paso de todas las actividades que debe realizar el
programa para resolver el problema. Las Actividades o acciones son líneas de programa con una
sintaxis propia (Uso de palabras reservadas o Tokens).
Esta sección comienza con la palabra reservada inicio y termina con el token fin que delimita el
bloque. Tiene el formato:

Algoritmo. <Identificador>
inicio -------------------------------------
var <declaraciones>
________________________
//bloque de actividades
//o acciones. inicio
<acciones o
fin Actividades>
fin

Fig.2. Secciones de un algoritmo en la Especificación Pseudocódigo.

TOKENS o palabras reservadas.

El lenguaje de especificación en Pseudocódigo posee una sintaxis propia (reglas sintácticas) y


un conjunto de palabras claves reservadas denominadas TOKENS, como:

inicio, fin, var, const, leer, escribir, si entonces, si_no, mientras,


desde, repetir, según_sea, función, procedimiento, llamar_a, devolver,
tipo, entero, real, carácter,logico etc. Son palabras reservadas.

También los símbolos: *, /, =, +, -, ^, %, MOD, DIV, &, Y, O, NO, >=,


<=, <>, (), , :=, etc. Son tokens.

Mg. Jorge Medi@nero A. Pag. 2


Algoritmos, Estructura de Datos & Objetos

En resumen: Podemos concluir que el estilo de escritura de algoritmos tiene el siguiente


formato y recomendaciones.

Formato Pseudocódigo:
Algoritmo <identificador_programa> //cabecera del algoritmo
var //sección de declaraciones
tipo_dato: <lista_identificadores>
const [tipo_dato:] < C_IDENTIFICADOR> = valor_inicial

inicio
//bloque de acciones
<sentencia_1>
<sentencia_2>

<sentencia_n>
fin

RECOMENDACIÓNES: En la escritura de algoritmos:

 Utilizar siempre sangrías en los bucles, selecciones o en aquellas instrucciones que


proporcionen bloques de instrucciones, como en inicio-fin.

 Usar identificadores significativos (NEMOTECNICOS) para la nomenclatura de


variables, constantes, funciones, etc. Asimismo, tener en cuenta que los identificadores
de variables se escriben en minúscula y las constantes suelen ir en MAYUSCULAS.

 Comentar el programa en aquellos puntos que impliquen dudas para despejar posibles
ambigüedades, para explicar procesos y dar mayor claridad y comunicación futuras
(Documentación interna).

Mg. Jorge Medi@nero A. Pag. 3


Algoritmos, Estructura de Datos & Objetos

Tipos de datos, variables y constantes


4. Tipo de Datos. La mayoría de las computadoras trabajan con varios tipos de datos. Existen dos
categorías:
Simple: (sin estructura)
Compuestos: (estructurados)

 Los simples se denominan tipos primitivos y se clasifican en: Numéricos (enteros y


reales), lógicos y de carácter. Estos tipos de datos son intrínsecos (están pre-definidos en el
sistema).

 Los compuestos, se denominan estructurados por que están basados en los tipos primitivos
y se clasifican en:

o Estáticos (Arrays, cadenas, registros, archivos) y


o Dinámicos (Listas, pilas, colas, Arboles y Grafos).

Consulte el tema: Referencia de Lenguaje, para mayores detalles.

TIPOS PRIMITIVOS

Son tipos de datos fundamentales o básicos definidos en el sistema (intrínsecos). Son tipos
soportados por la mayoría de los lenguajes de programación.

 Enteros o números de coma fija. Pertenecen al conjunto de los números enteros Z (Enteros
positivos: Z+ y enteros negativos: Z- ) y números naturales: N
 Reales o números de coma flotante. Pertenecen al conjunto de los números reales R
 Lógicos o booleanos. Solo admiten dos valores (Falso: 0 y Verdadero: 1).
 Carácter. Admiten cualquier símbolo del sistema ASCII(1 byte) / UNICODE (2 bytes)

4.1. VARIABLES:
Definición y nomenclatura.

Variable. Es un identificador con nombre que permite almacenar un valor, tiene un tipo de dato y
una dirección de memoria (memoria reservada en el momento de su declaración).

Declaración de variables.
Sintaxis:
var
tipo_n: <lista_variables de tipo n>

en donde:
lista_variables. Es una variable única, o una lista de variables con nombre
(separadas por comas).
tipo_n: Es uno de los tipos de datos primitivos (entero, real,
carácter o lógico) o dato estructurado.

Ejemplo:
var
cadena: nombre_empleado
real: sueldoBasico, sueldoBruto, bonificacion
logico: agotado //toma valores: verdadero o falso
entero: k, i, j //contador k paso uno, e indices

Mg. Jorge Medi@nero A. Pag. 4


Algoritmos, Estructura de Datos & Objetos

Reglas de nomenclatura

 El nombre de una variable esta formada por caracteres alfabéticos en minúsculas


(‟a‟..‟z‟), dígitos („0‟..‟9‟) y por el carácter subrayado ( _ ).

 El nombre de una variable siempre debe comenzar por un carácter alfabético o por el
carácter subrayado.

 El nombre de una variable “NO DEBE” comenzar con un digito.

 El nombre de una variable no debe contener espacios en blanco puntos o caracteres


especiales reservados, tales como (@, #, =, *, ;, %, &, ,etc).

Así por ejemplo, son nombres validos de variables:


sueldo
_sueldo
numero20

 El nombre de una variable no debe coincidir con una palabra clave o reservada de un
algoritmo.

Practica recomendable:
 NEMOTECNICOS. Es una buena práctica de programación utilizar nombres de variables
significativos que sugieren lo que ellas representan, ya que eso hará más fácil y legible el
programa.
 Notación CAMELIDA. Para cumplir con este requerimiento, los nombres simples de
variables deben escribirse en minúsculas y si son compuestas con la inicial en Mayúscula
de la segunda palabra, o separadas por el carácter “_” underline.
 Comentarios Internos. También es buena práctica incluir breves comentarios que
indiquen como se usa la variable.

Así por ejemplo:

var
cadena: nombreVendedor //apellidos y nombres del vendedor
entero: id_vendedor //código de vendedor
real: sueldoBasico //sueldo básico en US$
real: bonificacionPorVenta //bonificación al record de ventas
lógico: en_planilla //vendedores estables-contratados

Mg. Jorge Medi@nero A. Pag. 5


Algoritmos, Estructura de Datos & Objetos

4.2. CONSTANTES.
Definición y nomenclatura.

CONSTANTE. Es un identificador con nombre que almacena un valor constante (el valor asignado no
puede ser cambiado durante la ejecución del programa). Implícitamente tiene un tipo de dato
definido por el valor asignado en la inicialización.

Declaración de constantes.
Sintaxis:
const [tipo_n:] <LISTA_CONSTANTES de tipo n> = valor

en donde:

lista_constantes. Es una constante única, o una lista de constantes con


nombre separadas por comas.
tipo_n: OPCIONAL, y es uno de los tipos de datos primitivos (entero,
real, carácter o lógico) o datos complejos.
valor Valor REQUERIDO, es un valor de inicialización que
permanece inalterable durante la ejecución del programa.

Este valor determina implícitamente el tipo de dato al cual pertenece la constante


(esta es la razón por la cual el tipo es opcional).

Ejemplos:

const LIMITE_SUPERIOR = 40 //constante entera

const
TASA = 0.19, DESCUENTO = 0.5 //constantes reales
CONTRATADO = verdad //constante lógico
MASCULINO = ‘m’ //constante carácter
ROTULO = "Informe Semestral" //constante de cadena

Reglas de nomenclatura

 El nombre de una CONSTANTE cumple con las reglas de nomenclatura aplicadas a las
variables, con excepción de los caracteres alfabéticos que deben ser MAYUSCULAS (‟A‟..‟Z‟),
dígitos („0‟..‟9‟) y por el carácter subrayado ( _ ).

 Una constante debe ser inicializada en el momento de su declaración con un valor constante
( no puede alterarse, de allí su denominación).

Practica recomendable:
 Declare las CONSTANTES con un valor de inicialización.
 Es una buena práctica de programación utilizar NOMBRES de constantes
NEMOTECNICA. significativos que sugieren lo que ellas representan, ya que esto
hará más fácil y legible el programa.
 Para cumplir con este requerimiento, los nombres simples de constantes deben
escribirse en MAYUSCULAS y si son Compuestas con el separador, "_" underline.

Mg. Jorge Medi@nero A. Pag. 6


Algoritmos, Estructura de Datos & Objetos

Ejemplos comentados
Análisis, Diseño e Implementación de Algoritmos.

Problema 1. Implementar un programa que permita convertir pulgadas a centímetros.

Análisis.
Las pulgadas y centímetros son magnitudes de longitud cuya equivalencia en el sistema SI es:
1 pulgada = 2.54 centímetros
Por regla de tres simple, el factor de conversión, es entonces:
cm = pulgadas x 2.54

Especificaciones de E/S.
Entradas: pulgadas a convertir de tipo real
Salidas : equivalencia en centímetros

Diseño. Representación en Pseudocódigo.

Algoritmo. Convertir pulgadas a centímetros


var
real: pulg, cm
const FACTOR = 2.54
inicio
//entrada de datos
escribir("Ingrese pulgadas: ")
leer(pulg)
//proceso de conversión
cm  pulg * FACTOR
//salida
escribir("Equivalencia en centímetros: ", cm)
fin

Diseño. Representación UML (Diagrama de Actividades).

Algoritmo. Convertir pulgadas a centimetros


var
real: pulg, cm
const FACTOR = 2.54

escribir("Ingrese pulgadas: ")


//sintaxis C++
printf("Ingrese pulgadas:");
leer( pulg )

//sintaxis C++
cm := pulg * FACTOR scanf("%f", &pulg );

escribir ("Conversion centimetros:",cm )


//sintaxis C++
printf("Conversion centímetros: %f", cm);

Mg. Jorge Medi@nero A. Pag. 7


Algoritmos, Estructura de Datos & Objetos

Implementación en código C++ ANSI

/*
Algoritmo. Convertir pulgadas a centímetros
Author: J.Medianero.A
Date: 08/05/09
Description: calcula la equivalencia de pulg a cm
*/
#include <cstdlib>
#include <iostream>

using namespace std;


//var. global
float pulg, cm;
const float FACTOR = 2.54;

int main(int argc, char *argv[]){//inicio


//entrada de datos
printf("Ingrese pulgadas: ");
scanf("%f", &pulg);
//proceso de conversión
cm = pulg * FACTOR;
//salida
printf("Equivalencia en centímetros: %f\n", cm);

system("PAUSE");
return EXIT_SUCCESS;
}//fin

Problema 2. Calcular la suma de los n primeros números naturales.

Análisis.
Los números naturales son enteros positivos, representados por la sucesión 1, 2, 3, 4… n
La suma de esta sucesión, esta representada con la serie: 1+2+3+4… + n. Como se deduce, es una
suma notable y su formula es:

Especificaciones de E/S.
Entradas: termino n de la sucesión de tipo entero
Salidas : suma acumulada

Diseño. Representación en Pseudocódigo.

Algoritmo. Suma de numeros naturales


var
entero: n, suma
inicio
suma  0 //inicializar acumulador
repetir
//entrada de datos
escribir("Ingrese termino n de la sucesion: ")
leer(n)
hasta_que( n > 0 ) //bucle: valida Entero positivo
suma  n * (n+1) / 2 //calculo de la suma notable
//salida de resultados
escribir("La serie del termino n es: ", suma)
fin

Mg. Jorge Medi@nero A. Pag. 8


Algoritmos, Estructura de Datos & Objetos

Diseño. Representación UML (Diagrama de Actividades).

Algoritmo. Suma de numeros Naturales


var
entero: n, suma

Suma := 0

escribir("Termino n de la sucesion: ")

leer( n )

[n > 0]

true false

//Bucle en codigo C++


Suma := n * ( n + 1 ) / do{
2 printf("Ingrese termino n: ");
scanf("%d", &n);
escribir ("Serie del termino n: ", suma ) }while (n <= 0); //validacion

Implementación en código C++ ANSI

/*
Algoritmo. Suma de números Naturales
Author: J.Medianero.A
Date: 08/05/09
Description: calcula la serie de números Naturales
*/
#include <cstdlib>
#include <iostream>

using namespace std;


//var. global
int n, suma;

int main(int argc, char *argv[]){//inicio


suma = 0; //inicializar acumulador
//entrada de datos
do{
printf("Ingrese termino n de la sucesion: ");
scanf("%d", &n);
}while(n <= 0); //bucle: valida Entero positivo

//calculo de la suma notable


suma = n * (n + 1) / 2;
//salida de resultados
printf("La serie del termino n es: %f\n", suma);

system("PAUSE");
return EXIT_SUCCESS;
}//fin

Mg. Jorge Medi@nero A. Pag. 9


Algoritmos, Estructura de Datos & Objetos

ADDENDA. Programación Estructurada


Sentencias de Control de Flujo de Programa.
Programación Estructurada:
 La programación estructurada promueve la SIMPLICIDAD.
 Los programas secuenciales (ejecución de instrucciones en secuencia), son muy restrictivos,
pues normalmente se requiere variar el flujo de control para tomar decisiones y/o repetir
bloques de código (Patrones Secuencial, Selectivo y Repetitivo de Bohm & Jacopini).
 En la programación estructurada, existe una serie de instrucciones que permiten variar la
secuencia del flujo de control. Estas estructuras son las Selectivas, Repetitivas y las llamadas
a subrutinas (Patrones de la programación Modular: function / Procedure).

Reglas de Estructuración.

 Regla de Simplicidad: Se usan círculos pequeños para indicar el punto de entrada y punto
de salida UNICO de cada estructura de control. Solo hay una forma de entrar y salir de una
estructura: Entrada/Sencilla, Salida/Sencilla.
 Regla de Apilamiento: La conexión de estructuras de control para formar programas
estructurados es SENCILLA. La entrada / salida de cada estructura se conectan
secuencialmente una sobre la otra en el programa (Apilamiento de estructuras de control).
 Regla de Anidamiento: Las estructuras pueden sustituir puntos intermedios en los estados
de actividad simples de un programa. Si esta actividad sencilla se reemplaza por una
estructura Selectiva o Repetitiva se generan programas anidados cada vez más profundos
pero pulcros y estructurados (Anidar estructuras de control).

Mg. Jorge Medi@nero A. Pag. 10

Das könnte Ihnen auch gefallen