Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Algoritmos Inicio

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

Algoritmos (Pensar en problemas a solucionar)

Luego de analizar detalladamente el problema hasta entenderlo completamente, se procede a diseñar un


algoritmo (trazar un plan) que lo resuelva por medio de pasos sucesivos y organizados en secuencia lógica. El
concepto intuitivo de algoritmo (procedimientos y reglas) se puede encontrar en procesos naturales de los
cuales muchas veces no se es consciente.
En el ámbito de la computación, los Algoritmos son una herramienta que permite describir claramente un
conjunto finito de instrucciones, ordenadas secuencialmente y libres de ambigüedad, que debe llevar a cabo
un computador para lograr un resultado previsible. Vale la pena recordar que un programa de computador
consiste de una serie de instrucciones muy precisas y escritas en un lenguaje de programación que el
computador entiende (Java, Pascal, etc).
En resumen, un Algoritmo es una secuencia ordenada de instrucciones, pasos o procesos que llevan a la
solución de un determinado problema. Los hay tan sencillos y cotidianos como seguir la receta del médico,
abrir una puerta, lavarse las manos, etc; hasta los que conducen a la solución de problemas muy complejos.
EJEMPLO Un procedimiento que realizamos varias veces al día consiste en lavarnos los dientes. Veamos la
forma de expresar este procedimiento como un Algoritmo:
1. Tomar la crema dental
2. Destapar la crema dental
3. Tomar el cepillo de dientes
4. Aplicar crema dental al cepillo
5. Tapar la crema dental
6. Abrir la llave del lavamanos
7. Remojar el cepillo con la crema dental
8. Cerrar la llave del lavamanos
9. Frotar los dientes con el cepillo
10. Abrir la llave del lavamanos
11. Enjuagarse la boca
12. Enjuagar el cepillo
13. Cerrar la llave del lavamanos
14. Secarse la cara y las manos con una toalla
EJEMPLO El ejemplo de cambiar una bombilla (foco) fundida es uno de los más utilizados por su sencillez
para mostrar los pasos de un Algoritmo:
1. Ubicar una escalera debajo de la bombilla fundida
2. Tomar una bombilla nueva
3. Subir por la escalera
4. Girar la bombilla fundida hacia la izquierda hasta soltarla
5. Enroscar la bombilla nueva en el plafón hasta apretarla
6. Bajar de la escalera
7. Fin
En términos generales, un Algoritmo debe ser:
• Realizable: El proceso algorítmico debe terminar después de una cantidad finita de pasos. Se dice que un
algoritmo es inaplicable cuando se ejecuta con un conjunto de datos iniciales y el proceso resulta infinito o
durante la ejecución se encuentra con un obstáculo insuperable sin arrojar un resultado.
• Comprensible: Debe ser claro lo que hace, de forma que quien ejecute los pasos (ser humano o máquina)
sepa qué, cómo y cuándo hacerlo. Debe existir un procedimiento que determine el proceso de ejecución.
• Preciso: El orden de ejecución de las instrucciones debe estar perfectamente indicado. Cuando se ejecuta
varias veces, con los mismos datos iniciales, el resultado debe ser el mismo siempre. La precisión implica
determinismo.
Pensamiento Algorítmico: Cuando se habla de algoritmos, con frecuencia aparecen tres tipos de
pensamiento que generalmente se relacionan con ellos y que se utilizan indiscriminadamente como
sinónimos: Pensamiento Computacional, Pensamiento Algorítmico y Pensamiento Procedimental. Por lo tanto
es importante puntualizar a qué se refiere cada uno de estos pensamientos.
a. El pensamiento computacional hace referencia a la representación y solución de problemas utilizando
inteligencia humana, de máquinas o de otras formas que ayuden a resolver el problema.
b. El pensamiento algorítmico se refiere al desarrollo y uso de algoritmos que puedan ayudar a resolver un
tipo específico de problema o a realizar un tipo específico de tarea.
c. El pensamiento procedimental se ocupa del desarrollo y utilización de procedimientos diseñados para
resolver un tipo específico de problema o para realizar un tipo específico de tarea, pero que no
necesariamente, siempre resulta exitoso.

