Vous êtes sur la page 1sur 47

ALGORITMOS

DEFINICIN

Es un procedimiento lgico secuencial que presenta en un nmero de finito de
pasos la solucin de un determinado problema.

Las caractersticas fundamentales que debe cumplir todo algoritmo son :

o Debe ser preciso, indicar el orden de realizacin de cada paso.
o Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el
mismo resultado cada vez.
o Debe ser finito. Si se sigue un algoritmo, se debe terminar en algn momento ;
o sea debe tener un nmero finito de pasos.

La definicin de un algoritmo debe describir tres partes : Entrada, Proceso y
Salida.


ALGORITMOS COTIDIANOS

Se refiere a todos aquellos algoritmos que nos ayudan a resolver problemas
diarios, y que los hacemos casi sin darnos cuenta de que estamos siguiendo una
metodologa para resolverlos.

Algunos ejemplos son :

o Disear un algoritmo para cambiar una llanta a un coche.

1. Inicio.
2. Traer gata.
3. Levantar el coche con la gata.
4. Aflojar tornillos de las llantas.
5. Sacar los tornillos de las llantas.
6. Quitar la llanta.
7. Poner la llanta de repuesto.
8. Poner los tornillos.
9. Apretar los tornillos.
10. Bajar el gata.
11. Fin


o Un cliente ejecuta un pedido a una fbrica. La fbrica examina en su banco de
datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta
el pedido, en caso contrario rechazar el pedido.

Pasos del algoritmo :

Inicio
Leer el pedido
Examinar ficha del cliente
Si el cliente es solvente aceptar el pedido,
en caso contrario rechazar el pedido
Fin

o Determinar el mayor de tres nmeros enteros.

Pasos del algoritmo :
1. Comparar el primero y el segundo entero, deduciendo cul es el
mayor.
2. Comparar el mayor anterior con el tercero y deducir cul es el mayor. Este
ser el resultado.

Los pasos anteriores se pueden descomponer en otros pasos ms simples en
los que se denomina refinamiento del algoritmo.

1. Obtener el primer nmero (entrada), denominado NUM1
2. Obtener el segundo nmero (entrada), denominado NUM2
3. Compara NUM1 con NUM2 y seleccionar el mayor ; si los dos enteros
son iguales, seleccionar NUM1. Llamar a este nmero MAYOR.
4. Obtener el tercer nmero (entrada), y se denomina NUM3.
5. Compara MAYOR con NUM3 y seleccionar el mayor ; si los dos
enteros son iguales, seleccionar el MAYOR. Denominar a este nmero
MAYOR.
6. Presentar el valor MAYOR (salida).
7. Fin













DEFINICIN DE LENGUAJES ALGORTMICOS

Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de
estos lenguajes permiten describir los pasos con mayor o menor detalle.

La clasificacin de los lenguajes para algoritmos puede enunciarse de la siguiente
manera :

o Lenguaje Natural.
o Lenguaje de Diagrama de Flujo.
o Lenguaje de Programacin.

Lenguaje Natural
Es aqul que describe en espaol, para nuestro caso, los pasos a seguir utilizando
un vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan
trminos especializados de una determinada ciencia, profesin o grupo.

Lenguaje de Diagrama de Flujo
Es aqul que se vale de diversos smbolos para representar las ideas o acciones a
desarrollar. Es til para organizar las acciones o pasos de un algoritmo.

Lenguaje de Programacin
Son aquellos que estn orientados a la solucin de problemas que se definen de
una manera precisa. Es un conjunto de palabras, smbolos y reglas sintcticas
mediante los cuales puede indicarse a la computadora los pasos a seguir para
resolver un problema.

Los lenguajes de programacin pueden clasificarse por diversos criterios, siendo
el ms comn su nivel de semejanza con el lenguaje natural, y su capacidad de
manejo de niveles internos de la mquina.

Los principales tipos de lenguajes utilizados son tres :

o Lenguaje Mquina.
o Lenguaje de bajo Nivel (ensamblador).
o Lenguajes de Alto Nivel.

Lenguaje Mquina
Son aquellos que estn escritos en lenguajes directamente ENTENDIBLES por la
computadora, ya que sus instrucciones son cadenas binarias (series de
caracteres de dgitos 0 y 1) que especifican una operacin y las posiciones
(direccin) de memoria implicadas en la operacin. Estas instrucciones se
denominan instrucciones de mquina o cdigo mquina. El cdigo mquina es
el conocido cdigo binario.
Las instrucciones en lenguaje mquina dependen del hardware de la computadora
y, por tanto, diferirn de una computadora a otra.

Ventajas del Lenguaje Mquina
Posibilidad de cargar un programa a la memoria sin necesidad de
traduccin posterior, lo que supone una velocidad de ejecucin superior a
cualquier otro lenguaje de programacin.

Desventajas del Lenguaje Mquina
o Dificultad y lentitud en la codificacin.
o Poca fiabilidad.
o Gran dificultad para verificar y poner a punto los programas.
o Los programas solo son ejecutables en el mismo procesador (CPU).

En la actualidad, las desventajas superan a las ventajas, lo que hace
prcticamente no recomendables a los lenguajes mquinas.

Lenguajes de Bajo Nivel
Son ms fciles de utilizar que los lenguajes mquina, pero al igual que ellos,
dependen de la mquina en particular. El lenguaje de bajo nivel por excelencia es
el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones
conocidas como nemotcnicos. Por ejemplo, nemotcnicos tpicos de
operaciones aritmticas son : en ingls : ADD, SUB, DIV, etc. ; en espaol : SUM,
RES, DIV, etc.

