Post on 18-Sep-2018
Que es un Algoritmo?
Es un conjunto preescrito de instrucciones o
reglas bien definidas, ordenadas y finitas que
permite realizar una actividad mediante
pasos sucesivos que no generen dudas a
quien deba realizar dicha actividad.
Conjunto finito de reglas que dan una
secuencia de operaciones para resolver
todos los problemas de un tipo dado.
De forma más sencilla, podemos decir que un
algoritmo es un conjunto de pasos que nos
permite obtener un dato.
2
Un algoritmo debe cumplir:
Finitud: El algoritmo debe acabar tras un
número finito de pasos.
Definibilidad: El algoritmo debe definirse
de forma precisa para cada paso, es
decir hay que evitar toda ambigüedad.
Entrada: El algoritmo tendrá cero o más
entradas es decir, cantidades dadas
antes de empezar el algoritmo.
3
Salida: El algoritmo tiene una o mas
salidas en relación con las entradas.
Efectividad: Se entiende por eso que una
persona sea capaz de realizar el
algoritmo de modo exacto y sin ayuda
de una maquina en un lapso de tiempo
finito.
4
Representación de un
Algoritmo Pseudocódigo: Significa escribir las instrucciones
del algoritmo en lenguaje natural tal y como lo expresamos de manera cotidiana.
Diagramas de Flujo: Son representaciones gráficas de los pasos necesarios que conllevan a la solución algorítmica de un problema. Se utilizan determinados símbolos o figuras que representan una acción.
5
6
• El pseudocódigo es una manera de escribir algoritmos de forma poco estricta
(con una sintaxis relajada) o estructuras de datos poco detalladas, pero
intentando acercar las ideas del algoritmos a estructuras y sintaxis parecidas a
las de los lenguajes de alto nivel en los que vamos a programar el algoritmo.
• Es para ser leído por personas, por tanto no se preocupa en detalles
sintácticos.
• Es un lenguaje de especificación de algoritmos, pero muy parecido a cualquier
lenguaje de programación, por lo que luego su traducción al lenguaje de
programación es muy sencillo, pero con la ventaja de que no se rige por las
normas de un lenguaje en particular. Nos centramos más en la lógica del
problema.
• El pseudocódigo también va a utilizar una serie de palabras claves o palabras
especiales que va indicando lo que significa el algoritmo.
Pseudocódigo.
1. INICIO y FIN: Por donde empieza y acaba el algoritmo.
2. DATOS: Aquí se declaran e inicializan las variables que utilizará el algoritmo.
3. ALGORITMO: En esta sección se escribe el algoritmo.
Pseudocódigo - Sintaxis Utilizada.
Pseudocódigo de un algoritmo genérico:
INICIO.
DATOS: ** esto es un comentario **
entero a ; ** declaración de una variable entera **
real b = 0 ; ** declaración e inicialización de una variable **
ALGORITMO:
leer a ;
b = a + 5 ;
escribir b ;
FIN.
Si: Si la Condición es Verdadera, se ejecuta la Acción, sino el algoritmo continua con su
ejecución.
Estructuras de Control Selectivas.
Condición
Verdadera?
Si
No
Acción
Si < Condición >
<Acción>
Fin_Si
Si – Sino: Si la Condición es Verdadera, se ejecuta la Acción 1, sino el algoritmo ejecuta la
Acción 2. Luego el algoritmo continua con su ejecución.
Condición
Verdadera?
Si
No
Acción 1 Acción 2
Si < Condición >
< Acción 1 >
Sino < Acción 2 >
Fin_Si
Estructuras de Control Selectivas.
Si – Sino – Si: Si la Condición 1 es Verdadera, se ejecuta la Acción 1, sino el algoritmo
evalúa la Condición 2. Si es Verdadera, ejecuta la Acción 2 y sino la Acción 3.
Cond. 1 Verdad
era?
Si
No
Acción 1
Acción 3
Cond. 2 Verdad
era?
Acción 2
Si
No
Si < Condición 1 >
< Acción 1 >
Sino_Si < Condición 2 >
< Acción 2 >
Sino < Acción 3 >
Fin_Si
Estructuras de Control Selectivas.
Juan
Ignacio
Talpo
neSegún (alternativa múltiple): Se evalúa una condición o expresión que puede tomar “n”
valores. Según el valor que la expresión tenga en cada momento se ejecutan las acciones
correspondientes al valor. El valor con el que se compara la expresión, va a depender de los
lenguajes, de lo que sea ese valor. En general ese valor puede ser un valor constante, un
rango de valores o incluso otra condición.
Expresión o
Condición
Acción 1 Acción “n”Acción 2
Según <expresión>
< Valor 1 >: < Acción 1 >
< Valor 2 >: < Acción 2 >
< Otro >: < Acciones >
Fin_Según
Estructuras de Control Selectivas.
…
Mientras: Se evalúa la Condición. Si es Verdadera, se ejecuta la Acción y se evalúa
nuevamente la Condición. En el momento en el que la Condición sea Falsa se sale del bucle y
se continua con la ejecución del algoritmo. Al evaluarse la Condición, al principio, antes de
entrar en el bucle, si la condición es Falsa, nunca se entrará en el bucle. Por lo tanto se utiliza
obligatoriamente este tipo de bucle en el caso de que exista la posibilidad de que el bucle
pueda ejecutarse 0 veces.
Estructuras de Control Repetitivas.
Condición
Verdadera?
Si
No
Acción
Mientras < Condición >
< Acción >
Fin_Mientras
Hacer - Mientras: En primera instancia se ejecuta la Acción. Posteriormente, se evalúa la
Condición. Si es Verdadera, se ejecuta nuevamente la Acción. Si es Falsa, se continúa con la
ejecución del algoritmo. Se repite el bucle mientras la condición sea Verdadera. La Condición
se evalúa siempre al final del bucle, si es Verdadera se ejecuta nuevamente la Acción, si es
Falsa se sale del bucle. Como la Condición se evalúa al final, incluso aunque la primera vez
ya sea Falsa, el bucle (la Acción) se habrá ejecutado al menos una vez.
Condición
Verdadera?
Si
No
Acción
Hacer < Acción >
Mientras < Condición >
Estructuras de Control Repetitivas.
Desde - Hasta: Se utiliza cuando se sabe el número exacto de veces que hay que iterar. Para
ello el bucle llevará asociado una variable “índice”, a la que se le asigna un valor inicial y se
determina cual va a ser su valor final y además se va a incrementar (o decrementar) en cada
iteración de bucle en un valor constante.
Variable = Inicio ; Condición? ;
Inc. “n”
Condición
Verdadera?
Si
No
Acción
Acción
No
Si
Inicio
Acción 2Para variable = Vi, variable < Vf, Inc n
<Acción>
Fin_Para
Estructuras de Control Repetitivas.
Ejemplo: Mostrar el producto de números enteros positivos entrados por teclado hasta el
ingreso de un número negativo.Pseudocódigo:
Módulo: Principal
INICIO
DATOS:
P, num: entero
ALGORITMO:
P 1
Leer num
Mientras num >= 0
P p * num
Leer num
Fin_mientras
Escribir p
FIN
INICIO
Entero P, numP = 1
Leer num
P = P * num
FIN
Num >= 0?
Leer num
Escribir num
Si
No
16Ejemplo. Ciclo Para
Leer 20 números e imprimir cuantos son positivos, cuantos negativos y cuantos neutros.
Inicio
cn = 0
cp = 0
cneg = 0
Para x = 1 hasta 20 hacer
Leer num
Sin num = 0 entonces
cn = cn + 1
si no
Si num > 0 entonces
cp = cp + 1
si no
cneg = cneg + 1
Fin-si
Fin-si
Fin-para
Imprimir cn, cp, cneg
Fin.
17Ejemplo 2. Ciclo Para El problema es calcular la suma de los números naturales
desde 1 hasta n.
Inicio
Entero i, n, Suma
Leer( n)
i=1
Suma =0
PARA i=1 hasta n hacer
Suma=Suma+i
Fin_para
Escribir (Suma)
Fin
Variables
Son estructuras de datos que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecución de un programa. Una variable corresponde a un área reservada en la memoria principal del ordenador pudiendo ser de longitud fija y variable.
20
21TIPOS DE VARIABLES UTILES EN
REPETICIÓN
Variables contadoras
Como su nombre lo indica estasvariables se usan fundamentalmentepara contar, por lo tanto deben ser detipo entero. Un ejemplo de este tipo devariables es la variable de control en unciclo para. Una variable contadora seincrementa (o decrementa) en un valorconstante en cada iteración del ciclo.
Ejemplo. Desarrollar un algoritmo queimprima los números impares en ordendescendente que hay entre 1 y 100.
22Variables acumuladoras
La función de una variable acumuladora esalmacenar valores numéricos quegeneralmente se suman (o multiplican) encada iteración, por lo tanto la variable debeser de tipo entero o real. Por ejemplo, en losdiferentes algoritmos presentados parasolucionar el problema de calcular la suma delos números naturales desde 1 hasta n, lavariable suma es una variable acumuladora.
Ejemplo. Calcular las suma de los cuadrados de los números entre 1 y 100.
Variables acumuladoras
Es una variable cuyo valor se
incrementa o decrementa en un valor
que no tiene por qué ser fijo (en cada
iteración de un bucle). Un acumulador
suele utilizarse para acumular
resultados producidos en las iteraciones
de un bucle.
23
24Variables bandera
Una variable bandera es utilizada dentro de la
condición del ciclo, ya sea sin negar, negada o
conectada con una expresión booleana, paradeterminar cuándo un ciclo se sigue iterando o
cuándo no. De esta manera una variable
bandera debe ser de tipo booleano. (El lenguaje
C estándar no tiene tipos booleanos, C++ si)
25Variables bandera
Ejemplo. Realizar un programa que leauna serie de números reales y los sume. Elprograma debe preguntar al usuariocuándo desea ingresar un siguiente datoy si el usuario responde que no deseaingresar más datos el programa debeconfirmar la respuesta. Si el usuario deseacontinuar ingresando datos se debeseguir solicitando datos y si el usuarioconfirma su deseo de salir, el programadebe mostrar la suma de los datos leídosy terminar.
Variables bandera
Es una variable cuyo valor se incrementa
o decrementa en un valor fijo (en cada
iteración de un bucle). Un contador suele
utilizarse para contar el número de veces
que itera un bucle. Pero, a veces, se utiliza
para contar, solamente, aquellas
iteraciones de un bucle en las que se
cumpla una determinada condición.
26
Constante
Es un valor que no puede ser alterado
durante la ejecución de un programa.
Una constante corresponde a una
longitud fija de un área reservada en la
memoria principal del ordenador, donde
el programa almacena valores fijos.
28
Expresiones
Se definen como una combinación de
constantes, variables, símbolos de
operación, paréntesis, y nombres de
funciones especiales.
Una expresión consta de operandos y
operadores.
Las expresiones se clasifican en
aritméticas, lógicas y comparación.
29
Expresiones aritméticas
Operador significado
+ Suma
- Resta
* Multiplicación
/ División
Div Cociente
Mod Modulo (Residuo)
30
disyunciónP o QOr
ConjunciónP y QAnd
NegaciónNot
SignificadoExpresión
lógica
Operador
lógico
Expresiones Lógicas 31
Menor<
Distinto<>
Mayor o igual>=
Menor o igual<=
Igual=
Mayor>
SignificadoOperador
Expresiones Comparación32
Reglas de prioridad
( )Paréntesis
+, -Más y menos
Div, mod Div y mod
*, /Multiplicación,
divide
GráfoOperador
33
Operación de Asignación
Es la forma de darle valores tanto a
variables como constantes, se
representa con los símbolos
34
Estructura Secuencial
Se caracteriza porque
una acción se ejecuta
detrás de otra. El flujo
del programa
coincide con el orden
físico en el que se han
ido poniendo las
instrucciones.
Dentro de este tipo podemos
encontrar operaciones de
inicio/fin, inicialización de
variables, operaciones de
asignación, cálculo, suma, etc.
35