La finalidad básica de la programación es solucionar problemas mediante el ordenador Aunque ya


tenemos una idea de lo que es, un ordenador se puede definir formalmente como una máquina compuesta por
circuitos electrónicos que tiene la capacidad de resolver problemas bajo el control de unas instrucciones
dadas. Un ordenador está formado básicamente por un procesador, la memoria y los dispositivos de entrada y
salida que permiten su comunicación con el exterior.
Una vez entendida la tarea, hay que establecer los pasos a seguir para llegar al objetivo propuesto. Un
algoritmo es un conjunto de pasos que al ser seguidos se consigue realizar una tarea o resolver un problema.
Para realizar algoritmos fácilmente entendibles los programadores utilizan diagramas de flujo. Los diagramas
de flujo son diagramas para expresar los pasos de un algoritmo por medio de símbolos conectados por líneas.
Es como un mapa donde aparecen simultáneamente:
• Las rutas que puede seguir el flujo de datos al ejecutar un algoritmo. En algún punto es posible que el
camino se divida en varios, en ese caso, el diagrama indica que si se cumplen unas determinadas
condiciones, se escogerá un camino, si se cumplen otras, se escogerá otro, etc.
• Las acciones y operaciones que hay que realizar en puntos concretos del camino que se recorre.

Las variables y las constantes Una variable o una constante es un dato, o conjunto de datos, en la memoria
del ordenador de especial interés para el programa y que recibe un nombre simbólico dentro del código del
programa. Cuando el valor de ese dato puede modificarse, se dice que es una variable, mientras que si no
puede modificarse se dice que es una constante.

