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.