Una instruccin tpica de suma sera : ADD M, N, P

Esta instruccin significa "sumar el contenido en la posicin de memoria M al
nmero almacenado en la posicin de memoria N y situar el resultado en la
posicin de memoria P" .

Es ms sencillo recordar la instruccin anterior con un nemotcnico que su
equivalente en cdigo mquina : 0110 1001 1010 1011

Un programa escrito en lenguaje ensamblador, requiere de una fase de
traduccin al lenguaje mquina para poder ser ejecutado directamente por la
computadora.

El programa original escrito en lenguaje ensamblador se denomina programa
fuente y el programa traducido en lenguaje mquina se conoce como programa
objeto, el cual ya es directamente entendible por la computadora.

Ventajas del lenguaje ensamblador frente al lenguaje mquina
Mayor facilidad de codificacin y, en general, su velocidad de clculo.

Desventajas del lenguaje ensamblador
o Dependencia total de la mquina lo que impide la transportabilidad de
los programas (posibilidad de ejecutar un programa en diferentes
mquinas. El lenguaje ensamblador del PC es distinto del lenguaje
ensamblador del Apple Machintosh.

o La formacin de los programadores es ms compleja que la
correspondiente a los programadores de alto nivel, ya que exige no solo
las tcnicas de programacin, sino tambin el conocimiento del interior
de la mquina.

Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se
centran bsicamente en aplicaciones de tiempo real, control de procesos y
de dispositivos electrnicos.


Lenguajes de Alto Nivel
Estos lenguajes son los ms utilizados por los programadores. Estn diseados
para que las personas escriban y entiendan los programas de un modo mucho
ms fcil que los lenguajes mquina y ensambladores. Un programa escrito en
lenguaje de alto nivel es independiente de la mquina (las instrucciones no
dependen del diseo del hardware o de una computadora en particular), por lo que
estos programas son portables o transportables. Los programas escritos en
lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificacin en
diferentes tipos de computadoras.

Ventajas de los lenguajes de alto nivel
o El tiempo de formacin de los programadores es relativamente corto
comparado con otros lenguajes.
o La escritura de programas se basa en reglas sintcticas similares a los
lenguajes humanos. Nombres de las instrucciones tales como READ,
WRITE, PRINT, OPEN, etc.
o Las modificaciones y puestas a punto de los programas son ms fciles.
o Reduccin del coste de los programas.
o Transportabilidad.

Desventajas de los lenguajes de alto nivel
o Incremento del tiempo de puesta a punto al necesitarse diferentes
traducciones del programa fuente para conseguir el programa definitivo.
o No se aprovechan los recursos internos de la mquina que se explotan
mucho mejor en lenguajes mquina y ensambladores.
o Aumento de la ocupacin de memoria.
o El tiempo de ejecucin de los programas es mucho mayor.









METODOLOGIA PARA LA SOLUCION DE PROBLEMAS
POR MEDIO DE COMPUTADORAS

A fin de resolver un problema utilizando sistemas de cmputo, debe seguirse
una serie de pasos que permiten avanzar por etapas bien definidas hacia la
solucin.

Estas etapas son las siguientes :

o Definicin del problema.
o Anlisis de los datos.
o Diseo de la solucin.
o Codificacin.
o Prueba y depuracin.
o Documentacin.
o Mantenimiento.


Definicin del problema

Est dada en s por el enunciado del problema, el cual debe ser claro y complejo.
Es importante que conozcamos exactamente "que se desea obtener al final del
proceso" ; mientras esto no se comprenda no puede pasarse a la siguiente etapa.


Anlisis de los datos

Para poder definir con precisin el problema se requiere que las especificaciones
de entrada y salida sean descritas con detalle ya que esto es un requisito para
lograr una solucin eficaz.
Una vez que el problema ha sido definido y comprendido, deben analizarse los
siguientes aspectos :

o Los resultados esperados.
o Los datos de entrada disponibles.
o Herramientas a nuestro alcance para manipular los datos y alcanzar un
resultado (frmulas, tablas, accesorios diversos).

Una medida aconsejable para facilitar esta etapa consiste en colocarnos en
lugar de la computadora deduciendo los elementos que necesitaremos para
alcanzar el resultado.






Ejemplo
Leer el radio de un crculo y calcular e imprimir su superficie y circunferencia.

Anlisis

Las entradas de datos en este problema se concentran en el radio del crculo.
Dado que el radio puede tomar cualquier valor dentro del rango de los nmeros
reales, el tipo de datos radio debe ser real.
Las salidas sern dos variables : superficie y circunferencia que tambin sern de
tipo real.

Entradas : Radio del crculo (variable RADIO).
Salidas : Superficie del crculo (variable AREA).

Circunferencia del crculo (variable CIRCUNFERENCIA).
Variables : RADIO, AREA, CIRCUNFERENCIA tipo real.


Diseo de la solucin

Una computadora no tiene capacidad para solucionar problemas ms que cuando
se le proporcionan los sucesivos pasos a realizar, esto se refiere a la obtencin de
un algoritmo que resuelva adecuadamente el problema. En caso de obtenerse
varios algoritmos, seleccionar uno de ellos utilizando criterios ya conocidos.

Esta etapa incluye la descripcin del algoritmo resultante en un lenguaje natural,
de diagrama de flujo o de programacin.

Como puede verse, solo se establece la metodologa para alcanzar la solucin en
forma conceptual, es decir ; sin alcanzar la implementacin en el sistema de
cmputo.

De acuerdo al ejemplo anterior, tenemos que la informacin proporcionada
constituye su entrada y la informacin producida por el algoritmo constituye su
salida. Los problemas complejos se pueden resolver ms eficazmente por la
computadora cuando se dividen en subproblemas que sean ms fcil de
solucionar.

El problema de clculo de la longitud y superficie de un crculo se puede
descomponer en subproblemas ms simples :

o Leer datos de entrada.
o Calcular superficie y longitud.
o Escribir resultados (datos de salida).



Codificacin

Se refiere a la obtencin de un programa definitivo que pueda ser comprensible
para la mquina. Incluye una etapa que se reconoce como compilacin.
Si la codificacin original se realiz en papel, previo a la compilacin deber
existir un paso conocido como transcripcin.



Programa Fuente
o Esta escrito en un lenguaje de programacin. (pascal, C++,Visual
Fox, Visual Basic, etc).
o Es entendible por el programador.

Programa Ejecutable

o Est en lenguaje mquina.
o Entendible por la mquina.


Prueba y depuracin

Una vez que se ha obtenido el programa ejecutable, este es sometido a prueba a
fin de determinar si resuelve o no el problema planteado en forma satisfactoria.
Las pruebas que se le aplican son de diversa ndole y generalmente dependen del
tipo de problema que se est resolviendo. Comnmente se inicia la prueba de un
programa introduciendo datos vlidos, invlidos e incongruentes y observando
como reacciona en cada ocasin.

El proceso de depuracin consiste en localizar los errores y corregirlos en caso
de que estos existan. Si no existen errores, puede entenderse la depuracin como
una etapa de refinamiento en la que se ajustan detalles para optimizar el
desempeo del programa.


Documentacin
Debido a que el programa resultante en esta etapa se encuentra totalmente
depurado (sin errores), se procede a la utilizacin para resolver problemas del tipo
que dio origen a su diseo.
En vista de que esta utilizacin no podr ser supervisada en todas las ocasiones
por el programador, debe crearse un manual o gua de operacin que indique los
pasos a seguir para utilizar el programa.


Mantenimiento
Se refiere a las actualizaciones que deban aplicarse al programa cuando las
circunstancias as lo requieran. Este programa deber ser susceptible de ser
modificado para adecuarlo a nuevas condiciones de operacin.
Cualquier actualizacin o cambio en el programa deber reflejarse en su
documentacin.


Tipos de Datos

Un dato se define como la expresin general que describe los objetos con los
cuales opera una computadora. Los datos de entrada se transforman por el
programa, despus de las etapas intermedias, en datos de salida.

Los datos se clasifican en diversas categoras, segn el tipo de mquina o del
lenguaje en uso. Generalmente podemos encontrar las siguientes categoras :
o Numricos
o Lgicos
o Cadenas


Datos Numricos

Son aquellos que representan una cantidad o valor determinado. Su
representacin se lleva a cabo en los formatos ya conocidos (enteros, punto y
fracciones decimales si estas existen).

Estos pueden representarse en dos formas distintas :
o Tipo Numrico Entero (integer).
o Tipo Numrico Real (real).


Enteros

Es un conjunto finito de los nmeros enteros. Los enteros son nmeros
completos, no tienen componentes fraccionarios o decimales y pueden ser
negativos y positivos.
Algunos ejemplos son :
o 3 7
o -10 9
o 15.25
o 50

Reales

Consiste en un subconjunto de los nmeros reales. Estos nmeros siempre
tienen un punto decimal y pueden ser positivos o negativos. Un nmero real
consiste de un nmero entero y una parte decimal. Algunos ejemplos son :
o 0.52 664.32
o 6.579 8.0
o -9.3 -47.23



Cadenas

Son los datos que representan informacin textual (palabras, frases, smbolos,
etc). No representan valor alguno para efectos numricos. Pueden distinguirse
porque son delimitados por apstrofes o comillas.

Se clasifica en dos categoras :
o Datos tipo carcter (char)
o Datos tipo Cadena (string)

Datos Tipo Carcter
Es un conjunto finito y ordenado de caracteres que la computadora
reconoce. Un dato de este tipo contiene solo un carcter.
Reconoce los siguientes caracteres :
o Caracteres Alfabticos (A,B,C,Z,a,b,cz)
o Caracteres Numricos (0,1,2,9)
o Caracteres Especiales (+, -, *, /, ^, . , ;, <, >, $, .)

Datos Tipo Cadena (string)
Es un sucesin de caracteres que se encuentran delimitados por una
comilla (apstrofe) o dobles comillas, segn el tipo de lenguaje de
programacin. La longitud de una cadena de caracteres es el nmero de ellos
comprendidos entre los separadores o delimitadores.
Ejemplos :

o Hola Mortimer
o 12 de octubre de 1496
o Enunciado cualquiera

Nota: Los smbolos disponibles para la formulacin de caracteres y de
cadenas son aquellos que se encuentran en el cdigo ASCII.
ASCII (American Standard Code for Information Interchange).


Lgicos

Tambin se le denomina Booleano, es aqul dato que solo puede tomar uno de
dos valores : Falso y verdadero.
Se utiliza para representar las alternativas (si / no) a determinadas condiciones.
Por ejemplo, cuando se pide si un valor entero sea primo, la respuesta ser
verdadera o falsa, segn sea.

Las categoras y tipos que se mencionaron anteriormente se conocen como Tipos
Simples, puesto que no poseen una estructura compleja.

En forma adicional, cada lenguaje puede proporcionar la utilizacin de Tipos
Compuestos, siendo estos, datos que tienen una estructura predeterminada.

Tipos Compuestos
Entre los principales tipos compuestos se encuentran los siguientes:

SUBRANGO : Son aquellos en los que se especifica con precisin el intervalo de
valores vlidos para un dato.
Ejemplos:
0..100 (son enumerativos de tipo entero)
'A'..'Z' (son enumerativos de tipo cadena)
Los Reales no son vlidos para crear enumerativos, ya que su intervalo no est
definido.

ENUMERATIVOS : Son aquellos en los que se definen individualmente los
valores para un dato.
Ejemplos:
(0,25,40,52) Siempre deben ponerse entre parntesis.

DEFINIDOS POR EL USUARIO : Son aquellos que el programador crea para
satisfacer las necesidades del programa en diseo.
CONSTANTES Y VARIABLES

Una Constante es aqulla que no cambia de valor durante la ejecucin de un
programa (o comprobacin de un algoritmo en este caso). Se representa en la
forma descrita para cada categora.

Las Variables son aqullas que pueden modificar su valor durante la ejecucin de
un programa (dem).

Su representacin se da a travs de letras y smbolos generalmente numricos a
los que se les asigna un valor.
Ejemplos:


Constantes Variables
Numricos
36
450.35
0.58
Pi
Nombre
Edad
Ciudad
Estatura
Sexo
Cadena
'A'
'Juan'
'La Paz'
Lgicos
Falso
Verdadero



Operadores y Operandos

Operadores

Un operador es el smbolo que determina el tipo de operacin o relacin que habr
de establecerse entre los operandos para alcanzar un resultado.

Los operadores se clasifican en tres grupos:

o Aritmticos.
o Relacinales.
o Lgicos.







1.- Operadores Aritmticos

Son aquellos que permiten la realizacin de clculos aritmticos. Utilizan
operandos numricos y proporcionan resultados numricos.

Operador Operacin
+ Suma
- Resta
* Multiplicacin
/ Divisin real
Div Divisin entera
Mod Residuo
^ Exponenciacin


Ejemplos:
7+3 = 10 10 Div 4 = 2
7-3 = 4 20 Mod 3 = 2
7*3 = 21 5 Mod 7 = 5
10/4= 2.5 4 ^ 2 = 16

En la expresin 7+3, los valores 7 y 3 se denominan operandos. El valor 10
(resultante de la expresin 7+3) se conoce como resultado de la expresin.

Todos los operadores aritmticos no existen en todos los lenguajes de
programacin, por ejemplo, en Fortran no existen Div y mod.


Operadores Div y Mod
El smbolo / se utiliza para la divisin real, y el operador Div representa la divisin
entera.
Expresin Resultado Expresin Resultado
10.5 / 3.0 3.5 10 Div 3 3
1 / 4 0.25 18 Div 2 9
2.0 / 4.0 0.5 30 Div 30 1
30 / 30 1.0 10 Mod 3 1
6 / 8 0.75 10 Mod 2 0



Operadores Relacionales
Permiten realizar comparaciones de valores de tipo numrico o carcter. Estos
operadores sirven para expresar las condiciones en los algoritmos. Proporcionan
resultados lgicos.

Operador Significado
< Menor que
> Mayor que
= Igual que
<= Menor o igual que
>= Mayor o igual que
<> Diferente de


El formato general para las comparaciones es:
expresin1 operador de relacin expresin2

El resultado de la operacin ser Verdadero o Falso. As por ejemplo, si A=4 y
B=3, entonces:
A>B Es Verdadero
(A-2) < (B-4) Es Falso

Los operadores de relacin se pueden aplicar a cualquiera de los cuatro tipos de
datos estndar: enteros, real, lgico y carcter.

A < K = Verdadero
A > a = Falso
MARIA < JUAN = Falso (se considera la primera letra)
JAIME > JORGE = Falso

Nota: La comparacin de cadenas se rige por el cdigo ASCII.









Prioridad De Operadores Aritmticos y Relacionales

Determina el orden en que habrn de realizarse las operaciones en una expresin
determinada. Para obtener la prioridad se deben conocer las siguientes reglas:

o Las operaciones que estn encerradas entre parntesis se evalan primero.
Si existen diferentes parntesis anidados (interiores unos a otros), las
expresiones ms internas se evalan primero.
o Las operaciones aritmticas dentro de una expresin suelen seguir el
siguiente orden de prioridad.

Operador Prioridad
^ Alta
*, /, Div

+, -, Mod
Relacionales Baja

En caso de coincidir varios operadores de igual prioridad en una expresin
o subexpresin encerrada entre parntesis, el orden de prioridad en este
caso es de izquierda a derecha.

Cuando se desea realizar una operacin con baja prioridad por adelantado,
debe agruparse a los operandos involucrados.

4 + 12 /2 = 10 (sin agrupar)
(4 + 12) /2 = 8 (con agrupador)

Ejemplo:

Obtener los resultados de las expresiones:

- 4 * 7 + 2 ^ 3 / 4 - 5

Solucin:
- 4 * 7+ 8/4 -5
- 28 + 8/4 -5
- 28 + 2 - 5
- 26 - 5
- 31

Los parntesis tienen prioridad sobre el resto de las operaciones.
A * (B+3) La constante 3 se suma primero al valor de B, despus este resultado
se multiplica por el valor de A.

(A*B) +3 A y B Se multiplican primero y a continuacin se suma 3.

A + (B/C) + D Esta expresin equivale a A+ B/C + D


Operadores Lgicos
Son aquellos que permiten la combinacin de condiciones para formar una sola
expresin lgica. Utilizan operandos lgicos y proporcionan resultados lgicos
tambin.

Operador Relacin
not Negacin (No)
and Conjuncin (Y)
or Disyuncin (O)
xor
Disyuncin
Exclusiva (O/SOLO)



Se obtiene Verdadero si:
NOT El operando es falso
AND
Ambos operandos son
verdaderos
OR
Al menos un operando es
verdadero
XOR
Solo uno de los operandos
son verdadero



X Y NOT(X) NOT(Y) X AND Y X OR Y X XOR Y
F F V V F F F
V F F V F V V
F V V F F V V
V V F F V V F


Prioridad De Los Operadores Lgicos

Los operadores aritmticos seguan un orden especfico o de prioridad cuando
existan ms de un operador en las expresiones. De modo similar los operadores
lgicos y relacionales tienen un orden de prioridad.

Ejemplos:

o Not 4 > 6 Produce un error, ya que el operador not se aplica a 4.
o Not (4 > 14) Produce un valor verdadero.
o (1.0 < x) And ( x < z +7.0) Si x vale 7 y z vale 4, se obtiene un valor
falso.


ASIGNACIN ( = )

La operacin de asignacin es el modo de darle valores a una variable. La
operacin de asignacin se representa por el smbolo u operador. La operacin de
asignacin se conoce como instruccin o sentencia de asignacin cuando se
refiere a un lenguaje de programacin.

A fin de manejar datos por medio de variables, estos pueden recibir valores
determinados. El tipo de los valores que pueden recibir dependen de la
declaracin previa de tales variables.

En una asignacin se resuelve, primeramente la expresin (al lado derecho del
smbolo de asignacin) y se asigna el resultado en la variable.
El formato general de asignacin es:

Nom_variable = Expresin

Donde Expresin puede ser una variable o constante, operacin, funcin.
Ejemplo:

A = 9

Significa que la variable A se le ha asignado el valor 9. La accin de asignar es
destructiva, ya que el valor que tuviera la variable antes de la asignacin se pierde
y se reemplaza por el nuevo valor. As en la secuencia de operaciones:

A = 3
A = 189
A = 9

Cuando se ejecutan, el ltimo valor que toma A ser 9, ya que los valores
anteriores a este han desaparecido.
Las acciones de asignacin se clasifican segn sea el tipo de expresiones:
Aritmticas, Lgicas y de Caracteres.


Asignacin Aritmtica
Las expresiones en las operaciones de asignacin son aritmticas:

Suma = 5+10+2
Se evala la expresin 5+10+2 y se asigna a la variable Suma, es decir, 17
ser el valor que toma Suma.

Asignacin Lgica
La expresin que se evala en la operacin de asignacin es lgica. Supngase
que M, N, y P son variables de tipo lgico.

M = 8 < 5
N = M o (7 <= 12)
P = 7 > 6

Tras ejecutar las operaciones anteriores, las variables M,N,P toman los
valores, falso, verdadero, verdadero respectivamente.

Asignacin de caracteres
La operacin que se evala es de tipo carcter.

x = '3 de Mayo de 1999'
La accin de asignacin anterior asigna la cadena de caracteres '3 de Mayo
de 1999' a la variable de tipo carcter x.

ENTRADA Y SALIDA DE INFORMACIN


Los clculos que realizan las computadoras requieren para ser tiles la Entrada
de los datos necesarios para ejecutar las operaciones que posteriormente se
convertirn en resultados, es decir, Salida.

Las operaciones de entrada permiten leer determinados valores y asignarlos a
determinadas variables. Esta entrada se conoce como operacin de Lectura
(read). Los datos de entrada se introducen al procesador mediante dispositivos
de entrada (teclado, unidades de disco, etc). La salida puede aparecer en un
dispositivo de salida (pantalla, impresora, etc). La operacin de salida se
denomina escritura (write).

En la escritura de algoritmos las acciones de lectura y escritura se representan por
los formatos siguientes

leer ( Nom_variable )
escribir (lista de variables de salida)

Ejemplo: Obtener rea de un tringulo.
Entrada
Frmula (A= B*h/2)
Datos (Base, altura)
Proceso
Multiplicar Base y altura.
Dividir resultado de la multiplicacin anterior entre dos.
Mostrar resultado de divisin anterior.
Salida
rea del tringulo.

Algoritmo
Inicio
leer(B)
leer(h)
x = B*h
A = x/2
escribir(A)
Fin

Expresiones
Las expresiones son combinaciones de constantes, variables, smbolos de
operadores, parntesis y nombres de funciones especiales. Las mismas ideas son
utilizadas en notacin matemtica tradicional ; por ejemplo :

a + b ( b+2) Aqu los parntesis indican el orden de clculo.

Cada expresin toma un valor que se determina tomando los valores de las
variables y constantes implicadas y la ejecucin de las operaciones indicadas.

Una expresin consta de operadores y operandos. Segn sea el tipo de
objetos que manipulan, las expresiones se clasifican en :

o Aritmticas
o Relacionales
o Lgicas
o Carcter

El resultado de la expresin numrica es de tipo numrico. El resultado de una
expresin relacional y de una expresin lgica es de tipo lgico. El resultado de
una expresin carcter es de tipo carcter.

Expresiones Aritmticas
Las expresiones aritmticas son anlogas a las frmulas matemticas. Las
variables y constantes son numricas (real o entera) y las operaciones son las
aritmticas.

+ Suma
- Resta
* Multiplicacin
/ Divisin
**, ^ Exponenciacin
div divisin entera
mod mdulo (resto)

Los clculos que implican tipos de datos reales y enteros suelen dar
normalmente resultados del mismo tipo si los operandos lo son tambin. Por
ejemplo, el producto de operandos reales produce un real.

Ejemplo : 4 x 6 se representa por 4 * 6
3
9
se representa por 3 ^ 9
18 div 6 se representa por 18/6

Expresiones Lgicas (booleanas)
Es una expresin que solo pueden tomar los valores de : verdadero y falso. Las
expresiones lgicas se forman combinando constantes lgicas, variables lgicas y
otras expresiones y otras expresiones lgicas utilizando los operadores lgicos
not, and y or, y los operadores relacionales (de relacin o comparacin) =, >, <,
<=, >=, <>.

TECNICAS DE DISEO

Con el objeto de facilitar el diseo de algoritmos y la organizacin de los diversos
elementos de los que se componen se utilizan algunas tcnicas que muestran una
metodologa a seguir para resolver los problemas. Estas tcnicas hacen que los
programas sean ms fciles de escribir, verificar, leer y mantener.
Algunas de las tcnicas ms conocidas son :

o Top Down (diseo descendente)
o Botton Up
o Warnier Orr

Top Down

Es una tcnica para disear que consiste en tomar el problema en forma inicial
como una cuestin global y descomponerlo sucesivamente en problemas ms
pequeos y por lo tanto, de solucin ms sencilla.

La descomposicin del problema original (y de las etapas subsecuentes), puede
detenerse cuando los problemas resultantes alcanzan un nivel de detalle que el
programador o analista pueden implementar fcilmente.

El problema se descompone en etapas o estructuras jerrquicas, de modo que se
puede considerar cada estructura como dos puntos de vista : lo que hace?, y
cmo lo hace ?. Si se considera un nivel n de refinamiento, las estructuras se
consideran de la siguiente forma :

nivel n : Vista desde el exterior.
"lo que hace ?"

Nivel n+1 : Vista desde el interior.
"cmo lo hace ?"

Ejemplo de un diseo descendente (top-down ) de un control de almacn :





Botton Up

Esta tcnica consiste en partir de los detalles ms precisos del algoritmo
completando sucesivamente mdulos de mayor complejidad, se recomienda
cuando ya se cuenta con experiencia y ya se sabe lo que se va a hacer.

Conforme se va alcanzando el desarrollo de mdulos ms grandes se plantea
como objetivo final la resolucin global del problema.

Este mtodo es el inverso del anterior y es recomendable cuando se tiene un
modelo a seguir o se cuenta con amplia experiencia en la resolucin de problemas
semejantes.

La tcnica de Botton Up es frecuentemente utilizada para la realizacin de
pruebas a sistemas ya concluidos.



Warnier Orr

Es una tcnica que utiliza una representacin semejante a la de cuadros
sinpticos para mostrar el funcionamiento y organizacin de los elementos que
conforman el algoritmo.

Bsicamente, utiliza una notacin de llaves para organizar los mdulos y se auxilia
en la siguiente simbologa para indicar operaciones de control.

Smbolo Significado
+ OR (uno, otro o varios)

XOR (uno u otro, solo uno)
(x,y)
puede hacerse tantas veces desde x hasta
y


Nota : Los diagramas Warnier Orr se leen de izquierda a derecha y de
arriba hacia abajo.

Ejemplo de un diagrama de Warnier Orr, de un control de almacn

(0,n) = De cero veces a n veces
(1,n) = De una vez a n veces








TENICAS PARA LA FORMULACION DE ALGORITMOS


Las tcnicas analizadas en la unidad anterior permiten un diseo global del
algoritmo, pero ocasionalmente pueden desatender detalles especficos de este.

Las tres tcnicas de formulacin de algoritmos ms populares son :

o Diagrama de flujo
o Pseudocdigo
o Diagramas estructurados


Diagramas de Flujo

Se basan en la utilizacin de diversos smbolos para representar operaciones
especficas. Se les llama diagramas de flujo porque los smbolos utilizados se
conectan por medio de flechas para indicar la secuencia de operacin.

La simbologa utilizada para la elaboracin de diagramas de flujo es variable y
debe ajustarse a un patrn definido previamente.
























SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO
Smbolo Funcin


















Ejemplo:

Calcular el salario neto de un trabajador en funcin del nmero de horas
trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al
salario bruto en concepto de impuestos (20 por 100).





Ejemplo:
Realizar un diagrama de flujo que permita mostrar en pantalla un mensaje de
mayora o minora de edad segn sea el caso para un nombre especfico.





Pseudocdigo

Es un lenguaje de especificacin de algoritmos. El uso de tal lenguaje hace el
paso de codificacin final (esto es, la traduccin a un lenguaje de programacin)
relativamente fcil.

El pseudocdigo naci como un lenguaje similar al ingls y era un medio
representar bsicamente las estructuras de control de programacin estructurada.
Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse
posteriormente a un lenguaje de programacin. Cabe sealar que el pseudocdigo
no puede ser ejecutado por una computadora.

La ventaja del pseudocdigo es que en su uso en la planificacin de un programa,
el programador se puede concentrar en la lgica y en las estructuras de control y
no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil modificar
el pseudocdigo si se descubren errores o anomalas en la lgica del programa,
adems de todo esto es fcil su traduccin a lenguajes como pascal, COBOL, C,
FORTRAN o BASIC.

El pseudocdigo utiliza para representar las acciones sucesivas palabras
reservadas en ingls (similares a sus homnimos en los lenguajes de
programacin), tales como star,begin, end, stop, if-then-else, while, repeat-
until.etc

Secuencia
Inicio
accin1
:
accin n
Fin

Decisin
Simple
si condicin entonces
accin1
:
accin n
Doble
si condicin then
accin1
accin2
:
en caso contrario
accin1
accin 2




Iteraccin
Fija
para var. Entera inicial hasta final
hacer
accin1
accin2
:
accin n

Condicional al inicio
mientras condicin hacer
accin1
accin2
:
accin n

Condicional al final
Repetir
accin1
accin2
:
accin n
Hasta que condicin



Seleccin
casos selector de
valor1 : accin1
accin2

valor2 : accin1
accin2

valor n : accin1
accin2







Ejercicio :

Se requiere preguntar dos valores, y a continuacin ofrecer un men con las
operaciones bsicas (+, -, *, /). Despus de presentar el resultado se ofrecer la
posibilidad de una nueva operacin.

Declaracin de variables :
Real : X, Y, RESPUESTA
Entero : OPCION
Carcter : OP

Inicio
Repetir
escribir(Primer valor : )
leer(X)
escribir(Segundo valor : )
leer(Y)
escribir(1) Suma )
escribir(2) Resta )
escribir(3) Multiplicacin )
escribir(4) Divisin )
escribir(Qu operacin deseas realizar ? : )
leer(OPCION)
casos OPCION de
1 : RESULTADO X+Y
2 : RESULTADO X-Y
3 : RESULTADO X*Y
4 : si Y=0 entonces
escribir( Error )
RESULTADO 0
en caso contrario
RESULTADO X/Y
escribir (Resultado : ,RESULTADO)
escribir(Deseas otro clculo : [S/N] )
leer(OP)
Hasta que RES = N
Fin










