LOGICA DE PROGRAMACION
Actividad: desarrolle
el cuestionario propuesto
¿QUÉ ES UN ALGORITMO?
La
palabra algoritmo se deriva de la traducción al latín de la palabra árabe
alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado
sobre manipulación de números y ecuaciones en el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se
debe seguir, para dar solución a un problema específico.
¿TIPOS DE ALGORITMOS…?
Existen
dos tipos y son llamados así por su naturaleza:
- Cualitativos: Son aquellos en los que se
describen los pasos utilizando palabras.
- Cuantitativos: Son aquellos en los que se
utilizan cálculos numéricos para definir los pasos del proceso.
Lenguajes Algorítmicos
Un Lenguaje algorítmico es una serie de símbolos y
reglas que se utilizan para describir de manera explícita un proceso.
Tipos
de Lenguajes Algorítmicos
- Gráficos: Es la representación gráfica de las
operaciones que realiza un algoritmo (diagrama de flujo).
-
No Gráficos: Representa en forma descriptiva las operaciones
que debe realizar un algoritmo (pseudocodigo).
INICIO
Edad: Entero
ESCRIBA “cual es tu edad?”
Lea Edad
SI Edad >=18 entonces
ESCRIBA “Eres mayor de Edad”
FINSI
ESCRIBA “fin del algoritmo”
FIN
Metodología para la solución de
un problema mediante un computador. Creación de un algoritmo.
El computador es una máquina que por sí sola no puede hacer nada, necesita ser
programada, es decir, introducirle instrucciones u ordenes que le digan lo que
tiene que hacer. Un programa es la solución a un problema inicial, así que todo
comienza allí: en el Problema. El proceso de programación es el siguiente: Dado
un determinado problema el programador debe idear una solución y expresarla
usando un algoritmo (aquí es donde entra a jugar); luego de esto, debe
codificarlo en un determinado lenguaje de programación y por último ejecutar el
programa en el computador el cual refleja una solución al problema inicial.
Esto es a grandes rasgos lo que hace el programador de computadores.
La
parte que corresponde a este manual es la de: “Dado un determinado problema
debemos idear una solución y expresarla usando un ALGORITMO!”.
Metodología para la solución de problemas por medio
de la computadora
Esta
fase está dada por el enunciado del problema, el cual requiere una definición
clara y precisa. Es importante que se conozca lo que se desea que realice la
computadora; mientras esto no se conozca del todo no tiene mucho caso continuar
con la siguiente etapa.
Una vez
que se ha comprendido lo que se desea de la computadora, es necesario definir:
- Los datos de entrada.
- Cual es la información que se desea producir
(salida)
- Los métodos y fórmulas que se necesitan para
procesar los datos.
Una
recomendación muy práctica es el de colocarse en el lugar de la computadora y
analizar qué es lo que se necesita que se ordene y en qué secuencia para
producir los resultados esperados.
Las características de un buen algoritmo son:
- Debe tener un punto particular de inicio.
- Debe ser definido, no debe permitir dobles
interpretaciones.
- Debe ser general, es decir, soportar la mayoría
de las variantes que se puedan presentar en la definición del problema.
- Debe ser finito en tamaño y tiempo de ejecución.
- Diseño del Algoritmo
- Prueba de escritorio o Depuración
Se
denomina prueba de escritorio a la comprobación que se hace de un algoritmo
para saber si está bien hecho. Esta prueba consiste en tomar datos específicos
como entrada y seguir la secuencia indicada en el algoritmo hasta obtener un
resultado, el análisis de estos resultados indicará si el algoritmo está
correcto o si por el contrario hay necesidad de corregirlo o hacerle ajustes.
Para el proceso de Algoritmos es
necesario aprender a desarrollar un conjunto de elementos.
Todos estos elementos con los cuales se construyen dichos algoritmos se basan
en una disciplina llamada: Programación Estructurada.
Empecemos
por conocer las reglas para cambiar fórmulas matemáticas a expresiones válidas
para la computadora, además de diferenciar constantes e identificadores y tipos
de datos simples.
Tipos De Datos
Todos
los datos tienen un tipo asociado con ellos. Un dato puede ser un simple
carácter, tal como ‘b’, un valor entero tal como 35. El tipo de dato determina
la naturaleza del conjunto de valores que puede tomar una variable.
Tipos de Datos Simples
Datos Numéricos:
Permiten representar valores escalares de forma numérica, esto incluye a
los números enteros y los reales. Este tipo de datos permiten realizar
operaciones aritméticas comunes.
Datos lógicos:
Son aquellos que solo pueden tener dos valores (cierto o falso) ya que
representan el resultado de una comparación entre otros datos (numéricos o
alfanuméricos).
Datos alfanuméricos (string):
Es una secuencia de caracteres alfanuméricos que permiten representar
valores identificables de forma descriptiva, esto incluye nombres de personas,
direcciones, etc. Es posible representar números como alfanuméricos, pero estos
pierden su propiedad matemática, es decir no es posible hacer operaciones con
ellos. Este tipo de datos se representan encerrados entre comillas.
Identificadores
Los identificadores representan los datos de un programa (constantes,
variables, tipos de datos). Un identificador es una secuencia de caracteres que
sirve para identificar una posición en la memoria de la computadora, que
permite acceder a su contenido.
Ejemplo:
» Nombre
» Num_hrs
» Calif2
Reglas para formar un identificador
- Debe comenzar con una letra (A a Z, mayúsculas o
minúsculas) y no deben contener espacios en blanco.
- Letras, dígitos y caracteres como la subraya ( _
) están permitidos después del primer carácter.
- La longitud de identificadores puede ser de
varios caracteres. Pero es recomendable una longitud promedio de 8
caracteres.
- El nombre del identificador debe dar una idea del
valor que contiene.
Qué son las constantes, las
variables y las expresiones en la programación así como su clasificación.
Constantes
Una constante es un dato numérico o alfanumérico que no cambia durante la
ejecución del programa.
Ejemplo:
pi = 3.1416
Variable
Es un espacio en la memoria de la computadora que permite almacenar
temporalmente un dato durante la ejecución de un proceso, su contenido puede
cambiar durante la ejecución del programa.
Para
poder reconocer una variable en la memoria de la computadora, es necesario
darle un nombre con el cual podamos identificarla dentro de un algoritmo.
Ejemplo:
area = pi * radio ^ 2
Las variables son : el radio, el area y la constate es pi
Clasificación de las Variables
Por su contenido
- Variables Numéricas: Son aquellas en las cuales
se almacenan valores numéricos, positivos o negativos, es decir almacenan
números del 0 al 9, signos (+ y -) y el punto decimal.
Ejemplo:
iva = 0.15 pi = 3.1416 costo = 2500
- Variables Lógicas: Son aquellas que solo pueden
tener dos valores (cierto o falso) estos representan el resultado de una
comparación entre otros datos.
- Variables
Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números
y caracteres especiales).
Ejemplo:
letra = ’a’ apellido = ’lopez’ direccion = ’Av. Libertad #190’
Por su uso
- Variables de Trabajo: Variables que reciben el
resultado de una operación matemática completa y que se usan normalmente
dentro de un programa.
Ejemplo:
Suma = a + b /c
- Contadores: Se utilizan para llevar el control
del numero de ocasiones en que se realiza una operación o se cumple una
condición. Con los incrementos generalmente de uno en uno.
- Acumuladores: Forma que toma una variable y que
sirve para llevar la suma acumulativa de una serie de valores que se van
leyendo o calculando progresivamente.
Expresiones
Las expresiones son combinaciones de constantes, variables, símbolos de
operación, paréntesis y nombres de funciones especiales.
Por ejemplo:
a + (b + 3) / c
Cada expresión toma un valor que se determina tomando los valores de las
variables y constantes implicadas y la ejecución de las operaciones indicadas.
Una expresión consta de operadores y operandos. Según sea el tipo de datos que
manipulan, se clasifican las expresiones en:
- Aritméticas
- Relacionales
- Lógicas
Qué son los operadores y los
operando, sus tipos y las prioridades de ejecución de los mismos.
Operadores
Son elementos que relacionan de forma diferente, los valores de una o mas
variables y/o constantes. Es decir, los operadores nos permiten manipular
valores.
Operadores
Aritméticos
Los operadores aritméticos permiten la
realización de operaciones matemáticas con los valores (variables y
constantes).
Los operadores aritméticos pueden ser
utilizados con tipos de datos enteros o reales. Si ambos son enteros, el
resultado es entero; si alguno de ellos es real, el resultado es real.
Operadores Aritméticos
+ Suma
- Resta
* Multiplicación
/ División
mod Modulo (residuo de la división entera)
Prioridad de los Operadores Aritméticos
Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con
paréntesis anidados se evalúan de dentro a fuera, el paréntesis más interno se
evalúa primero.
Dentro de una misma expresión los operadores se evalúan en el siguiente
orden:
- ^ Exponenciación
- *, /, mod Multiplicación, división, modulo.
- +, - Suma y resta.
Los operadores en una misma expresión con igual nivel de prioridad se
evalúan de izquierda a derecha.
Operadores Relacionales
Se utilizan para establecer una relación entre dos valores. Luego compara estos
valores entre si y esta comparación produce un resultado de certeza o falsedad
(verdadero o falso).
Los operadores relacionales comparan valores del mismo tipo (numéricos o
cadenas). Estos tienen el mismo nivel de prioridad en su evaluación.
Los operadores relaciónales tiene menor prioridad que los aritméticos.
Tipos de operadores Relacionales
- > Mayor que
- < Menor que
- > = Mayor o igual que
- < = Menor o igual que
- < > Diferente
- = Igual
Ejemplos:
Si a = 10, b = 20, c = 30
a + b > c
|
|
Falso
|
a - b < c
|
|
Verdadero
|
a - b = c
|
|
Falso
|
a * b < > c
|
|
Verdadero
|
Ejemplos no lógicos:
a < b < c
10 < 20 < 30
T > 5 < 30
(no es lógico porque tiene diferentes operandos)
Operadores Lógicos
Estos operadores se utilizan para establecer relaciones entre valores lógicos.
Estos valores pueden ser resultado de una expresión relacional.
Tipos de operadores Lógicos
And Y
Or O
Not Negación
Ejemplo:
Para los siguientes ejemplos T significa verdadero y F falso.
Operador Not Operador Not
Operador And Operador And
Operador Or Operador Or
Prioridad de los Operadores Lógicos
- Not
- And
- Or
Prioridad de los Operadores en General
- ( )
- ^
- *, /, Mod, Not
- +, -, And
- >, <, > =, < =, < >, =, Or
Ejemplos:
Sea: a = 10 b = 12 c = 13 d =10
Existen dos principales tecnicas
de diseño de algoritmos de programación, el Top Down y el Bottom Up.
Top Down
También
conocida como de arriba-abajo y consiste en establecer una serie de niveles de
mayor a menor complejidad (arriba-abajo) que den solución al problema. Consiste
en efectuar una relación entre las etapas de la estructuración de forma que una
etapa jerárquica y su inmediato inferior se relacionen mediante entradas y
salidas de información. Este diseño consiste en una serie de descomposiciones
sucesivas del problema inicial, que recibe el refinamiento progresivo del
repertorio de instrucciones que van a formar parte del programa.
La
utilización de la técnica de diseño Top-Down tiene los siguientes objetivos
básicos:
- Simplificación del problema y de los subprogramas
de cada descomposición.
- Las diferentes partes del problema pueden ser programadas
de modo independiente e incluso por diferentes personas.
- El programa final queda estructurado en forma de
bloque o módulos lo que hace mas sencilla su lectura y mantenimiento.
Bottom Up
El
diseño ascendente se refiere a la identificación de aquellos procesos que
necesitan computarizarse con forme vayan apareciendo, su análisis como sistema
y su codificación, o bien, la adquisición de paquetes de software para
satisfacer el problema inmediato.
Cuando
la programación se realiza internamente y haciendo un enfoque ascendente, es
difícil llegar a integrar los subsistemas al grado tal de que el desempeño
global, sea fluido. Los problemas de integración entre los subsistemas son
sumamente costosos y muchos de ellos no se solucionan hasta que la programación
alcanza la fecha límite para la integración total del sistema. En esta fecha,
ya se cuenta con muy poco tiempo, presupuesto o paciencia de los usuarios, como
para corregir aquellas delicadas interfaces, que en un principio, se ignoran.
Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla
al sistema como una entidad global, adolece de ciertas limitaciones por haber
tomado un enfoque ascendente.
Uno de
ellos es la duplicación de esfuerzos para acceder el software y mas aún al
introducir los datos.
Otro
es, que se introducen al sistema muchos datos carentes de valor.
Un tercero y tal vez el mas serio inconveniente del enfoque ascendente, es que
los objetivos globales de la organización no fueron considerados y en
consecuencia no se satisfacen.
Entonces…
La diferencia entre estas dos técnicas de programación se fundamenta en el
resultado que presentan frente a un problema dado.
Imagine
una empresa, la cual se compone de varios departamentos (contabilidad,
mercadeo, …), en cada uno de ellos se fueron presentando problemas a los cuales
se le dieron una solución basados en un enfoque ascendente (Bottom Up): creando
programas que satisfacían sólo el problema que se presentaba.
Cuando la empresa decidió integrar un sistema global para suplir todas las
necesidades de todos los departamentos se dio cuenta que cada una de las
soluciones presentadas no era compatible la una con la otra, no representaba
una globalidad, característica principal de los sistemas.
Como no
hubo un previo análisis, diseño de una solución a nivel global en todos sus
departamentos, centralización de información, que son características propias
de un diseño Descendente (Top Down) y características fundamentales de los
sistemas; la empresa no pudo satisfacer su necesidad a nivel global.
La creación de algoritmos es basado sobre la técnica descendente, la cual
brinda el diseño ideal para la solución de un problema.
Una de las dos herramientas más
comunes en el diseño de algoritmos es el diagrama de flujo.
Diagrama de Flujo
Un
diagrama de flujo es la representación gráfica de un algoritmo. También se
puede decir que es la representación detallada en forma gráfica de como deben
realizarse los pasos en la computadora para producir resultados.
Esta
representación gráfica se da cuando varios símbolos (que indican diferentes
procesos en la computadora), se relacionan entre si mediante líneas que indican
el orden en que se deben ejecutar los procesos. Los símbolos utilizados han
sido normalizados por el instituto norteamericano de normalización (ANSI):
Símbolo Descripción
Indica el inicio y el final de
nuestro diagrama de flujo.
Indica la entrada y salida de datos.
Símbolo de proceso y nos indica la
asignación de un valor en la memoria y/o la ejecución de una operación
aritmética.
Indica la salida de información por
impresora.
Conector dentro de página.
Representa la continuidad del diagrama dentro de la misma página.
Conector fuera de página.
Representa la continuidad del diagrama en otra página.
Indica la salida de información en
la pantalla o monitor.
Símbolo de decisión. Indica la
realización de una comparación de valores.
Símbolo del Mientras. Dada una expresión al
principio de la iteración esta es evaluada; si la condición es verdadera
realizará el ciclo, si es falsa la repetición cesará.
Símbolo del Para. Esta estructura de
control repetitiva se usa generalmente cuando se conoce de antemano el número
de iteraciones.
Símbolo Repita Hasta. Funciona igual que la
estructura Mientras, con la diferencia que al menos una vez hará el grupo de
instrucciones y luego evaluará una condición. Si la condición evaluada es falsa
continua dentro del ciclo y si es verdadera termina la iteración.
Líneas de flujo o dirección. Indican la secuencia en que se realizan las
operaciones.
|
Recomendaciones para el diseño de
Diagramas de Flujo
- Se deben usar solamente líneas de flujos
horizontales y/o verticales.
- Se debe evitar el cruce de líneas utilizando los
conectores.
- Se deben usar conectores sólo cuando sea
necesario.
- No deben quedar líneas de flujo sin conectar.
- Se deben trazar los símbolos de manera que se
puedan leer de arriba hacia abajo y de izquierda a derecha.
- Todo texto escrito dentro de un símbolo deberá ser
escrito claramente, evitando el uso de muchas palabras.
Qué es el pseudocódigo y sus
ventajas frente a los diagramas de flujos y las definiciones de los diagramas
estructurados y las estructuras algorítmicas.
Pseudocódigo
Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma)
que se emplea, dentro de la programación estructurada, para realizar el diseño
de un programa. En esencial, el Pseudocódigo se puede definir como un lenguaje
de especificaciones de algoritmos.
En
esencial, el Pseudocódigo se puede definir como un lenguaje de especificaciones
de algoritmos. Es la representación narrativa de los pasos que debe seguir un
algoritmo para dar solución a un problema determinado. El Pseudocódigo utiliza
palabras que indican el proceso a realizar.
Ventajas de utilizar un Pseudocódigo a un Diagrama
de Flujo
- Ocupa menos espacio en una hoja de papel
- Permite representar en forma fácil operaciones
repetitivas complejas
- Es muy fácil pasar de Pseudocódigo a un programa
en algún lenguaje de programación.
- Si se siguen las reglas se puede observar
claramente los niveles que tiene cada operación.