Tipos de datos Internamente los ordenadores trabajan con una representación binaria (mediante unos y
ceros) de los números. Esta forma de representar la información es muy adecuada a la hora de fabricar los
circuitos electrónicos ya que:
1. Es la forma más básica de discernir.
2. Un 1 y un 0 son muy diferentes eléctricamente (tradicionalmente son 5 V de diferencia) por lo que es
difícil que se confundan entre sí.
Sin embargo hacer un programa directamente con unos y ceros es prácticamente imposible. Preferimos
utilizar palabras para las instrucciones y números en base 10. De ahí que los lenguajes de programación
ofrezcan la posibilidad de utilizar distintos tipos variables para almacenar la distinta información.
Variables booleanas Una variable booleana sólo puede tener dos valores, verdadero o falso. Para
representar una variable booleana sólo se necesita un bit (precisamente un bit es la cantidad mínima de
información y sólo puede tener dos valores: 1 y 0), haciendo corresponder el valor 1 a verdadero y 0 falso. No
obstante, hay que añadir que, en general, los computadores no son capaces de trabajar directamente con un
solo bit, sino que trabajan con un paquete mínimo de 8 bit. Esta cantidad es conocida como byte.
Existe una serie de operadores que permiten trabajar con variables booleanas, de forma que se pueden
agrupar y formar expresiones complejas. Los más habituales son los siguientes (empleando la sintaxis de
Matlab):
Operador and (&): 1&1=1 1&0=0 0&1=0 0&0=0
Operador or ( | ): 1 | 1 = 1 1|0=1 0|1=1 0|0=0
Operador not (~): ~ 1 = 0 ~0=1
El resultado de una operación AND es verdadero si los dos operandos son verdaderos. El resultado de una
operación OR es verdadero si, al menos, uno de los dos operandos es verdadero.
Números enteros Los números enteros suelen emplearse con gran frecuencia en programación, ya que su
procesamiento es muy rápido y existen muchas operaciones en las que son imprescindibles como, por
ejemplo:
• Como los índices en un vector o matriz
• Como contador del número de iteraciones en un bucle
Debido a limitaciones de memoria no se puede definir un número con una precisión arbitraria. Los lenguajes
de programación pueden definir distintos tamaños para los enteros; empleando, por ejemplo, 8 bits (para
contar desde el 0 hasta el 256), 16 bits (del 0 al 65536 o -32768 a 32761 según se considere el signo o no),
etc.
Con los números enteros se pueden hacer operaciones matemáticas. Los típicos símbolos empleados en los
lenguajes de programación son:
• + para sumar
• - para restar
• * para multiplicar
• / para dividir
Números de coma flotante Los ordenadores trabajan también con números decimales. En este caso el
ordenador trabaja con un número máximo de cifras significativas. La cifras significativas de los números
0.0001562, -1341 y 23740000 son cuatro. Se puede escribir estos números de forma científica de la siguiente
forma: 0.1562*10-3, -0.1341*10+4 y 0.2374*10+8. Los ordenadores codifican los números decimales de una
forma muy parecida.
Por motivos de eficiencia se suelen distinguir dos tipos diferentes: los números de precisión simple (32 bits y 6
o 7 cifras significativas) y los de precisión doble (64 bits y 15 cifras significativas). Con los números en coma
flotante se pueden hacer las mismas operaciones matemáticas que con los números enteros, pero en este
caso, el ordenador considerará los decimales.
Caracteres Al igual que los números los caracteres se codifican de forma binaria. A cada letra del alfabeto se
le asigna un determinado valor que la representa. Evidentemente existen diferentes formas de codificar las
letras. Destacan por su importancia:
• ASCII, emplea 7 bit para representar las letras del alfabeto latino, números y símbolos propios de la lengua
inglesa. Por ejemplo, el carácter ASCII de la letra a es 97.
• ANSI, representa las letras mediante un byte (8 bit). La codificación ANSI extendió la codificación ASCII para
incluir las letras acentuadas y especiales de idiomas como el francés, el alemán o el castellano (el cual tiene
la Ñ).
• UNICODE UTF-16, emplea 2 bytes para representar cualquier carácter en cualquier idioma, lo que incluye el
árabe, hebreo, chino, japonés. Por ejemplo la letra hebrea alef ‫ א‬tiene un código UTF-16 de 1488.
Características de un algoritmo Un algoritmo adecuado será el que presente las siguientes características:
a) Corrección: el algoritmo hace lo que realmente se pide.
b) Inteligibilidad: el algoritmo debe ser claro y fácil de entender, puesto que se escribirá una sola vez, pero
será necesario leerlo muchas más veces para poder mantenerlo y/o modificarlo.
c) Eficiencia: el algoritmo debe llevar a cabo la tarea que se le ha encargado en un tiempo razonable.
d) Generalidad: con pocos cambios, el algoritmo se debe poder adaptar a otros enunciados parecidos.
1. COMPRENDER EL PROBLEMA.
• Leer el problema varias veces
• Establecer los datos del problema
• Aclarar lo que se va a resolver (¿Cuál es la pregunta?)
• Precisar el resultado que se desea lograr
• Determinar la incógnita del problema
• Organizar la información
• Agrupar los datos en categorías
• Trazar una figura o diagrama.
2. HACER EL PLAN.
• Escoger y decidir las operaciones a efectuar.
• Eliminar los datos inútiles.
• Descomponer el problema en otros más pequeños.
3. EJECUTAR EL PLAN (Resolver).
• Ejecutar en detalle cada operación.
• Simplificar antes de calcular.
• Realizar un dibujo o diagrama
4. ANALIZAR LA SOLUCIÓN (Revisar).
• Dar una respuesta completa
• Hallar el mismo resultado de otra manera.
• Verificar por apreciación que la respuesta es adecuada
Así pues, un programa es sólo la codificación de un algoritmo en un lenguaje que el ordenador entienda.
El ordenador procesará nuestros algoritmos, pero para hacerlo es necesario que entienda nuestro lenguaje
algorítmico. Será preciso, pues, transcribir nuestros algoritmos a un lenguaje de programación, es decir, a un
lenguaje capaz de ser comprendido por un ordenador.