Ejercicio :
Preguntar un nombre y repetirse en pantalla tantas veces como se desee.
(preguntar cantidad de repeticiones), indicando el nmero de repeticin.

Declaracin de variables
Cadena : nom
entero : x, n

Inicio
escribir(Nombre : )
leer(nom)
escribir(Cuntas veces quieres repetirlo ? : )
leer(n)
para x 1 hasta n hacer
escribir(x.- , nom)
Fin


Diagramas Estructurados (nassi-schneiderman)

El diagrama N-S de Nassi-Schneiderman, tambin conocido como diagrama
de Chapin, es como un diagrama de flujo en el que se omiten las flechas de unin
y las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas,
y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una
caja.
Los Diagramas Estructurados, son una tcnica que permite formular
algoritmos mediante una representacin geomtrica y de asignacin de espacios
de un bloque especfico.

Un algoritmo se representa de la manera siguiente:



Una estructura condicional en N-S se representa de la siguiente manera :



Ejemplo: Se desea calcular el salario neto semanal de un trabajador en funcin
del nmero de horas trabajadas y la tasa de impuestos.





Estructura Secuencial
Es aqulla en la que una accin (instruccin) sigue a otra en secuencia. Las tareas
se suceden de tal modo que la salida de una es la entrada de la siguiente y as
sucesivamente hasta el fin del proceso. La estructura secuencial tiene una entrada
y una salida. Su representacin grfica es la siguiente:

ESTRUCTURA SECUENCIAL

....


DIAGRAMA N-S DE UNA ESTRUCTURA SECUENCIAL





PSEUDOCODIGO DE UNA ESTRUCTURA SECUENCIAL

Inicio
:
:
acciones
:
:
fin


Ejemplo:
Calcular el salario neto de un trabajador en funcin del nmero de horas
trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al
sueldo bruto en concepto de impuestos (20 por 100).

Pseudocdigo
Inicio
{clculo salario neto}
leer nombre, horas, precio_hora
salario_bruto = horas * precio
impuestos = 0.20 * salario_bruto
salario_neto = salario_bruto_impuestos
escribir nombre, salario_bruto, salario_neto
Fin



Diagrama de flujo


Diagrama N-S



Condicionales

La especificacin formal de algoritmos tiene realmente utilidad cuando el algoritmo
requiere una descripcin ms complicada que una lista sencilla de instrucciones.
Este es el caso cuando existen un nmero de posibles alternativas resultantes de
la evaluacin de una determinada condicin.

Las estructuras selectivas se utilizan para tomar decisiones lgicas; de ah que se
suelan denominar tambin estructuras de decisin o alternativas.

En las estructuras selectivas se evala una condicin y en funcin del resultado la
misma se realiza una opcin u otra. Las condiciones se especifican usando
expresiones lgicas. La representacin de una estructura selectiva se hace con
palabras en pseudocdigo (if, then, else o bien en espaol si, entonces, sino), con
una figura geomtrica en forma de romba o bien con un tringulo en el interior de
una caja rectangular.

