martes, 18 de agosto de 2015

Introduccion a los Algoritmos

INTRODUCCIÓN A LA PROGRAMACIÓN DE COMPUTADORES
ALGORITMOS


Para qué Sirven los Algoritmos?

Partimos este curso, respondiendo esta pregunta, y su respuesta puede ser simple como compleja; los algoritmos sirven como una guía o receta única para resolver siempre un mismo problema. Es decir que siguiendo los pasos o instrucciones que da el algoritmo siempre vamos a encontrar la respuesta a ese problema.

 Que es un problema?

Podemos definir un problema como una situación que debe ser solucionada,  el Diccionario de la Real Academia lo define como (1. Cuestión que se trata de aclarar, 2. Proposición o Dificultad de Solución Dudosa, 3.) Conjunto de Hechos o Circunstancias que dificultan la consecución de algún fin.  4.) Planteamiento de una situación cuya respuesta desconocida debe obtenerse a través de métodos científicos. Partiendo de esta ultima definición podemos decir que para  poder solucionar un problema mediante el uso de la computadora, es necesario seguir una serie de pasos, donde uno de estos se conoce como diseño del Algoritmo.

Que es un Algoritmo?

Es un conjunto de instrucciones o pasos ordenados, que tienen como objetivo dar la solución a un problema y se caracteriza porque cada paso debe ser preciso y detallado, debe tener un final que es la solución del problema, y debe ser definido, es decir que sirve para lo que se ha creado.


Tipos de Algoritmos

De acuerdo al tratamiento de los Algoritmos a través de una computadora, estos se pueden clasificar en Cualitativos y Cuantitativos. Los Algoritmos Cualitativos son aquellos en donde cada paso se describe en forma de enunciado, textual o gráficamente. Ejemplo una Receta de Cocina, o instrucciones para Armar algún objeto. Los Algoritmos Cuantitativos son aquellos en donde cada paso se describe en forma de expresión matemática, ejemplo: (Una Fórmula un Teorema. etc.).


Características de los Algoritmos

Aunque hay tres características fundamentales que deben tener los algoritmos: finito, preciso y definido, el Doctor en Computación Donald Knuth define dos mas de esta forma:

Carácter finito.
"Un algoritmo siempre debe terminar después de un número finito de pasos".

Precisión.
"Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".
Entrada.

"Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos específicos de objetos."

Salida.
"Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas".

Eficacia.
"También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel".



Como se abordan los problemas desde la perspectiva de los algoritmos

Para poder especificar la solución de un problema desde la perspectiva de los algoritmos, debemos Entender bien el Problema, prácticamente se habla de conocer qué es lo que se busca solucionar, analizar qué datos nos da el enunciado, que información conocemos, cual desconocemos (y debemos ir a buscar para incluirla en nuestro algoritmo) o cual desconocemos y debemos pedírsela al usuario cuando ejecute nuestro algoritmos; partiendo de esto debemos determinar cuáles son nuestros datos de entrada, también que es lo que debemos realizar (proceso) y que es lo que debemos mostrar (salida o resultado). Estos son nuestros insumos para poder desarrollar nuestro algoritmo.

Problema: Se Necesita Conocer el Area de un Círculo, cuyo radio es N (Un Valor Cualquiera) que debemos saber?