Etapas del diseño de un algoritmo


Las etapas para diseñar un algoritmo son prácticamente las mismas que se necesitan para resolver cualquier
problema de otras disciplinas. Básicamente son las siguientes:
1) Entender el problema: si no entendemos el problema, difícilmente lo podremos resolver. La especificación
formal de los algoritmos es una buena herramienta para alcanzar esta etapa rigurosamente y evitar
ambigüedades.
2) Plantear/planificar la solución: la metodología propuesta (básicamente los esquemas de recorrido y
búsqueda, y el análisis descendente) nos permitirá efectuar de manera eficiente esta etapa y facilitará el resto
de las mismas.
3) Formular la solución: la notación o lenguaje algorítmico nos permitirá definir el algoritmo con precisión y sin
ambigüedades.
4) Evaluar la corrección de la solución propuesta: la inteligibilidad del algoritmo, junto con la aplicación de los
esquemas, nos permitirá estar casi seguros de la corrección del algoritmo. La especificación (precondiciones,
poscondiciones, etc.) del algoritmo también nos ayudará, además, a razonar sobre la corrección del algoritmo.
Pseudo Lenguaje
Proceso sumar_a_b //Proceso: ¿qué desea hacer el 'programa'?: sumar a y b
Escribir "ingrese a:" ; //escribe/muestra en pantalla
Leer a; //introduce por teclado el valor de 'a'
Escribir "ingrese b:" ;
Leer b; //introduce por teclado el valor de 'b'
Suma<-(a+b); //operador Suma=a+b
Escribir "La suma de a + b es:",Suma ; //escribe/muestra en pantalla + el valor Suma
FinProceso
Heurística: Se basa en la utilización de reglas empíricas para llegar a una solución. El método heurístico
conocido como “IDEAL”, formulado por Bransford y Stein (1984), incluye cinco pasos: Identificar el problema;
definir y presentar el problema; explorar las estrategias viables; avanzar en las estrategias; y lograr la solución
y volver para evaluar los efectos de las actividades (Bransford & Stein, 1984). El matemático Polya (1957)
también formuló un método heurístico para resolver problemas que se aproxima mucho al ciclo utilizado para
programar computadores. A lo largo de esta Guía se utilizará este método propuesto por Polya.
• Algoritmos: Consiste en aplicar adecuadamente una serie de pasos detallados que aseguran una solución
correcta. Por lo general, cada algoritmo es específico de un dominio del conocimiento. La programación de
computadores se apoya en este método.
Los operadores y las operaciones que se pueden realizar con ellos se clasifican en:
• Aritméticos: Posibilitan las operaciones entre datos de tipo numérico y dan como resultado otro valor de tipo
numérico.
Ejemplo: potencia (potencia); producto (*); división (/); suma (+); resta (-); asignación (“). Este
último operador de operador de asignación (=) que utilizan la mayoría de los lenguajes de programación.
• Alfanuméricos: Permiten operar con datos de tipo carácter o cadenas. La mayoría de los lenguajes de
programación admiten el operador + para realizar la concatenación (unión) de caracteres o cadenas. Ni
MicroMundos, ni Scratch tienen esta opción. En Scratch debe utilizarse, para concatenar, el operador &.
• Relaciónales: Permiten la comparación entre datos del mismo tipo y dan como resultado dos valores
posibles: Verdadero o Falso. Ejemplo: igual a (=); menor que (<); mayor que (>).
• Lógicos: Posibilitan la evaluación lógica de dos expresiones de tipo lógico. Dan como resultado uno de dos
valores posibles: Verdadero o Falso.
Ejemplo: negación (no); conjunción (y); disyunción (o).
Orden de evaluación de los operadores
Los computadores ejecutan los operadores en un orden predeterminado. El siguiente es el orden (jerarquía)
para ejecutar operadores:
1. Paréntesis (se ejecutan primero los más internos)
2. Signo (-2)
3. Potencias y Raíces (potencia y rc); Productos y
Divisiones ( * y /)
4. Sumas y Restas (+ y -)
5. Concatenación (+)
6. Relaciónales (=, <, >)
7. Negación (no)
8. Conjunción (y)
9. Disyunción (o)
OPERADORES ARÍTMETICOS
Operador Operación Ejemplo Resultado
Potencia ^ potencia 4 2 4 ^ 2 16 * Multiplicación 4*2 8 / División 4/2 2
+ Suma 4+2= 6 -resta 4-2 =2 “asignación da “A 4 Se asigna el valor de 4 a la variable A
ACTIVIDAD evaluar y dar observaciones sobre los resultados de cada pareja (1 y 2; 3 y 4, 5 y 6):
1. muestra 243 + 5 - 6 + 86 – 42
2. muestra 5 + 86 - 42 - 6 + 243
3. muestra 7 + ( 8 * 16)
4. muestra (7 + 8 ) * 16
5. muestra 24 / 4 * 8
6. muestra 4 * 8 / 24
Una Expresión está compuesta por valores, funciones, primitivas, constantes y/o variables, o por una
combinación de los anteriores mediante operadores.
Son Expresiones:
• Un valor (1.3, "Jorge)
• Una Constante o una Variable (divide, base, área)
• Una función (cos 60, arctan 1)
• Una combinación de valores, constantes, variables, funciones y operadores que siguen reglas de
construcción y orden de evaluación de los operadores (cos 60 + 7 - :altura)
Las Expresiones pueden ser:
• Aritméticas: Dan como resultado un valor numérico. Contienen únicamente operadores aritméticos y datos
numéricos (pi * 20 - :X)
• Alfanuméricas: Dan como resultado una serie o cadena de caracteres.
• Lógicas: Dan como resultado un valor "Verdadero" o "Falso". Contienen variables y/o constantes enlazadas
con operadores lógicos (A>0 y B<=5).
• De Asignación: Estas Expresiones asignan el resultado de una Expresión a una Variable o a una
Constante. La Expresión de Asignación (da "área :base * :altura / 2) asigna (da) el valor resultante de la
Expresión Aritmética (:base * :altura / 2) a la variable área.
EJEMPLO
Para diseñar algoritmos que posteriormente puedan ser traducidos a un lenguaje de programación, es
fundamental saber manejar muy bien los operadores y el orden en el que estos se ejecutan. Las fórmulas
deben escribirse en una sola línea para que el computador las evalúe.

NOTACIÓN MATEMÁTICA EXPRESIÓN


(rc (potencia 6 2)+ 7) / (potencia 8 2) sin embargo es fácil programarlo:

(base * altura / 2)

Desarrollar paso a paso las siguientes expresiones. Tener en cuenta la jerarquía de los operadores:
a. (5 + 2) * (4 + 4) = 56 b. 7 + 3 * 2 + (2 - 1) = 14 c. 6 * 2 + 4 * 3 + 5 / 2 = 26,5
d. 5 + 1 * 4 / 2 * 7 - (8 + 2) = 9 e. 8 + (5 * 6) - 6 = 32 f. 9 + 5 * 3 = 24 g. 4 / 2 * (10 - 5) * 3 = 30
EJEMPLO Luisa Fernanda quiere llenar 5 cajas de bombones y sabe que en cada caja hay que incluir 12
bombones de menta, 14 de fresa intensa y 10 de limón. Encontrar al menos dos expresiones equivalentes
para calcular el número de bombones que necesita Luisa Fernanda.
R/.
Expresión 1: 5 * 12 + 5 * 14 + 5 * 10 ¿Qué significa cada producto? ¿Qué significa la suma
de los productos? Expresión 2: 5 * ( 12 + 14 + 10 )
¿Qué representa la suma del paréntesis? ¿Por qué la suma se debe multiplicar por 5?
¿Las dos expresiones dan el mismo resultado?
ACTIVIDAD
da “númeroA 5 (asigna el valor 5 a la Constante númeroA) da “númeroB 8 (asigna el valor 8 a la
Constante númerob)
Utilizando la información de los valores asignados a las Constantes
númeroA y númeroB, evaluar las siguientes expresiones: (cada uno cuanto sale..=)
1. 20 + :númeroA 2. :númeroA + 3 * :númerob 3. :númeroA > :númeroB
4. :númeroA + "123 5. 4 + :númeroA - :númerob

Un Algoritmo está compuesto por instrucciones de diferentes tipos, organizadas secuencialmente, en forma de
estructuras de control. De estas estructuras, las más comunes y que se cubren en esta guía son las
siguientes: • Secuencial. • Iterativa (repetición). • Condicional (decisión, selección).
Una estructura de control se define como un esquema que permite representar ideas de manera
simplificada y que bajo condiciones normales, es constante
EJEMPLO 3-2 Escribir un procedimiento que se llame triangulo para hallar el área de un triángulo
rectángulo cuya Base mide 3 cm, la Altura 4 cm y la Hipotenusa 5 cm. Introducir en el código
comentarios que aclaren lo que está sucediendo en cada uno de los pasos importantes.
R/
ANÁLISIS DEL PROBLEMA Formular el problema: Ya se encuentra claramente planteado.
Resultados esperados: El área de un triángulo rectángulo.
Datos disponibles: Base, Altura, Hipotenusa, tipo de triángulo. La incógnita es el área y todos los valores son
constantes. El valor de la hipotenusa se puede omitir. El estudiante debe preguntarse si sus conocimientos
actuales de matemáticas le permiten resolver este problema; de no ser así, debe plantear una estrategia para
obtener los conocimientos requeridos.
Restricciones: Utilizar las medidas dadas.
Procesos necesarios: Guardar en dos variables (BASE y ALTURA) los valores de Base y Altura; Guardar en
una constante (DIV) el divisor 2; aplicar la fórmula BASE*ALTURA/DIV y guardar el resultado en la variable
AREA; comunicar el resultado (AREA).
SIMBOLOGÍA DE LOS DIAGRAMAS DE FLUJO
La estandarización de los símbolos para la elaboración de Diagramas de Flujo tardó varios años. Con el fin de
evitar la utilización de símbolos diferentes para representar procesos iguales, la Organización Internacional
para la Estandarización (ISO, por su sigla en inglés) y el Instituto Nacional Americano de Estandarización
(ANSI, por su sigla en inglés), estandarizaron los símbolos que mayor aceptación tenían en 1985. Los
siguientes son los PRINCIPALES SÍMBOLOS PARA ELABORAR DIAGRAMAS DE FLUJO:
Inicio/Final Se utiliza para indicar el inicio y el final de un diagrama;
del Inicio sólo puede salir una línea de flujo y al Final sólo debe llegar una línea.
Decisión Indica la comparación de dos datos y dependiendo
del resultado lógico (falso o verdadero) se toma la decisión de seguir un camino del diagrama u otro.
Entrada General Entrada/Salida de datos en General (en esta guía, solo la usaremos para la Entrada).
Iteración Indica que una instrucción o grupo de instrucciones deben ejecutarse varias veces.
Entrada por teclado Instrucción de entrada de datos por teclado. Indica que el computador debe esperar a
que el usuario teclee un dato que se guardará en una variable o constante.
Salida Impresa Indica la presentación de uno o varios resultados en forma impresa.
Llamada a subrutina Indica la llamada a una subrutina o procedimiento determinado.
Salida en Pantalla Instrucción de presentación de mensajes o resultados en pantalla.
Acción/Proceso General Indica una acción o instrucción general que debe realizar el computador (cambios
de valores de variables, asignaciones, operaciones aritméticas, etc).
Conector Indica el enlace de dos partes de un diagrama dentro de la misma página.
Flujo Indica el seguimiento lógico del diagrama. También indica el sentido de ejecución de las operaciones.
Conector Indica el enlace de dos partes de un diagrama en páginas diferentes.

También podría gustarte