Las estructuras selectivas o alternativas pueden ser:
Simples
Mltiples

Alternativa Simple (si-entonces / if-then)
La estructura alternativa simple si-entonces (en ingls if-then) ejecuta una
determinada accin cuando se cumple una determinada condicin. La seleccin
si-entonces evala la condicin y . . .

o Si la condicin es verdadera, entonces ejecuta la accin S1 (o acciones caso
de ser S1 una accin compuesta y constar de varias acciones).

o Si la condicin es falsa, entonces no hacer nada.

A continuacin se muestra la grfica de la estructura condicional simple.



Pseudocdigo en espaol
Si <condicin> Entonces
<accin S1>
Fin_si

Pseudocdigo en ingls
If <condicin> then
<accin S1>
end_if

Diagrama N-S



Alternativas Mltiples (segn_sea, caso de / case)
Cuando existen ms de dos elecciones (alternativas) posibles, es cuando se
presenta el caso de alternativas mltiples. Si el nmero de alternativas es grande
puede plantear serios problemas de escritura del algoritmo y naturalmente de
legibilidad.
La estructura de decisin mltiple evaluar una expresin que podr tomar n
valores distintos 1,2,3,4,..n . Segn que elija uno de estos valores en la condicin,
se realizar una de las n acciones, o lo que es igual, el flujo del algoritmo seguir
un determinado camino entre los n posibles.