1. Analizar el problema (Investigar la Formula para calcular el área de un Circulo, la cuales
Area = Pi * Radio Al Cuadrado, podemos observar mediante la fórmula que hay dos operandos uno es Pi, que investigando sabemos que es una constante, y el otro es el radio, que es el dato que desconocemos, por lo tanto, es el dato que debemos pedir (entrada),  La salida debe ser, El Area del Circulo. Entonces tenemos

Datos de Entrada : Pi y Radio
Proceso : Formula del Area del Circulo Area = Pi * Radio Al cuadrado
Datos de Salida: Area del Circulo


Computadores - Problemas - Algoritmos su relación

El hombre inventó la computadora con el objetivo de que le ayudar a resolver problemas de índole numérico, de una manera ágil, eficiente y automatizada, pero para que estos problemas fueran resueltos por la computadora, era necesario determinar la manera de poder indicarle a la computadora como podía resolverlos, en este orden de ideas el hombre decidió utilizar la teoría de los algoritmos para este fin. ya que era la que mejor encajaba con la arquitectura de funcionamiento de ella. Donde se  partía de unos datos de entrada, se realizaba un proceso y se generaba una salida o resultado.

Como se pueden Expresar los Algoritmos

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al  lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.



La descripción de un algoritmo usualmente se hace en tres niveles:

Descripción de alto nivel
Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles (Nivel de Detalle Básico).

Descripción formal
Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución (Nivel de Detalle Medio).

Implementación
Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones (Nivel de Detalle Alto).


Pseudocódigo (Formalización de los Algoritmos)

El Pseudocódigo es un lenguaje intermedio entre el lenguaje humano y el Lenguaje de Programación, parte de la Palabra Pseudo que significa Falso, es un lenguaje que trata de imitar los lenguajes de programación de Alto Nivel pero de una manera abreviada y menos compleja que los lenguajes de programación como tal.


Componentes de los Algoritmos

Instrucciones de Asignación
Es aquella que permite asignarle a una Variable o una Constante un Valor
En pseudocódigo se usa el carácter de asignación  = o ß
Ejemplo, si queremos asignar a la variable edad un valor determinado 18, lo hacemos de esta manera:

Edadß18
Edad=18

                                                      
Instrucciones declarativas
Las instrucciones declarativas son aquellas en donde llamamos por primera vez las variables o constantes o librerías a utilizar en nuestro algoritmo, aquí lo que hacemos es decir de qué tipo es una variable o constante o que librería utilizará nuestro programa. En los algoritmos las instrucciones declarativas no tienen relevancia.

Instrucciones de Lectura de Datos

La instrucción de lectura de datos es aquella que nos permite, mediante teclado poder introducir datos solicitados por el algoritmo y que estos a su vez sean asignados a variables. La instrucción de lectura de datos es LEER o LEA, y se usa de la siguiente manera:

Ejemplo, En un algoritmo se nos pide que leamos el número de personas para pedir unos datos después, entonces lo que hacemos es lo siguiente, debemos crear una variable donde se almacene el valor ingresado que corresponda al número de personas, esta variable la podemos llamar simplemente n, entonces la instrucción seria:

LEER n
o
LEA n


Instrucciones de Impresión

Las instrucciones de impresión nos permiten mostrar datos en la pantalla del computador, es como el computador nos informa de algo, nos da un resultado para verlo. En pseudocódigo la instrucción que se utiliza es ESCRIBA o IMPRIMA Y este es un ejemplo de uso:
                      
ESCRIBA “Estoy Aprendiendo Algoritmos y Programación”
IMPRIMA “Estoy Aprendiendo Algoritmos y Programación”

Lo que queremos que nos muestre lo encerramos en comillas dobles

Otro ejemplo puede ser imprimir el valor de una variable, supongamos la variable n

ESCRIBA n
Este ejemplo lo que hace es escribir o mostrar en la pantalla el valor que tenga n.



Expresiones
Las  expresiones son combinación de operadores y operandos (números, variables, constantes), que al ser evaluados nos devuelven un valor, y este valor puede ser asignado a una variable o puede ir dentro de una condición en una estructura de control, el ejemplo de esto puede ser el resultado de una fórmula:

área ß Pi * 3.5^2

La expresión a evaluar es Pi * 3.5^2 y vemos el operador de multiplicación *, el operador de exponenciación ^ y la constante Pi y el valor 3.5, a toda esta combinación se le llama expresión, las expresiones también obedece a una regla de precedencia, donde se determina la  operación que se debe realizar primero, pero antes de esto vamos a ver unas definiciones fundamentales en este tema:

Variable  es un espacio en la memoria del algoritmo que es reconocido por un nombre y se le permite guardar valores o datos, los cuales pueden ir cambiando dentro del algoritmo, la regla fundamental para el uso de variables es que esta debe estar relacionada con la información que almacena, y debe ser una sola palabra o combinación de estas utilizando el carácter – o _ ejemplo:

edad, n, peso numero_hijos, cantidad_personas

Los valores a las variables se les asignan de dos maneras, mediante una instrucción de asignación, o mediante la instrucción de lectura de datos, como lo vimos en ejemplos anteriores:

edadß 18
o
LEA edad

Constante, la misma definición de variable y las mismas reglas de uso, solo que su valor no puede cambiar dentro del algoritmo, por lo general se declara al comienzo del algoritmo con un valor, ejemplo:

pi ß 3.1416
gravedad ß9.81




Operadores
Los operadores son símbolos que nos indican que operación se debe realizar entre los operandos (números, variables o constantes), y son de varios tipos (aritméticos, lógicos, relacionales)

Operadores Aritméticos, son aquellos que nos permiten realizar operaciones matemáticas y son los siguientes:
Símbolo
Significado
+
Suma
-
Resta
*
Multiplicación
/
División
^
Exponenciación o Potencia
%
Modular o Residuo de una División.

Para poder agrupar los operadores y operandos, y requerir que se realice una operación antes que otra, se usa los símbolos de paréntesis.

Prioridad de los operadores
como en las matemáticas, si tenemos una expresión con varios operadores, debemos determinar cual se debe realizar primero y sabemos que para eso hay una regla, la primera es que todo lo que está  en el paréntesis () se resuelve primero, desde el interior al exterior, a nivel de operadores los primeros en resolverse son la exponenciación y la modularidad o residuo, luego si hay una división o multiplicación se resuelven, siempre la que aparece primero de izquierda a derecha, y por último que dan la suma y la resta, de la misma forma que la multiplicación

Prioridad
Operación
1
^ Potenciación y % residuo
2
* multiplicación y / división
3
+ suma y - resta

 Operadores Relacionales son aquellos que nos permite comparar dos o más expresiones u operandos, y nos puede devolver uno de dos valores (falso o verdadero), por lo general estos operadores van en la condición de las estructuras de control, y son los siguientes

Operador
Significado
> 
Mayor que determina si la expresión a la izquierda es mayor que la de la derecha ejemplo 4>5 devolvería falso
< 
Menor que determina si la expresión de la izquierda es menor que la de la derecha ejemplo 4<5 devolvería verdadero
=
Igual que Determina si la expresión de la izquierda es igual a la derecha, ejemplo
5= 8 devolvería falso
<> 
Diferente o no igual, determina si la expresión de la izquierda es diferente de la derecha, ejemplo 5<>8 devolvería verdadero
>=
Mayor o Igual, determina si la expresión a la izquierda es mayor o igual que la de la derecha, ejemplo 4>=5 devolvería falso
<=
Menor o igual, determina si la expresión de la izquierda es menor o igual que la de la derecha ejemplo 4<=4, devolvería verdadero, porque es igual



Operadores Lógicos
Son aquellos que nos permiten combinar expresiones relacionales y que al ser evaluadas en su conjunto devuelven un valor lógico de falso o verdadero, por lo general van siempre en las condiciones de las estructuras de control de decisión.

Operador
Descripción
Y
Evalúa las expresiones que hay a la izquierda y a la derecha y el resultado para que esta sea verdadera es que se cumplan las dos ejemplo 5>4 Y 3<1, le resultado sería falso, ya que para que sea verdadero, las dos expresiones tienen que ser ciertas, y es falso que 3<1.
O
Evalúa las expresiones que hay a la izquierda y a la derecha, y si alguna de las dos es verdadera, el resultado final seria verdadero, ejemplo 5>4 O 3<1, seria verdadero, porque aunque la expresión de la derecha es falsa, la de la izquierda es verdadera.
No
Este operador, lo que hace es negar todo lo que aparezca al frente de el, ejemplo
No 3<1, esto sería verdadero, ya que aunque la operación relacional 3<falso, el operador no lo que hace es negar ese resultado convirtiéndolo en verdadero.


ESTRUCTURAS DE CONTROL

Las estructuras de control, son instrucciones en los algoritmos que nos permiten modificar el flujo de ejecución de este, y sirven para:

De acuerdo a una condición, ejecutar un grupo u otro de instrucciones
Ejecutar un grupo de instrucciones mientras exista una condición
Ejecutar un grupo de instrucciones hasta que exista una condición
Ejecutar un grupo de instrucciones un número determinado de veces

Las estructuras de control pueden ser clasificadas en (estructuras de decisión, y estructuras de iteración o repetición)

Estructuras de Decisión

Esta Estructura permite redirigir el curso de las instrucciones del algoritmo según la evaluación de una condición, sea falsa o verdadera, y esta estructura puede ser simple o compuesta: y esta es la forma de su uso:

SI (condición) ENTONCES
            Instrucciones A
            Instrucciones B
            Instrucciones C
.
.
.
FIN SI

Ejemplo:

SI (edad>=18) ENTONCES
            ESCRIBA “Es mayor de Edad”
FIN SI

La estructura compuesta seria de esta forma, e indica que si no se cumple la condición entonces realiza las instrucciones que están después del SINO

SI (condición) ENTONCES
            Instrucciones A
            Instrucciones B
            Instrucciones C
.
.
.
SINO
            Instrucciones D
            Instrucciones E
            Instrucciones F
.
.
.
FIN SI

Ejemplo:

SI (edad>=18) ENTONCES
            ESCRIBA “Es mayor de Edad”
SINO
ESCRIBA “Es menor de Edad”
FIN SI

Estructuras de Repetición o Iteración
Son aquellas que nos permite realizar una serie de instrucciones de manera repetitiva, si al evaluar una condición esta permanece verdadera, es muy utilizada en algoritmos que nos exigen que realicemos una actividad o acción un determinado número de veces.

Instrucción MIENTRAS

MIENTRAS (condición) HAGA
Instrucciones A
            Instrucciones B
            Instrucciones C
.
.
FIN MIENTRAS
Esta instrucción de repetición, lo que hace es repetir las instrucciones A, B, C .. Mientras la condición que tiene sea verdadera

Ejemplo:
Si deseamos imprimir una serie de número del 1 al 10, hacemos lo siguiente:

numeroß1
MIENTRAS (numero<=10) HAGA
            ESCRIBA numero
numeroßnumero+1
.
FIN MIENTRAS
En este ejemplo se puede observar que declaramos una variable llamada numero y le asignamos el valor de 1, luego creamos un bloque de instrucción mientras, y en la condición pusimos que si la variable numero era menor o igual que 10 escribiera el contenido de la variable numero en pantalla y luego fuese incrementando su valor a 1. Esto quiere decir que cuando la variable numero valga 11, ya no ejecutará las instrucciones que están dentro del mientras.



Ejercicios Resueltos

http://datateca.unad.edu.co/contenidos/2150510/Ejemplos_de_algoritmos.pdf


Ejercicios para hacer tomado de

http://informaticacbta75.blogspot.com/p/ejercicios-basicos-de-algoritmos-y.html


ESTRUCTURA SELECTIVAS

1. Confeccione un algoritmo que lea un número e indique si este es positivo o negativo

2. Confeccione un algoritmo que lea un número e indique si este es par o impar

3. Confeccione un algoritmo que lea un número e indique si este es par-positivo, par-negativo, imparpositivo o impar-negativo.

4. Confeccione un algoritmo que lea un número y si este es mayor o igual a 10 devuelva el triple de
este de lo contrario la cuarta parte de este.

5. Obtener el iva de una venta, si esta es superior a $ 150.000 aplicar un descuento del 25 %.

6. Leer tres números e imprimir el mayor de ellos

8. Determine el valor de un pasaje en avión , conociendo la distancia a recorrer, el número de días de
estancia, y sabiendo que si la distancia a recorrer es superior a 1000 Km y el número de días de
estancia es superior a 7, la línea aérea le hace un descuento del 30%. ( el precio por km. es de
$35)

9. Confeccione un algoritmo que permita determinar el precio de un pasaje en avión sabiendo que :
? valor por kilómetro recorrido es de ($47)
? sobre los 1000 km de vuelo el valor del kilómetro es de $25.

10. Construya un algoritmo que permita obtener el sueldo liquido y descuento previsional de un
trabajador, conociendo su sueldo bruto y si este esta imponiendo en caja se le descontará el 12% del
sueldo bruto, y si impone en AFP se le descontará el 17%.

ESTRUCTURA REPETITIVA + VARIABLE CONTADOR

11. Construya un algoritmo que permita leer sólo números positivos hasta reunir 100 números pares u
ochenta números 5. Indicar luego la totalidad de números leídos.

12. Construya un algoritmo que permita leer una cantidad de 20 números y nos indique finalmente
cuantos fueron positivos y cuantos fueron negativos.

13. Construya un algoritmo que permita leer una cantidad variable de números y nos indique cuantos
fueron mayores a 100 y cuántos menores a 100.

14. Construya un algoritmo que permita ingresar 90 notas entre uno y siete, indicando finalmente
cuántos alumnos aprobaron y cuantos reprobaron.

15. Construya un algoritmo que permita leer una cantidad variable de números indicando finalmente lo
siguiente :
• cuántos números fueron positivos
• cuántos fueron negativos
• cuantos fueron pares
• cuantos fueron impares
• cuántos fueron múltiplos de ocho

16. Construya un algoritmo que permita leer una cantidad variable de números hasta que se ingresen 5
números negativos. Indicar cantidad total de números leídos.

17. Construya un algoritmo que permita ingresar números hasta que se lean 7 números pares o 10
números negativos. Indicar finalmente del total de números leídos cuántos fueron impares, cuántos
fueron pares, cuántos fueron positivos y mayores que 100, y cuántos fueron negativos.

19. Leer 10 números e indicar cuánto es la suma de todos ellos.

20. Leer 10 números e indicar cuánto suman los números pares.

21. Leer una cantidad variable de números e indicar cuanto suman todos los números, cuanto los
números positivos y cuanto los números negativos.

22. Leer una cantidad variable de números e indicar el promedio de los números pares y el promedio de los números impares.

23. Leer una cantidad de números variables hasta que se ingrese un número múltiplo de 5. Indicar el
número de datos que fueron ingresados, sin contar el múltiplo de la condición de término.

24. Leer 70 números e indicar cual es el promedio de los números pares mayores a 40 y el promedio de los números pares menores a 40.

25. Leer las edades y los pesos de todos los alumnos de un curso. Indicar para estos la edad promedio y el peso promedio de los alumnos del curso.

26. Leer las edades de los asistentes a un cine e indicar finalmente cuantos de estos fueron: niños (1-
10), adolescentes (11-15), jóvenes (16-22), adultos (23-35), otros (36- ...)

27. Leer las estaturas de los asistentes a un estadio e indicar la estatura promedio de los hombres y la
estatura promedio de las mujeres.

ESTRUCTURA REPETITIVA + VARIABLES AUXILIARES

28. Leer 5 números e indicar finalmente cual fue el menor

29. Leer 200 números e indicar finalmente cual fue el mayor y el menor número

30. Leer una cantidad variable de números e indicar cual fue el mayor número positivo y cual fue el
menor numero negativo.

31. Leer una cantidad variable conocida de números e indicar finalmente cual fue el mayor número leido y cuantas veces fue ingresado.

32. Construya un algoritmo que permita leer un cantidad variable de números e indicar finalmente de
estos:
• el promedio de todos los números pares leídos
• el promedio de todos los números impares leídos
• el número impar leído más grande
• el número par leído más pequeño.
Se deberá ir consultando al usuario si desea leer otro número cada vez.

33. Leer las edades y peso de 50 personas y finalmente indicar:
• Cual fue la mayor y menor edad y sus respectivos pesos.
• Cual fue la edad promedio.
• Cuantos fueron mayores de 21, pero menores de 31.

34. Un estudio meteorológico mensual consiste de una medición promedio diaria para un mes
Conociendo el estudio meteorológico del mes de mayo se pide:
• Indicar la mayor temperatura del mes y el número del día a la que corresponde.
• Indicar la menor temperatura del mes y el número del día a la que corresponde.
• La temperatura promedio del mes.
• La temperatura promedio de la primera quincena del mes.
• La temperatura promedio de la segunda quincena del mes.

35. Un digitalizador óptico permite medir el tiempo que demora un cuerpo en pasar entre un punto A y un punto B. Un digitalizador óptico es empleado para medir el tiempo que demoran diez cuerpos en
recorrer un trayecto de 200 metros. Construya un algoritmo que permita determinar de los diez
cuerpos, cual fue el más veloz, y a cuanto ascendió esta velocidad.
Además indique la velocidad promedio de los cuerpos.

36. Un BOING 747 tiene una capacidad de carga para equipaje de aproximadamente 18.000 kgr.
Confeccione un algoritmo que controle la recepción de equipajes para este avión, sabiendo :
• Un bulto no puede exceder la capacidad de carga del avión ni tampoco exceder los 500 Kg.
• El valor por kilo del bulto es :
- de 0 a 25 Kg. cero pesos
- de 26 a 300 Kg. 1500 pesos por kilo de equipaje.
- de 301 a 500 Kg. 2500 pesos por kilo de equipaje

Para un vuelo cualquiera se pide:
a) Número total de bultos ingresados para el vuelo
b) Peso del bulto más pesado y del más liviano
c) Peso promedio de los bultos
d) Ingreso en pesos y en dólares por concepto de carga.

Construya una tabla de seguimiento con no menos de 15 bultos para realizar la prueba del algoritmo.

40. Construya un algoritmo que permita generar y desplegar los N primeros números pares a
continuación del número P.

MAS EJERCICIOS


 Diseñar un diagrama de flujo de un programa que permita convertir una cantidad ingresada en kilogramos a libras.

En un curso de ciencias de la computación la calificación final del estudiante se determina a partir del
rendimiento en tres aspectos del trabajo. Existe una calificación de exámenes parciales, que cuenta con
30% del total, la calificación de trabajo de taller con 20%, y el examen final con el 50%. Diseñar un
algoritmo para calcular la calificación final del estudiante.


MAS EJERCICIOS DE CICLOS

Una agencia de venta de autos paga a su personal de ventas un salario de $800,00 mas una comisión
de $170,00 por auto vendido mas un 5% del valor de venta. Diseñar un algoritmo para calcular el
salario de un vendedor en un determinado mes, conociendo el nº de automóviles vendidos y el total del monto
de ventas. 





No hay comentarios:

Publicar un comentario