Algoritmos
Algoritmos
Algoritmos
Un algoritmo es un mtodo para resolver un problema mediante una serie de pasos precisos
(indicar el orden de realizacin en cada paso), definidos (si se sigue dos veces, obtiene el resultado cada
vez) y finitos (tiene fin; un nmero determinados de pasos). Proviene de un nombre de un matemtico y
astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX. Un
algoritmo debe producir un resultado en un tiempo finito. Los mtodos que utilizan algoritmos se llaman
mtodos algortmicos, en oposicin a los mtodos que implican algn juicio o interpretacin que se
denominan mtodos heursticos. Los primeros se pueden implementar en la computadora, los segundos
no han sido convertidos fcilmente en las computadoras. Ejemplos de algoritmos son: instrucciones para
montar una bicicleta, hacer una receta de cocina, obtener el mximo comn divisor de dos nmeros, etc.
Pueden expresarse mediante frmulas, diagramas de flujo o N-S y pseudocdigos.
Programa. Un programa de computadora o un programa de 'software' (usualmente abreviado como un
programa), es una lista de instrucciones paso a paso escritas para una arquitectura de computadora en un
lenguaje de computacin en particular. Estos bloques de instrucciones, una vez compilados (por lo
general), son cargados a memoria para su ejecucin.
Programacin. Proceso de escribir un programa o software. Cuando un programa se ejecuta se deben de
teclear datos de entrada, esta informacin ser procesada por la computadora.
Lenguaje de programacin. Es una tcnica de comunicacin estandarizada para describir las
instrucciones a una computadora. Cada lenguaje de programacin tiene sus propias reglas de sintaxis y
semntica. usadas que definen un programa de computadora. Un lenguaje habilita al programador a
especificar de forma precisa que datos son dados a la computadora, como son almacenados y
transmitidos estos datos, y que acciones bajo que circunstancias van a ser tomados. Los lenguajes de
programacin son del tipo de los lenguajes de computadora, excluyendo al pseudocdigo el cual es
exclusivamente para la comunicacin humana. Es decir, sirven para escribir programas que permitan la
comunicacin usuario/mquina.
Lenguaje mquina. El cdigo mquina o lenguaje mquina es un sistema de instrucciones y datos
directamente entendibles por un CPU de una computadora. Las "palabras" del lenguaje mquina son
llamadas instrucciones, las cuales tienen una accin elemental por el CPU. Cada CPU tiene su propio
conjunto de instrucciones de lenguaje mquina.
Compilador. Un compilador es un programa de computadoras que traslada el texto escrito en un
lenguaje de computacin (fuente) en otro lenguaje de computacin (destino). La secuencia original por
lo general se conoce como cdigo fuente, y la salida es llamada cdigo objeto. La razn ms comn en
que se traslada el cdigo fuente, es en un programa ejecutable el cual es una serie de representaciones
binarias de instrucciones mquina
Intrprete. Lenguaje de programacin el cual ejecuta los programas desde su cdigo fuente. An se
tienen algunas buenas caractersticas sobre los compiladores.
Pseudocdigo. Es una descripcin de un algoritmo de programacin en computadora, el cual usa las
convenciones estructurales de los lenguajes de programacin, pero omite detallar las subrutinas o la
sintaxis de un lenguaje especfico.
una localidad, de tal manera que este objeto puede ser despus accesado mediante una variable, tal como
se le refiere a alguien mediante su nombre.
Constante. Una constante es una variable inmutable la cual es referenciada a un lugar donde el valor
no puede ser cambiado. El valor de una constante se asigna una sola vez, por ejemplo, HorasPorDia=24.
La constante puede ser referenciada mltiples veces en un programa. Usar una constante puede
simplificar el mantenimiento del cdigo, disminuyendo el cambio de su valor y suplir un significado a
esta constante y consolidndola, como por ejemplo al inicio del programa.
Distinguir los tipos de datos: simples (enteros, reales, caracteres, lgicos, enumerados y subrango) y
estructurados (cadena de caracteres, arreglos y registros).
Identificar las reglas para la asignacin de nombres a variables y constantes.
Los identificadores que representan los nombre de mdulos, subprogramas, funciones, tipos, variables y
otros elementos, debe ser elegidos apropiadamente para conseguir programas legibles. El objetivo es
usar interfaces significativos que ayuden al lector a recordar el propsito de un identificador sin tener
que hacer referencia continua a declaraciones o listas externas de variables. Hay que evitar las
abreviaturas crpticas
Identificadores largos se deben de utilizar para la mayora de los objetos significativos de un programa,
as como los objetos utilizados en muchas posiciones, tales como, por ejemplo, el nombre de un
programa usado frecuentemente. Identificadores ms cortos se utilizarn estrictamente para los objetos
locales: as i, j, k son tiles para ndices de arrays en un bucle, variables, contadores de bucle, etc., y son
ms expresivos que indice, VariableDeControl, etc.
Los identificadores deben utilizar letras maysculas y minsculas. Cuando un identificador consta de
dos o ms palabras, cada palabra debe de comenzar con una letra mayscula. Una excepcin son los
tipos de datos definidos por el usuario, que suelen comenzar con una letra minscula. As,
identificadores idneos son: SalarioMes, Nombre, MensajeUsuario, MensajesDatosMal.
Usar nombres para nombras objetos de datos, tales como variables, constantes y tipos. Utilizar
Salario mejor que APagar o Pagar.
o Utilizar verbos para nombrar procedimientos. LeerCaracter, LeerSigCar, CalcularSigMov son
procedimientos que realizan estas acciones mejor que SigCar o SigMov (siguiente movimiento).
o Utilizar formas del verso "ser" o "estas" para funciones lgicas. SonIguales, EsCero, EsListo y
EsVacio se utilizan como variables y funciones lgicas.
Los nombres de los identificadores de objetos deben sugerir el significado del objeto al lector del
programa. Ser nemnicas.
Es conveniente, tambin, definir constantes con nombres y evitar las explcitas siempre que sea posible.
Por ejemplo, no utilizar 7 para el da de la semana 3.141592 para representar el valor de la constante.
o
Clasificar los operadores. Las expresiones son combinaciones de constantes, variables, smbolos de
operacin, parntesis y nombres de funciones especiales. Una expresin consta de operandos y
operadores. Segn sea el tipo de objetos que manipulan. El resultado de una expresin aritmtica es de
tipo numrico, el resultado de la expresin relacional y de una expresin lgica, es de tipo lgico; el
resultado de una expresin carcter es de tipo carcter. Las expresiones se clasifican en:
Aritmticas. Son anlogas a las frmulas matemticas. Las variables y constantes son numricas
(reales o enteras) y las operaciones son las aritmticas. Los operadores aritmticos son:
+
suma
resta
multiplicacin
divisin
**, exponenciacin
div
divisin entera
mod
mdulo (resto)
no a
falso
verdadero
a
verdadero
verdadero
falso
falso
b
verdadero
falso
verdadero
falso
ayb
verdadero
falso
falso
falso
a
b
aob
verdadero
verdadero
verdadero
verdadero
falso
verdadero
falso
verdadero
verdadero
falso
falso
falso
Explicar lar siete fases para la solucin de problemas en la computadora. El proceso de resolucin de un
problema en una computadora conduce a las escritura de un programa y a la ejecucin en la misma.
Aunque el proceso de disear un programa es -esencialmente- un proceso creativo, se puede considerar
una fase o pasos comunes, que generalmente deben de seguir todos los programadores. :
Definicin del problema y anlisis de los datos. Esta fase requiere una clara definicin, donde
se contemple exactamente lo que debe hacer el programa y el resultado o solucin deseada. La
computadora requiere especificaciones detalladas de entrada y salida. Qu entradas se requieres?
(tipo y cantidad) Cul es la salida deseada? (tipo y cantidad) Qu mtodo produce la salida
deseada?.
En palabras sencillas, un algoritmo es una serie de instrucciones que realizadas en orden conducen
a la solucin de un problema determinado. Tambin se puede decir que un algoritmo es la fase
preliminar a escribir un programa en cualquier lenguaje de programacin, por lo que la forma de
escribirlo puede ser muy personal segn el programador que lo est diseando, pero en general se
debe hacer en una forma tan clara que cualquier otro programador pueda coger dicho algoritmo,
entenderlo fcilmente y poderlo traducir a su lenguaje de programacin favorito.
Por lo tanto hay varias formas de escribir un algoritmo en el papel: Una de ellas es el diagrama de
flujo que consta de rectngulos que encierran las diferentes instrucciones y lneas que apuntan
hacia la siguiente instruccin de modo que no se pierda el orden. Adems, las operaciones
elementales como la entrada de datos, salida de datos, ciclos, etc. (ms adelante se explicarn) se
reconocen de las dems instrucciones porque no se encierran en rectngulos sino en otra clase de
figuras por lo que segn la figura en la que est encerrada la instruccin se reconoce su significado;
Es muy didctico, por lo que es muy fcil de entender as ni siquiera se conozca al programador
que dise el algoritmo. Tambin existe el pseudocdigo donde cada instruccin ya no es un dibujo
sino una lnea escrita y las operaciones elementales se escriben de una forma tan clara que sea
imposible que algn programador no las entienda. Para este tutorial utilizaremos los DIAGRAMAS
DE FLUJO, y usaremos el programa DFD para implementar los ejemplos y hacer ms sencilla la
explicacin.
Casi siempre un algoritmo se compone de un inicio, un final y una serie de instrucciones las cuales
pueden estar complementadas con condiciones, ciclos, etc. En los diagramas de flujo, el inicio y el
final de un algoritmo se escriben dentro de un CIRCULO a manera de etiqueta, tal y como lo
muestra la siguiente imagen:
Obviamente, entre estas dos "etiquetas" estarn todas las instrucciones de un algoritmo
determinado. Para realizar las instrucciones en un algoritmo, se utilizan bsicamente Variables y
Operadores.
Como ya se haba indicado en otro apartado de este curso, las variables son campos en memoria que pueden
almacenar cualquier tipo de informacin (nmeros, letras, frases, valores de verdad, etc. ) que pueden tener
cualquier nombre, que preferiblemente debe ser mnemotcnico, es decir, que tenga relacin con l o los datos
que se almacenarn en la variable. Los datos numricos se almacenan en las variables una vez en el ordenador
en forma binaria (base 2), y los datos de caracteres como letras y frases se almacenan segn el cdigo ASCII de
las letras, que es un cdigo aceptado mundialmente para representar todos los caracteres posibles (Por lo menos
en muchos idiomas). Este cdigo es un numero desde 0 hasta 255 por lo que se almacena tambin en forma
binaria. Los nombres de las variables deben seguir unas convenciones generales, que se crearon para evitar
confusiones entre las variables y los operadores aritmticos. Estas son:
No pueden comenzar con nmeros.
No pueden contener smbolos u operadores en ninguna posicin del nombre, excepto el carcter "_".
No pueden contener espacios.
Como ejemplo aqu hay varios nombres para variables:
A : Es un nombre correcto, aunque posiblemente muy poco mnemotcnico.
A23: correcto.
OJO5MALO : correcto.
HOLA# : incorrecto, ya que tiene un smbolo dentro de su nombre.
A 23 : incorrecto, porque hay un espacio dentro del nombre.
A-23 : incorrecto.
A_23 : correcto, ya que el carcter "_" es el nico smbolo permitido para nombrar variables; se puede
usar para separar palabras dentro del nombre de una misma variable. Otro ejemplo podra ser:
PRIMER_NOMBRE o RADIO_CIRCULO.
Una caracterstica de las variables es que son Case Sensitive, es decir que son sensibles al hecho de s el nombre
fu escrito con maysculas o minsculas, por lo que si se llam a una variable A23, dentro de las dems
instrucciones del algoritmo, cuando se haga referencia a sta variable, no podr utilizarse a23 ya que se
tomaran como dos variables diferentes.
Para almacenar valores a las variables se utilizar el operador de asignacin ( < - ) y se lee "a 'variable' se le
asigna 'valor'".
Como se dijo anteriormente, una variable puede contener nmeros, letras, frases, etc., por lo que en un lenguaje
de programacin, sera necesario al principio del algoritmo definir que clase de datos se van a almacenar y en
que variables, pero en el caso del diagrama de flujo esto no es necesario y suponemos que una variable puede
ser de cualquier "tipo", pero al asignarle un valor que no sea numerico (una letra, o una frase) debemos tener en
cuenta que dicho valor debe estar entre comillas simples (ej.: 'frase').
Los tipos de datos que el DFD soporta son tres: Real que van desde -1*102000 hasta el 1*102000 Ejemplo: 1998,
1.00007, 0, 328721, -3247781; los de cadena de caracteres que es una secuencia de caracteres encerrada entre
comillas simples. Por ejemplo: 'Diagramar es fcil', 'Mxico', '1995'; y los de tipo lgico que indican valores de
verdadero y falso y se representan por una V o F encerradas entre puntos. Ejemplos: .V., .F., .f., .v.
En DFD las variables son tratadas sin diferenciar a las maysculas de las minsculas; es decir, CASA equivale a
casa. Cuando una variable recibe un valor por primera vez, el tipo de dato de sta ser igual al tipo de dato del
valor.
En los diagramas de flujo, las asignaciones a variables se encierran en RECTANGULOS para diferenciarlas de
los dems tipos de instrucciones. Aqui tenemos varios ejemplos de asignaciones en diagramas de flujo:
Como se puede ver en el segundo rectngulo se le asign a otra variable (Edad2) el valor de Edad (el cual
contena 23), por lo que obviamente Edad2 termina valiendo 23, pero que pasara si a Edad no se le hubiera
asignado
nada
antes?
En este caso, la variable Edad vale lo que se conoce como BASURA, es decir, cualquier valor no controlado en
el
algoritmo.
DEFINICIN - BASURA.- Cuando se hace uso de una variable, se debe ver si se le ha asignado un valor antes
de usarla, ya que de lo contrario contiene lo que se denomina BASURA. La basura simplemente aparece
cuando a una variable se le asigna espacio en la memoria del ordenador. Dicho espacio no est en blanco ya que
como los datos internamente en el ordenador se manejan en forma binaria hay una cantidad determinada de
unos y ceros en ese espacio (Estados aleatorios que se crean cada vez que se enciende el ordenador). Si no se
asigna a dicha variable un valor y simplemente se utiliza en una operacin aritmtica o una asignacin, el valor
de la variable depender de los unos y ceros que haba cuando se le asign el espacio, es decir, no se sabr con
seguridad cual es el valor de esa variable en ese momento, por lo que podra producir graves errores en las
siguientes
EJEMPLO
instrucciones
EN
del
algoritmo.
DFD:
Para implementar el ejemplo anterior en DFD, ejecutamos el programa DFD.EXE e inmediatamente aparecer
un "algoritmo" con las etiquetas de inicio y final, pero sin instrucciones intermedias.
En la parte superior izquierda se ver un men con botones los cuales tienen los simbolos para los diferentes
tipos
de
instrucciones
en
un
algoritmo.
Para asignacin se elige el rectngulo:
Luego se coloca el cursor del MOUSE sobre la posicin en la cual se va a colocar la instruccin de asignacin
(en este caso, entre las etiquetas de inicio y fin) hasta que aparezca el dibujo de una "mano".
Se
hace
click
e
inmediatamente
aparece
el
rectngulo
de
asignacin.
Ahora, para colocar las variable se hace doble click sobre el nuevo rectngulo y voal, ya podemos colocar las
variables y los valores a asigarles.
En el programa DFD, se hace un pequeo control a las variables que contengan BASURA.
Esto se puede apreciar ya que si implementamos el ejemplo en el que a "Edad" no se le asignaba ningun valor,
sale un error como el siguiente:
Los operadores son los que permiten efectuar las operaciones aritmticas en el algoritmo. Los operadores
bsicos que se van a usar en este tutorial son los siguientes:
+ , - , * , / : Suma, resta, multiplicacin y divisin respectivamente.
Son las mismas operaciones que en el clculo normal con una pequea diferencia: El resultado de estas
operaciones puede ser un numero entero o un fraccionario, por lo que se deber especificar cual es el resultado
que se desea. Para esto se debe colocar en la DOCUMENTACIN DEL ALGORITMO (que veremos ms
adelante) que la variable no SOPORTA FRACCIONES (entero), ya que por defecto, todas las variables
nmericas podrn ser fracciones. En DFD no podemos especificar cuando deseamos que una variable no
posea fracciones ya que todas las variable numericas son "reales".
Tambin vamos a usar operadores ms complejos como son:
MOD: D el residuo de dividir un nmero entre otro sin DECIMALES.
Ejemplos:
10 MOD 3 = 1; debido a que el 3 est en el 10, 3 veces; y 3*3=9 por lo que el residuo es 1.
10 MOD 4 = 2; debido a que el 4 est en el 10, 2 veces; y 4*2=8 por lo que el residuo es 2.
^: Potenciacin.
Ejemplo: 10 ^ 3 = 1000.
EJEMPLO EN DFD:
En el ejemplo anterior, la variable "res" terminar valiendo 1.5, pero si se especifica que es una variable que no
soporta fracciones (cosa que no se permite en el programa DFD), su valor ser 1 (Se le quita la parte decimal).
IMPORTANTISIMO: Las operaciones en un ordenador tienen un cierto orden de importancia, es decir,
algunas se efectan primero que otras. Este orden en forma descendente es:
Potenciacin, modulo, divisin, multiplicacin, suma y resta.
Si no se coloca ningn parntesis en la operacin aritmtica, el orden anterior es el que tiene la mquina para
realizar las operaciones, pero al colocar algo entre parntesis, esa parte de operacin primar sobre las dems.
EJEMPLO EN DFD:
En este caso "n1" valdr 8 ya que la divisin prima sobre la suma por lo que primero se resuelve 10/2 (5) y
luego se suma el 3.
En cambio, para n2 el parntesis hace que la operacin interna prime sobre las dems, por lo que el resultado
sera 13/2 , o sea 6.5 !!!
Nota: Obsrvese que segn se coloquen o no parntesis en las distintas operaciones aritmticas los resultados
cambian, por lo que en el momento de escribir una operacin en un algoritmo, se debe tener muy en cuenta la
primaca de los operadores.
A parte de los operadores matematicos, tambien existen los llamados operadores lgicos.
Operadores lgicos: >,<,<=,>=,=,!=,<>,AND,OR,NOT): Sirven para hacer preguntas lgicas, como si una
variable es mayor que otra, igual, menor o igual, diferente, etc. Retornan lo que se conoce como un valor de
verdad, (TRUE o FALSE), (VERDADERO o FALSO).
En DFD el valor de FALSO se representa como .F. y VERDADERO como .V.
El operador "diferente de", se podr especificar con ' != ' o con ' < > ' , segn el programador lo elija.
Los operadores AND,OR,NOT se usan para ligar operadores logicos.
AND indica que las dos condiciones deben ser verdaderas para que el resultado sea verdadero.
OR indica que solo una de las dos condiciones debe ser verdadera para que la respuesta sea verdadera.
NOT indica que la condicion debe ser falsa para que la respuesta sea verdadera.
El trmino flujo de control se refiere al orden en que se ejecutan las sentencias del programa. A
menos que se especifique expresamente, el flujo normal de control de todos los programas es el
secuencial. Este trmino significa que las sentencias se ejecutan en secuencia, una despus de
otra, en el orden en que se sitan dentro del programa; las tres (o cuatro) estructuras
mencionadas anteriormente, modifican de un modo preciso y definido dicha ejecucin.
Pseudocdigo en espaol
si <condicin> entonces
Pseudocdigo en ingls
if <condicin> then
<accin 1>
.
.
.
<accin n>
fin_si
<accin 1>
.
.
.
<accin n>
endif
Sintaxis en PASCAL
if (condicin) then
begin
Sintaxis en C/C++
if (condicin)
{
sentencias
end;
sentencias
}
Dobles. La estructura anterior es muy limitada y normalmente se necesitar una estructura que
permita elegir entre dos opciones o alternativas posibles, en funcin del cumplimiento o no de una
determinada condicin. Si la condicin es verdadera se ejecuta la accin uno, si es falsa se ejecuta
la accin dos.
Pseudocdigo en espaol
si <condicin> entonces
Pseudocdigo en ingls
if <condicin> then
<accin 1>
si_no
<accin 1>
else
<accin 2>
fin_si
<accin 2>
endif
Sintaxis en PASCAL
if (condicin) then
begin
Sintaxis en C/C++
if (condicin)
{
grupo sentencias 1
end
else
grupo sentencias 1
}
else
begin
grupo sentencias 2
end;
grupo sentencias 2
Mltiples. Con frecuencia es necesario que existan ms de dos elecciones posibles. Se evaluar una
expresin que podr tomar n valores distintos. Segn se elija uno de estos valores, se realizar
una de las n acciones, o lo que es igual, el flujo del algoritmo seguir un determinado camino entre
los n posibles.
Pseudocdigo en espaol
segn_sea expresin (E) hacer
e1: accion(es)1
e2: accion(es)2
en: accion(es)n
si_no accion(es)x
fin_segn
Pseudocdigo en ingls
case expresin of
[e1]: accion(es)1
[e2]: accion(es)2
[en]: accion(es)n
otherwise accion(es)x
end_case
Sintaxis en PASCAL
Sintaxis en C/C++
switch (expresin)
{
case valor1
sentencia1
sentencia 2
.
.
break
case valor2
sentencia1
sentencia 2
.
.
break
.
.
default
sentencia1
sentencia 2
.
.
}
plicar las estructuras de control selectivas anidadas (D)
Las estructuras de seleccin si-entonces y si-entonces-si_no implica la seleccin de una de dos
alternativas. Es posible utilizar la instruccin si para disear estructuras de seleccin que
contengan ms de dos alternativas. Por ejemplo, una estructura si-entonces puede contener otra
estructura si-entonces, y esta estructura si-entonces puede contener otra, y as sucesivamente
cualquier nmero de veces; a su vez, dentro de cada estructura puede existir diferentes acciones.
.
.
.
<acciones>
fin_si
fin_si
Una estructura de seleccin de n alternativas o de decisin mltiple puede ser construida utilizando
una estructura si con este formato:
si <condicin1> entonces
<acciones>
si_no
si <condicin2> entonces
<acciones>
si_no
si <condicin3> entonces
<acciones>
si_no
.
.
<acciones>
fin_si
fin_si
fin_si
Una estructura selectiva mltiple constar de una serie de estructuras si, unas interiores a otras.
Como las estructuras si pueden volverse bastante complejas para que el algoritmo sea claro, ser
preciso utilizar indentacin (sangra o sangrado), de modo que exista una correspondencia entre
las palabras reservadas si y fin_si, por un lado, y entonces y si_no, por otro.
Aplicar las estructuras de control repetitivas: mientras, repetir/hasta (hacer - mientras) y desde (para).
Las computadoras estn diseadas especialmente para todas aquellas pequeas aplicaciones en las
cuales una operacin o conjunto de ellas deben repetirse muchas veces. 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. Un ejemplo
aclarar la cuestin.
Supongamos que se desea sumar una lista de nmeros escritos desde el teclado -por ejemplo,
calificaciones de los alumnos de una clase-. El medio conocido hasta ahora para leer los nmeros y
aadir sus valores a una variable SUMA que contenga las sucesivas sumas parciales. La variable
SUMA se hace igual a cero y a continuacin se incrementa en el valor del nmero cada vez que uno
de ellos se lea. El algoritmo que resuelve este problema es:
algoritmo sumarcalificaciones
var
entero : suma, numero
inicio
suma 0
leer (numero)
suma suma + numero
leer (numero)
suma suma + numero
leer (numero)
fin
Y as sucesivamente para cada nmero de la lista. En otras palabras, el algoritmo repite muchas
veces las acciones:
leer (numero)
suma suma + numero
Tales opciones repetidas se denominan bucles o lazos. La accin (o acciones), que se repite en un
bucle se denomina iteracin. Las dos principales preguntas a realizarse en el diseo de un bucle
son qu contiene el bucle? y cuntas veces se debe repetir?
Cuando se utiliza un bucle para sumar una lista de nmeros, se necesita saber cuntos nmeros se
han de sumar. Para ello necesitaremos algn medio para detener el bucle. En el ejemplo anterior
usaremos la tcnica de solicitar al usuario el nmero que desea, por ejemplo, N. Existe dos
procedimientos para contar el nmero de iteraciones, usar una variable TOTAL que se inicializar a
la cantidad de nmeros que se desea y a continuacin se decrementa en uno cada vez que el bucle
se repite (este procedimiento aade una accin ms al cuerpo del bucle: TOTAL TOTAL - 1), o
bien inicializar la variable TOTAL en 0 o en 1 e ir incrementando en uno a cada iteracin hasta
llegar al nmero deseado.
algoritmo suma_numero
var
entero : n, total
real : numero, suma
inicio
leer ( n )
total n
suma 0
mientras total > 0 hacer
leer (numero)
suma suma + numero
total total - 1
fin_mientras
escribir ('La suma de los ', n ,'nmeros es ', suma)
fin
inicio
// inicializacin de variables
repetir
acciones S1, S2, ...
salir segn condicin
acciones Sn, Sn+1, ...
fin_repetir
Aunque la condicin de salida se indica en el formato anterior en el interior del bucle - y existen lenguajes
que as lo contienen expresamente -, lo normal es que la condicin se indique al final o al principio del
bucle, y as se consideran tres tipos de instrucciones o estructuras repetitivas o iterativas generales y una
particular que denominaremos iterar, que contiene la salida en el interior del bucle. Estas son:
desde (for)
mientras (while)
hacer-mientras (do while)
repetir (repeat)
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 fijo, se debe de usar la
estructura para o desde (for en ingls). La estructura desee ejecuta las acciones del cuerpo del
blucle un nmero especificado de veces y de modo automtico controla el nmero de iteraciones o
pasos a travs del cuerpo del bucle.
La representacin grfica de para o desde ("for") es:
bucle, despus de lo cual se evala de nuevo la expresin booleana. Este proceso se repite una y
otra vez mientras la expresin booleana (condicin) sea verdadera. Las pruebas de las
expresiones booleanas, es conveniente que sean mayor o menor en lugar de pruebas de igualdad o
desigualdad, y ms cuando la comparacin son nmeros reales, en este caso, utilice las relaciones
<, <=, > >=.
La representacin grfica de mientras ("while") es:
.
.
.
hasta_que expresin
Las diferencias entre mientras y repetir son que: mientras termina cuando la condicin es falsa,
mientras que repetir termina cuando la condicin es verdadera; y en la estructura repetir el
cuerpo del bucle se ejecuta siempre al menos una vez; por el contrario, mientras es ms general
y permite la posibilidad de que el bucle pueda no ser ejecutado. Para usar la estructura repetir
debe estar seguro de que el cuerpo del bucle -bajo cualquier circunstancia- se repetir al menos
una vez.
Aplicar las estructuras de control repetitivas anidadas
Es posible insertar un bucle dentro de otro siguiendo la regla de que la estructura interna deber
estar totalmente incluida en la estructura externa, y no puede existir solapamiento. Las variables
ndice o de control de los bucles toman valores de modo tal que para cada valor de la variable
ndice del ciclo externo, se debe ejecutar totalmente el bucle interno. Tambin se puede anidar
cualquier tipo de estructura repetitiva con tal de que cumpla la regla anterior.
Distinguir la funcin de una variable acumulador, contador o bandera (PA)
Un acumulador es un campo o variable que sirve para llevar una suma o cuenta de diferentes
valores.
Un contador es un acumulador que incrementa en uno una determinada variable.
Una bandera es la variable que sirve de centinela, con la cual, podremos evaluar una expresin
para iniciar o terminar un ciclo.
Distinguir la terminologa de estructura de datos
Una estructura de datos es la forma de almacenar datos en la computadora, de tal manera que
puedan ser usados de forma eficiente (tiempo y memoria). Por lo general, se escoge la estructura
de datos lo cual permitir un uso ms eficiente del algoritmo. Los tipos de datos ms frecuentes
utilizados en los diferentes lenguajes de programacin son:
o Datos simples
Estndar: entero (integer), real (real), carcter (char) y lgico (boolean)
Definidos por el programador - no estndar - : subrango (subrange) y el
enumerativo (enumerated)
o Datos estructurados
Estticos: arreglos - arrays - vectores/matrices, registros (records), ficheros archivos (files), conjuntos (set) y las cadenas (string)
Dinmicos: listas (listas/colas), listas enlazadas, rboles y grafos
Los tipos de datos simples o primitivos significan que no estn compuestos por otras estructuras de
datos; los ms frecuentes y utilizados, en casi todos los lenguajes son: enteros, reales y caracter
(char), siendo los tipos lgicos, subrango y enumerativos propios de lenguajes estructurados como
Pascal. Los tipos de datos compuestos estn construidos basados en tipos de datos primitivos; el
ejemplo ms representativo es la cadena (string) de caracteres. Los tipos de datos simples pueden
ser organizados en diferentes estructuras de datos: estticas y dinmicas. Las estructuras de
datos estticas son aquellas en el que el tamao ocupado en memoria se define antes de que el
programa se ejecute y no puede modificarse dicho tamao durante la ejecucin del programa.
Ests estructuras estn implementadas en casi todos los lenguajes: array (vectores/tablas matrices), registros, ficheros o archivos (los conjuntos son especficos del lenguaje Pascal). Las
estructuras de datos dinmicas no tienen las limitaciones o restricciones en el tamao de
memoria ocupada que son propias de las estructuras estticas. Mediante el uso de un tipo de datos
especficos denominados puntero. Es posible construir estructuras de datos dinmicas que son
soportados por la mayora de los lenguajes que ofrecen soluciones eficaces y efectivas en la
solucin de problemas complejos - Pascal es el lenguaje tipo por excelencia con posibilidad de
estructuras de datos dinmicos -. Las estructuras dinmicas son las listas - enlazadas, pilas, colas
-, rboles - binarios, rbol-b, bsqueda binaria - y grafos.
La eleccin del tipo de estructura depender esencialmente del tipo de aplicacin y, en menor
medida, del lenguaje. Una caracterstica importante es que en los tipos de datos simples cada
variable representa a un elemento; y en los estructurados tienen un identificador comn (nombre)
que puede representar mltiples datos individuales, pudiendo cada uno de stos ser referenciados
independientemente.
Identificar los tipos de datos estructurados estticos (arreglos)
Un arreglo es un conjunto finito y ordenado de elementos homogneos. La propiedad ordenado
significa que el elemento primero, segundo, tercero, ..., ensimo de una array puede ser
identificado. Los elementos de un array son homogneos, es decir, del mismo tipo de datos. un
array puede estar compuesto de todos sus elementos de tipo cadena, otro puede tener todos sus
elementos de tipo entero, etc. Los array se conocen tambin como matrices -en matemticas- y
tablas -en clculos financieros-.
Define el concepto de arreglo unidimensional (vector) y arreglo bidimensional (matriz) (PA)
El tipo de dato ms simple de un arreglo es el arreglo unidimensional o vector (matriz de una
dimensin). Un ejemplo de un vector de una dimensin denominado NOTAS que consta de n
elementos se puede representar con:
NOTAS (1)
NOTAS (2)
.....
NOTAS (I)
.....
NOTAS (I)
El subndice o ndice de un elemento (1,2 ..., i, n) designa su posicin en la ordenacin del vector.
Otras posibles notaciones del vector son:
En matemticas y algunos lenguajes como VB
a1, a2, ..., ai, ..., an
6.0 y VB.Net
A(1), A(2), ..., A(i), ..., A( n )
En programacin: Pascal y C
A[1], A[2], ..., A[i], ..., A[n]
Obsrvese que solo el vector global tienen el nombre de NOTAS. Los elementos del vector se
referencian por su subndice o ndice (subscript), es decir, su posicin relativa al valor.
Otro ejemplo de un vector o array unidimensional, se puede considerar el vector TEMPERATURAS,
que contiene las temperaturas horarias de una ciudad durante las veinticuatro horas del da. El
vector constar de veinticuatro elementos de tipo real, ya que las temperaturas normalmente no
sern enteras siempre. El valor mnimo permitido de un vector se denomina lmite inferior (L) y el
valor mximo permitido se denomina lmite superior (U). En el ejemplo del vector TEMPERATURAS
el lmite inferior es 1 y el superior 24. TEMPERATURAS(I) donde 1<=I<=24.
El nmero de elementos de un vector se denomina lmite inferior del vector (L) y el valor mximo
permitido, se denomina lmite superior (U). En el ejemplo del vector TEMPERATURAS el lmite
inferior es 1 y el superior es 24. Los vectores, como ya se ha mencionado, pueden contener valores
no numricos, es decir, tipo caracter. Por ejemplo, un vector que represente las frutas que se
venden en un supermercado, o los nombres de los alumnos de una clase:
FRUTAS(1)
uvas
FRUTAS(2)
manzanas
.
.
.
FRUTAS(I)
papayas
.
.
.
.
FRUTAS(N)
Alumnos
1
2
3
.
i
.
30
Luis Francisco
Jos
Victoria
.
Martn
.
Graciela
melocotones
Aplicar las operaciones de: declaracin, inicializacin, asignacin y recorrido en los arreglos
unidimensionales y bidimensionales (DPA)
La declaracin o definicin de un arreglo se efecta con:
tipo
array [lmite_inferior ... lmite_superior] de tipo : nombre_array
nombre_array
nombre vlido del array
Lmite inferior y superior de los elementos del
mite_inferior .. lmite_superior
rango del array
Tipo de datos de los elementos del array:
tipo
entero, real o caracter.
tipo
tipo
array [0.. 100] de entero: NUMERO
La inicializacin y asignacin es la sustitucin de todos los elementos de un vector con valores,
para asignar un valor a un elemento se podr hacer con:
A[29] 0
Si se desea inicializar o asignar valores a todos los elementos de un vector, se debe recurrir a las
estructuras repetitivas (para, mientras o repetir), e incluso selectivas (si-entonces, segn).
leer(A[i])
Un array bidimensional se puede considerar como un vector de vectores. Es, por consiguiente, un
conjunto de elementos, todos del mismo tipo, en el cual el orden de los componentes es
significativo y en el que se necesita especificar dos subndices para poder identificar cada elemento
del array. Uno de tipo unidimensional contiene una sola columna, el bidimensional es un grupo de
columnas como la ilustra la siguiente figura:
Fila 1 --->
Fila 2 --->
Fila 3 --->
Fila 4 --->
Fila 5 --->
1
2
...
I
B[I,J]
...
M
Se dice que el array B tiene N por M elementos. Existe N elementos en cada fila y M elementos en
cada columna (M*N). En el ejemplo del vector Z, donde se tienen 30 elementos con Z[5,6], el
subndice M, de las filas, va desde 1 hasta 5; y N, de las columnas, va desde 1 hasta el 6.
Dependiendo del lenguaje de programacin, los subndices empiezan en 0 en 1.
El almacenamiento de valores en un arreglo bidimensional, por ejemplo el arreglo Z, podr hacerse
de las siguientes maneras, por columna mayor:
total 0
desde j 1 hasta 6 hacer
desde i 1 hasta 5 hacer
Z[i,j]) 10
fin_desde
fin_desde
O por fila mayor:
total 0
desde i 1 hasta 5 hacer
desde j 1 hasta 6 hacer
Z[i,j]) 10
fin_desde
fin_desde
Explicar lar siete fases para la solucin de problemas en la computadora. El proceso de resolucin de un
problema en una computadora conduce a las escritura de un programa y a la ejecucin en la misma.
Aunque el proceso de disear un programa es -esencialmente- un proceso creativo, se puede considerar
una fase o pasos comunes, que generalmente deben de seguir todos los programadores. :
Definicin del problema y anlisis de los datos. Esta fase requiere una clara definicin, donde
se contemple exactamente lo que debe hacer el programa y el resultado o solucin deseada. La
computadora requiere especificaciones detalladas de entrada y salida. Qu entradas se requieres?
(tipo y cantidad) Cul es la salida deseada? (tipo y cantidad) Qu mtodo produce la salida
deseada?.
Diseo de la solucin. En el anlisis se determina qu hace el programa. En el diseo se
determina cmo hace el programa la tarea solicitada. Los mtodos ms eficaces para el proceso de
diseo se basan en el conocido por divide y vencers. Es decir, la resolucin de un problema
complejo se realiza dividiendo el problema en subproblemas (mdulos). Cualquier programa consta
de un programa principal, que a su vez puede llamar a otros subprogramas.
Herramientas de programacin. Las ms comunes son los diagramas de flujo (flowchart) y
pseudocdigo. Los primeros es una representacin grfica de un algoritmo. Los smbolos ms
utilizados estn normalizados; los segundos son donde las instrucciones se escriben en palabras
similares al ingls o espaol, que facilitan tanto la escritura como la lectura de programas. En
esencia, el pseudocdigo se puede definir como un lenguaje de especificaciones de algoritmos.
Codificacin. Es la escritura en un lenguaje de programacin de la representacin de algoritmos
desarrollada en las etapas precedentes. Dado que el diseo de un algoritmo es independiente del
lenguaje de programacin utilizado para su implementacin, el cdigo puede ser escrito con igual
facilidad en un leguaje o en otro. Para realizar la conversin del algoritmo en programa, se debe de
sustituir las palabras reservadas en espaol por sus homnimos en ingls, y las
operaciones/instrucciones indicadas en lenguaje natural expresarlas en el lenguaje de
programacin correspondiente. La documentacin interna es la que se incluye dentro del cdigo del
programa mediante comentarios que ayudan a la comprensin del cdigo.
Compilacin. Una vez que el algoritmo es convertido en programa fuente, es preciso introducirlo
en memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operacin se
realiza con el programa editor, posteriormente el programa fuente se convierte en un archivo de
programa que se guarda (graba) en disco. El programa fuente debe ser traducido a lenguaje
mquina, este proceso se realiza con el compilador y el sistema operativo que se encarga
prcticamente de la compilacin. Si tras la compilacin, el programa presenta errores (errores de
compilacin) en el programa fuente, es preciso volver a editar el programa, corregir los errores y
compilar de nuevo.
Prueba (verificacin) y depuracin. La verificacin de un programa es el proceso de ejecucin
Documentacin y mantenimiento.
Identificar los datos de entrada y salida en el planteamiento de un problema, detallando el proceso de
solucin
Reconocer las caractersticas de los algoritmos. Preciso (indicar el orden de realizacin de cada paso),
definido (si se sigue dos veces, se obtiene el mismo resultado cada vez), y finito (tiene fin; tiene nmero
determinado de pasos).
Describir las herramientas de representacin algortmica ms comunes
Utilizar la simbologa para la representacin de diagramas de flujo, diagramas Nassi-Shneiderman y reglas
para la elaboracin de PseudoCdigo.
Aplicar la jerarqua de los operadores aritmticos, relacionales y lgicos en la resolucin de expresiones.
Las reglas de prioridad en las operaciones aritmticas son primero los exponenciales, luego la
multiplicacin y divisin, despus el mod y el div, y por ltimo la suma y la resta.
Tema 4
Identificar cada una de las tcnicas de programacin: estructurada, modular, orientada a objetos,
orientada a eventos, funcional y lgica
Una tcnica de programacin es una metodologa que debe de seguirse y tomarse en cuenta al
momento de programar. Deber entenderse que para la programacin debern asumirse ciertas
normas que permitan la estandarizacin de la programacin, implicando una disminucin de costos,
independencia del programador y seguridad. Debe de tomarse en cuenta los paradigmas de la
programacin.
La programacin estructurada es escribir un programa en base a lo siguiente: el programa tiene un
diseo modular, los mdulos son diseados de forma descendente; y cada mdulo se codifica
utilizando las tres estructuras de control bsicas: secuencia, seleccin y repeticin. Este trmino se
refiere a un conjunto de tcnicas que han ido evolucionando desde los primeros trabajos de Edsger
Dijkstra. Estas tcnicas aumentan considerablemente la productividad del programa reduciendo en
elevado grado el tiempo requerido para escribir, verificar, depurar y mantener los programas. La
programacin estructurada utiliza un nmero limitado de estructuras de control que minimiza la
complejidad de los programas y, por consiguiente, reducen los errores; hace los programas ms
fciles de escribir, verificar, leer y mantener. Los programas debern estar dotados de una
estructura, incorporando: a) recursos abstractos (esto consiste en descomponer una determinada
accin compleja en trminos de un nmero de acciones ms simples capaces de ejecutarlas o que
constituyan instrucciones de computadoras disponibles); b) diseos descendentes (top-down).
(descomponer el problema en una serie de niveles o pasos sucesivos de refinamiento - stepwise -,
efectuando una relacin entre las diferentes etapas de estructuracin de modo que se relacionasen
unas con otras mediante entradas y salidas de informacin, es decir, considerando cada estructura
desde dos puntos de vista: qu hace? y cmo lo hace?.; y el uso de estructuras de control
bsicas (secuencia, seleccin y repeticin).
Programacin modular se refiere al mejoramiento ms flexible y eficiente del programa. El
programa se divide en mdulos (partes independientes), cada una de las cuales ejecuta una nica
actividad o tarea y se codifica independientemente de otros mdulos. Cada uno de estos mdulos
se analizan, codifican y ponen a punto por separado. Cada programa contiene un mdulo llamado
programa principal, que controla todo lo que sucede; se transfiere el control a submdulos
(posteriormente se denominarn subprogramas), de modo que ellos pueden ejecutar sus
funciones; sin embargo, cada submdulo devuelve el control al mdulo principal cunado se haya
completado su tarea. Si la tarea asignada a cada submdulo es demasiado compleja, ste deber
romperse en otros mdulos ms pequeos. Los mdulos son independientes en el sentido en que
ningn mdulo puede tener acceso directo a cualquier otro mdulo, excepto el mdulo al que llama
y a sus propios submdulos. Sin embargo, los resultados producidos por un mdulo pueden ser
utilizados por cualquier otro mdulo cuando se transfiera a ellos el control. Dado que los mdulos
son independientes, diferentes programadores pueden trabajar simultneamente en diferentes
partes del mismo programa. Esto reducir el tiempo de diseo del algoritmo y posterior codificacin
del programa. Adems, un mdulo se puede modificar radicalmente sin afectar a los otros mdulos,
incluso sin alterar su funcin principal. La descomposicin de un programa en mdulos
independientes ms simples se conoce tambin como el mtodo divide y vencers (divide and
conquer). Se disea cada mdulo con independencia de los dems, y siguiendo un mtodo
ascendente o descendente se llegar hasta la descomposicin final del problema en mdulos en
forma jerrquica.
Para llegar a programar de modo orientado a objetos, se basa en los conceptos de modularidad,
abstraccin procedimental, abstraccin de datos y ocultacin de la informacin de acuerdo al
mdulo o tipo de dato objeto. Las prioridades fundamentales de un tipo son: encapsulamiento
(combinar datos y operaciones que se puedan ejecutar sobre esos datos en un objeto. En C+
+/Java el encapsulamiento en un objeto se codifica mediante una clase), herencia (es la propiedad
que permite a un objeto transmitir sus propiedades a otros objetos denominados descendientes; la
herencia permite la reutilizacin de objetos que se hayan definido con anterioridad) y polimorfismo
(es la propiedad que permite decidir en tiempo de ejecucin la funcin a ejecutar, al contrario que
sucede cuando no existe polimorfismo, en el que la funcin ejecutar se decide previamente y sin
capacidad de modificacin, en tiempo de compilacin).
La orientada a eventos no es programar de forma tradicional, donde se sigue un patrn que
controla el propio flujo del programa, solamente cambia algunas veces cuando se llega a una
posicin donde existen dos caminos, el control del flujo de un programa orientado a eventos es
extremadamente conducido por eventos externos. En vez de esperar por un comando el cual
ordene que se procede determinada informacin, el sistema esta pre-programado para realizar un
ciclo de forma repetida, para verla y realizar una funcin que desencadena en su procesamiento.
Un parmetro formal es un valor que no est asociado con la definicin de la funcin. La definicin
de una funcin constar de una cabecera que comenzar con el tipo de valor devuelto por la
funcin, seguido de la palabra funcin y del nombre y argumentos de dicha funcin. A
continuacin ir el cuerpo de dicha funcin que ser una serie de acciones o instrucciones cuya
ejecucin har que se asigne un valor al nombre de la funcin. Esto determina el valor particular
del resultado que ha de devolverse al programa llamador. La declaracin de la funcin ser:
<tipo_de_resultado> funcion <nombre_fun> (lista de
parmetros)
[declaraciones locales]
inicio
acciones // cuerpo de la funcin
devolver (<expresin>)
fin_funcin
Identificar el desarrollo algortmico de un problema con su codificacin en un lenguaje de programacin
Para solucionar un problema mediante un diagrama de flujo o un lenguaje de programacin, se
debern contemplar cuatro pasos: Entender cabalmente el problema a solucionar; planear la
solucin del problema en papel observando todas las situaciones y condiciones que tendr la
solucin del problema; ejecutar lo planeado en papel pasndolo al diagrama de flujo o al lenguaje
de programacin; y la revisin de la solucin para que cumpla las condiciones para resolver el
problema.
Una de las caractersticas ms importantes en la construccin de programas, sobre todo los de gran
tamao, es el estilo de programacin. La buena calidad de los programas tiene relacin con la
escritura de estos, su legibilidad y comprensibilidad. Un buen estilo suele venir con la prctica, pero
el requerimiento de unas reglas hace necesario seguirlas para que el programa pueda ser ledo y
modificado por otra persona. Las reglas dependen del tipo de programacin y lenguaje elegido, es
conveniente considerar las siguientes reglas de estilos:
o Modularizar un programa en partes coherentes (uso amplio de subprogramas). Dividirlo
para hacerlo ms manejable, dividirlo no garantiza un sistema bien organizado, ser preciso
encontrar reglas que permitan una buena organizacin. La independencia es la clave en la
divisin, es decir, acoplamiento de los mdulos. El acoplamiento se refiere al grado de
interdependencia entre los mdulos. Este grado se puede utilizar para evaluar la calidad de
un diseo de un sistema.
o Evitar variables globales en subprogramas. Los efectos de las variables globales producen
efectos laterales indeseados, normalmente. No es correcto el uso de variables globales en
subprogramas, pero su uso no tiene porque ser perjudicial.
o Usar nombres significativos para identificadores. Los nombres de los mdulos,
subprogramas, funciones, tipos, variables y otros elementos deben de ser significativos para
que ayuden al lector a recordar el propsito del identificador sin tener que hacer referencia
continua a declaraciones o listas externas de variables. Hay que evitar abreviaturas
crpticas.
o Definir constantes con nombres. Este sistema tiene la ventaja de cambiar un valor
determinado bien por necesidad o por cualquier error tipogrfico.
o Evitar el uso de ir (goto). Uno de los factores que mas contribuyen a disear programas
bien estructurados es el flujo de control ordenado que implica: el flujo es adelante y directo;
la entrada solamente se hace al principio y la salida al final; la condicin para la terminacin
de un bucle, debe ser clara y uniforme; y los casos alternativos de las sentencias
condicionales, tambin, han de ser claros y uniformes. El uso de goto casi siempre viola las
anteriores condiciones, por consiguiente, evite su uso.
o Uso adecuado de parmetros valor/variable. Un programa se comunica con otro mediante el
uso de parmetros. Los parmetros valor pasan los valores al subprograma, pero ningn
cambio que el programa hace a estos parmetros se refleja en los parmetros reales de
entorno a la rutina llamadora. La comunicacin entre la rutina llamadora y el subprograma,
es de un solo sentido; por esta causa, en el caso de mdulos aislados, se deben utilizar
parmetros valor siempre que sea posible. El uso de parmetros variable es ms evidente
cuando un procedimiento necesita devolver valores a la rutina llamadora. Sin embargo, si el
procedimiento necesita devolver slo un nico valor, puede ser ms adecuado usar una
funcin.
Uso adecuado de funciones. Las funciones deben de utilizarse siempre que se necesite
obtener un nico valor. Este uso corresponde a la nocin matemtica de funcin. Por
consiguiente, es muy extrao que una funcin realice una tarea diferente de devolver un
valor y no debe hacerlo. Una funcin debe de devolver un valor requerido y nunca tener un
efecto lateral, por lo tanto: una funcin no debern asignar valores a variables globales; y
las funciones no deben de utilizar parmetros variables que puedan cambiar dentro de
estas, si se necesitan parmetros variables, utilice procedimientos.
Tratamiento de errores. Un programa diseado ante fallos debe comprobar errores en las
entradas y en su lgica e intentar comportarse bien cuando los encuentra. El tratamiento de
errores con frecuencia necesita acciones excepcionales que constituirn un mal estilo en la
ejecucin normal del programa. Por ejemplo, un programa deber validar las entradas y
ejecutar una accin cuando se encuentra este error, como presentar un mensaje de error y
devolver un indicador o bandera lgica a la rutina llamadora para indicarle que ha
encontrado una lnea de datos no vlida; en este caso, el procedimiento deja la
responsabilidad de realizar la accin apropiada a la rutina llamadora. Dependiendo del
contexto, las acciones apropiadas pueden ir desde ignorar los datos errneos hasta
continuar la ejecucin para terminar el programa. En caso de un error fatal, la terminacin
no es un mtodo ms limpio sino la de interrumpir la ejecucin. Otra situacin es la
encontrada en las estructuras condicionales o repetitivas donde se puede presentar un error
fatal; la primera accin puede ser llamar a un procedimiento de diagnstico que imprima la
informacin necesaria para ayudarle a determinar la causa del error, y cuando el
procedimiento muestra toda esa informacin, el programa puede terminarse. Sin embargo,
si el procedimiento de diagnstico devuelve el control al punto en el que fue llamado, debe
salir de muchas capas de estructura de control anidadas. En este caso la solucin ms
limpia es que la ltima sentencia del procedimiento de diagnstico sea INTERRUMPIR.
Legibilidad. Para que un programa sea fcil de seguir su ejecucin (la traza) debe tener una
buena estructura y diseo, una buena eleccin de identificadores, buen sangrado
consistente (de 3 a 5 espacios y la sentencia inicio-fin debe de estar alineadas) y utilizar
lneas en blanco en lugares adecuados, y una buena documentacin.
Documentacin. Un programa necesita que los usuarios lo aprendan y mantengan, por lo
tanto, la documentacin es una parte importante de cualquier paquete y su desarrollo una
pieza clave en la ingeniera del software. Existen tres grupos de personas que necesitan
conocer el programa: programadores (manual de mantenimiento del programa - puede
estar contenida en los comentarios de los programas, ser los formatos de las pantallas,
especificacin de los datos a procesar, etc - ); los operadores (manual del operador persona encargada de correr los programas, introducir datos y extraer resultados - ); y los
usuarios (manual del usuario - persona o seccin de una organizacin que explota el
programa, conociendo su funcin, las entradas requeridas, el proceso da ejecutar y la salida
que produce - ).
Tema 5
Tarea 1
Grupos separados: Todos los participantes
Subir a la Plataforma un documento, no ms de 3 hojas, donde explique los siguientes puntos:
Tarea 2
Subir a la plataforma un documento en Word, el cual contenga:
Tarea 3
Dibujar los diagramas de flujo (con extensin dfd) en el cuaderno y en DFD, de los siguientes
problemas:
A01 - Leer el nombre y el precio sin iva de un artculo; desplegar nombre, precio sin iva y
Tarea 4
Traer los siguientes problemas desarrollados en Diagramas de Flujo usando estructuras alternativas
simples y/o dobles.
B01 - Indicar al usuario si puede entrar a la secundaria (tomar en cuenta que para entrar a la
secundaria el usuario deber tener al menos doce aos y mximo 16 aos de edad)
B02 - Indicar al usuario si puede entrar a la preparatoria (tomar en cuenta que para entrar a la
preparatoria el usuario deber tener al menos catorce aos y mximo 18 aos de edad)
B03 - Indicar al usuario el importe total de la venta. La empresa ofrece hamburguesa sencilla a
$15 pesos y las doble a $20. Si compra tres hamburguesas exactamente, se le da un 10% de
descuento en las tres hamburguesas exactamente. El refresco chico a $7 pesos y el grande a $10.
Si compra 2 hamburguesas dobles exactamente, el refresco chico es gratis.
B04 - Desplegar al usuario si obtiene una beca. Para obtener una beca el promedio de las 6
materias que cursa actualmente el alumno, deber ser 8 como mnimo. Y no deber tener ninguna
materia reprobada ni con calificacin menor a 7.
B05 - Para entrar a un parque de diversiones, dos adultos debern de ir con al menos tres nios.
Especificar, si una familia puede o no entrar al parque.
B06 - Desplegar si el ao tecleado por parte del usuario, es bisiesto o no.
B07 - Mostrar al usuario el nombre del mes en base al nmero entre 1 y 12 capturado por el
mismo
B08 - Indicar el precio total de una computadora constituida por el monitor (hay de tres tipos a)
CRT de 15" a $1,100, b) CRT de 17" a $1,350 y c) Plano de 17" a $4,200); teclado a $130; ratn
ptico a $180; gabinete $430; tarjeta madre $930; con o sin floppie de $110; un disco duro de
80G a $930 (puede llevarse hasta 4); combo DVD/CD-R a $510 (puede llevarlo o no); RAM de
128MB a $210 y de 256MB a $410; y procesador Cleron a $940 P4 a $1835.
B09 - Pedir el nombre de tres modelos de automviles y sus respectivos precios (todos los precios
son diferentes entre si); desplegar en orden descendente, con respecto al precio; el modelo de los
automviles.
B10 - Indicar el importe de la colegiatura que pagar un alumno en una Universidad; si el
promedio general que obtuvo en la preparatoria es de 9.5 a 10, se le dar un 90% de beca con
respecto a la inscripcin; de 9 a 9.5 tendr derecho a un 80%; de 8.5 a 9 un 60%; y de 8 a 8.5 un
30%
B11 - Indicar si un ngulo dado es recto o no (un ngulo recto es de 90)
B12 - Desplegar el mensaje de "Por encima del punto de ebullicin del agua" si la temperatura es
de 100C o ms; si es menor el mensaje ser "Por debajo del punto de ebullicin del agua"
B13 - Pedir dos nmeros al usuario y desplegar el mensaje de "El primer nmero es mayor que el
segundo", "El primer nmero es ms pequeo que el segundo" o "Los dos nmeros son iguales"
B14 - Dados tres nmeros, desplegar qu nmero es el central (central se refiere a que est en
medio si estos se ponen en orden ascendente)
B15 - Indicar si un nmero tecleado es par o no
B16 - Disear un algoritmo que pida el da, mes y ao de una fecha determinada, indicar la fecha
del da siguiente
Tarea 5
Traer los siguientes problemas desarrollados en Diagramas de Flujo usando la estructura repetitiva para:
C01 - Obtener la calificacin mxima, la mnima y el promedio de 7 calificaciones de un alumno
C02 - Obtener el factorial de un nmero dado por el usuario. El factorial de un nmero n es la
multiplicacin de todos los nmeros desde el 1 hasta n. El factorial del nmero 5 (5!) es 120=1x2x3x4x5
C03 - Pedir al usuario cuantas materias cursa actualmente, pedir las calificaciones y desplegar al ltimo
cuantas materias tiene aprobadas y reprobadas
C04 - De un cantidad de n nmeros enteros, desplegar cuantos de ellos son 0 (ceros)
C05 - Deseamos saber cuanto obtuvimos de ganancias o prdidas en nuestro ltimo viaje de negocios,
solicitaremos cuantas ventas obtuvimos y luego leeremos los importes de esas ventas, adems pediremos
cuantos gastos efectuamos y los leeremos; al final desplegaremos si obtuvimos ganancia o prdida y el
importe de sta.
C06 - De una lista de x nmeros despliegue al la suma de los pares y el promedio de los impares
C07 - De una lista de x nmeros de entre 0 y 100, desplegar el nmero mayor y el menor
C08 - Con la funcin RANDOM(n) la cual regresa un nmero al azar entre 0 y n-1; disear un diagrama
el cual solicite al usuario cuantas oportunidades tiene para adivinar un nmero, y preguntar ese nmero
y desplegar si lo adivin (indicar en cuantas oportunidades lo adivin) o no (mostrar cul nmero era)
antes de que se agotaran sus oportunidades.
Tarea 6
Traer los siguientes problemas sobre decisiones simples, PARA y MIENTRAS:
D01 - Pedir un nmero de 1 a 100 hasta que sea 0 (cero), obtener el mximo de estos, el mnimo, el
promedio y cuntos de estos fueron menores o iguales que 80.
D02 - En una escuela secundaria hay a alumnos de 1ro., 2do. y 3er. grado, cada alumno tiene m materias
cursadas (puede haber dos alumnos que tegan diferente nmero de materias cursadas, debido a que son
de diferente grado). Obtener la calificacin mxima, la mnima y el promedio de todas las calificaciones
de la escuela; adems indicar el nmero todtal de alumnos y cuntos pueden obtener beca, para obtener
beca el promedio deber ser mayor o igual a 8 (ocho).
D03 - De una lista de x ngulos entre 0 y 360 grados, indicar cuantos son ngulos rectos y cuantos no
(un ngulo recto es de 90)
D04 - Preguntar al usuario cuantas materias cursa actualmente, luego pedir las calificaciones y desplegar
al ltimo cuantas materias tiene aprobadas y reprobadas.
D05 - Desplegar al usuario si obtiene una beca. Para obtener una beca el promedio de las 6 materias que
cursa actualmente el alumno, deber ser 8 como mnimo. Y no deber tener ninguna materia reprobada
ni con calificacin menor a 7.
Tarea 7
Traer los siguientes problemas sobre vectores y matrices, desarrollados en DFD:
E01 - Leer dos vectores de 5 elementos cada uno de tipo entero, crear un tercero el cual contendr
la suma en cada una de sus posiciones, de los dos anteriores.
E02 - Leer un vector x de 10 elementos de tipo entero y crear un segundo llamado y del mismo
tipo, el cual contendr los mismos elementos pero en orden inverso, es decir, el primer elemento
de x ser el ltimo de y.
E03 - Pedir un nmero x entre 1 y 100 con los cuales se llenar un vector que incluir la tabla de x
hasta el 10.
E04 - Leer un vector m de x elementos, el cual incluir valores enteros negativos y positivos,
terminar la lectura con el 0 (cero). Desplegar al final la cantidad de nmeros positivos y negativos
que existan en x.
E05 - Obtener la calificacin mxima, la mnima, el promedio, la cantidad que es igual o mayor al
promedio y la cantidad que es menor al promedio de calificaciones de x alumnos.
E06 - Preguntar los valores enteros de un vector i de 10 elementos, llenndolo. En otro vector j de
9 elementos, llenarlo con la diferencia de los elementos adyacentes de i. Es decir, j[1] ser la
diferencia absoluta de i[1] - i[2], j[2] ser la resta de i[2] - i[3], y as hasta j[9] ser la diferencia
absoluta de i[9] - i[10].
E07 - Crear una matriz m la cual contenga las tablas del 1 al 10.
E08 - Leer un matriz m de 5 x 5, en un vector c de 5 elementos colocar la suma de de las
columnas y en un vector de nombre r, tambin de 5 elementos, sumar los renglones.
E09 - Pedir al usuario la matriz m de x por y dimensiones, crear la matriz n invirtiendo le orden de
los elementos, tanto de forma horizontal como vertical.
E10 - Preguntar al usuario un nmero entero el cual ser el elemento de la esquina superior
izquierda de la matriz r de 10 por 10; rellenar r con elementos enteros, en donde se avance hacia
la derecha, abajo y en diagonal inferior-derecha, colocando la suma de los elementos anteriores
que estn en la misma lnea.
E11 - Solicitar al usuario un nmero entero el cual ser el centro de la matriz r de 9 por 9; rellenar
r con elementos enteros, en donde el centro de r sea el nmero solicitado, y los elementos
adyacentes hacia los lados vayan disminuyendo en 1 conforme se avance hacia las orillas en todas
las direcciones (arriba, abajo, izquierda, derecha y en diagonal).
E12 - Leer la cantidad de renglones r y el nmero de columnas c de un arreglo m en el cual se
leern y guardarn nmeros enteros. Posteriormente pedir el nmero x el cual se deber encontrar
en m para luego indicar el nmero de veces que se encuentra x en m.
E13 - En un avin hay x nmero de asientos, x valdr mximo 100; y asientos estn ocupados,
solicitarlo. Pedir y asientos ocupados solicitando su nmero. Al final desplegar que asientos no
estn ocupados. Guardar los datos en un vector.
Tarea 8
Traer los siguientes problemas sobre funciones, desarrollados en DFD:
F01 - Disear una funcin la cual regrese un valor de 0 (cero), si los dos nmeros enviados son
diferentes; y un 1 (uno) si estos son iguales.
F02 - Traer una funcin la cual invierta el valor entre dos variables.
Tarea 9
F03 - Elaborar una funcin la cual mediante el -1, 0 1, especifique si el nmero enviado es
negativo, cero o positivo, respectivamente.
F04 - Hacer una funcin que regrese el rea de un crculo enviando su radio.
F05 - Disear una funcin la cual indique mediante letras, el nombre del nmero enviado entre 0 y
100.