La representacin grfica se muestra a continuacin:

Diagrama de Flujo


Diagrama N-S

Modelo 1



Modelo 2


Pseudocdigo
En ingls la estructura de decisin mltiple se representa

Case expresin of
[e1]: accin S1
[e2]: accin S2
:
[en]: accin Sn

else
accin Sx

end_case







Ejemplo:

Se desea disear un algoritmo que escriba los nombres de los das de la semana
en funcin del valor de una variable DIA introducida por teclado.
Los das de la semana son 7; por consiguiente, el rango de valores de DIA
ser 1..7, y caso de que DIA tome un valor fuera de este rango se deber producir
un mensaje de error advirtiendo la situacin anmala.

Inicio
Leer DIA
Segn_sea DIA hacer
1: escribir('Lunes')
2: escribir('Martes')
3: escribir('Mircoles')
4: escribir('Jueves')
5: escribir('Viernes')
6: escribir('Sabado')
7: escribir('Domingo')
else
escribir('Error')
fin_segn
fin

ESTRUCTURAS REPETITIVAS

Las estructuras que repiten una secuencia de instrucciones un nmero
determinado de veces se denominan Bucles y se denomina Iteracin al hecho de
repetir la ejecucin de una secuencia de acciones. Entre las estructuras repetitivas
se encuentran:

o Mientras (while)
o Repetir (repeat)
o Desde (for)


ESTRUCTURA MIENTRAS (WHILE)

La estructura repetitiva while, es aqulla en que el cuerpo del bucle se repite
mientras se cumple una determinada condicin, su representacin grfica es:


Pseudocdigo en espaol Pseudocdigo en ingls
Mientras condicin hacer while condicin do
Accin S1 <Acciones>
Accin S2 :
: End_while
accin Sn
Fin_mientras


Diagrama N-S


Ejemplo:
Contar los nmeros enteros positivos introducidos por teclado. Se consideran
dos variables enteras NUMERO y CONTADOR (contar el nmero de enteros
positivos). Se supone que se leen nmeros positivos y se detiene el bucle cuando
se lee un nmero negativo o cero.

Pseudocdigo

Inicio
contador = 0
Leer (numero)
Mientras numero > 0 hacer
contador = contador + 1
Leer (numero)
Fin_Mientras
Escribir('El nmero de enteros positivos es : ', contador)
Fin






























Diagrama de Flujo



Representacin en N-S

ESTRUCTURA REPETIR (REPEAT)

Esta estructura se ejecuta hasta que se cumpla una condicin determinada que se
comprueba hasta el final del bucle. Se ejecuta al menos una vez.

El bucle repetir-Hasta_que se repite mientras el valor de la expresin booleana
de la condicin sea falsa, justo la opuesta de la sentencia mientras.

Pseudocdigo en Espaol Pseudocdigo en Ingls
Repetir Repeat
<acciones> <acciones>
: :
Hasta que <condicin> Until <condicin>


Diagrama de Flujo de Repetir


Diagrama N-S de Repetir













ESTRUCTURA DESDE / PARA (FOR)

En muchas ocasiones se conoce de antemano el nmero de veces que se desean
ejecutar las acciones de un bucle. En estos casos en el que el nmero de
iteraciones es fija, se debe usar la estructura desde o para.

La estructura Desde ejecuta las acciones del cuerpo del bucle un nmero
especfico de veces y de modo automtico controla el nmero de iteraciones o
pasos a travs del cuerpo del bucle.

Pseudocdigo en Espaol Pseudocdigo en Ingls
Desde variable(v)= vi Hasta vf hacer For variable (v)= vi To vf Do
<acciones> <acciones>
:
Fin_desde Next

Donde:
v: Variable ndice
vi, vf: Valores inicial y final de la variable




























Diagrama de Flujo de la estructura Desde/Para



Diagrama N-S de la estructura Desde/Para

Vous aimerez peut-être aussi