martes, 26 de marzo de 2019
miércoles, 13 de marzo de 2019
ALGORITMO REPETITIVO
Es todos los algoritmos realizados hasta este punto, cada instrucción se ha ejecutado sólo una vez ya sea en forma secuencias o en forma selectiva. Sin embargo, con frecuencia, cierto tipo de problemas requieren de la ejecución reiterada o repetida de un grupo de instrucciones.
Por ejemplo, el programa que califica los exámenes de ingreso a la Universidad consta básicamente de un grupo de instrucciones que califican sólo una prueba. Luego, si deseamos procesar todos los exámenes, agregaremos algunas instrucciones el número de veces que sea necesario para procesar la totalidad de los exámenes.
Para la ejecución repetida de un conjunto de instrucciones, los lenguajes de programación ofrecen una variedad de sentencias o códigos, los que se denominan estructuras repetitivas, estructuras iterativas o simplemente bucles.
En el desarrollo de los procesos iterativos se distinguen los siguientes tipos de bucles.
Son estructuras repetitivas en que se conoce a priori el número de veces que se ejecutaran las instrucciones que se encentran dentro del bucle. Ejemplo si se trata de ingresar 5 notas a priori se sabe que se debe leer repetidamente 5 notas; consiguientemente el proceso de leer se repetirá 5 veces.
Por ejemplo, el programa que califica los exámenes de ingreso a la Universidad consta básicamente de un grupo de instrucciones que califican sólo una prueba. Luego, si deseamos procesar todos los exámenes, agregaremos algunas instrucciones el número de veces que sea necesario para procesar la totalidad de los exámenes.
Para la ejecución repetida de un conjunto de instrucciones, los lenguajes de programación ofrecen una variedad de sentencias o códigos, los que se denominan estructuras repetitivas, estructuras iterativas o simplemente bucles.
Tipos de estructuras repetitivas
En forma indistinta se utiliza estructuras repetitivas, estructura iterativa o bucle para referirse a la repetición de un proceso un número fijo o variable de veces.En el desarrollo de los procesos iterativos se distinguen los siguientes tipos de bucles.
- Bucles variable:
- Estructura Repetir Hasta que
- Estructura Mientras Hacer
- Bucles fijos
- Estructura Para
- Inicialización, en la cual se asigna valores iníciales a las variables que intervienen en el test de salida.
- Actualización, en la que se actualizan las variables que intervienen en el test de salida.
- Instrucción de proceso, parte del bucle en el que se escriben las instrucciones que se deben repetir.
- Test de salida, es la que se controla si el bucle continua o se sale del bucle.
Bucles variables
Son estructuras repetitivas en las que no se conoce el número de veces que se ejecutarán las instrucciones que se encuentran dentro del bucle. Por ejemplo, si se trata se contar el numero de dígitos de un número entero positivo no sabemos cuántos dígitos tendrá el número; consiguientemente no se sabe cuantas veces se realizara el proceso de contar. Otro ejemplo es el número de clientes que debe atender un cajero de banco, quien no sabe a priori cuantas personas existen e cola para ser atendidos.Bucles fijos
ALGORITMOS SELECTIVOS
Estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan denominar también estructuras de decisión o alternativas.En las estructuras selectivas se evalúa una condición y en función del resultado la misma se realiza una opción u otra. Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, else o bien en español si, entonces, sino), con una figura geométrica en forma de rombo o bien con un triángulo en el interior de una caja rectangular
Las estructuras selectivas o alternativas pueden ser:
ALTERNATIVA SIMPLE (SI-ENTONCES/IF-THEN).
La estructura alternativa simple si-entonces (en inglés if-then o bien IF-THEN ) ejecuta una determinada acción cuando se cumple una determinada condición. La selección si-entonces evalúa la condición y.
Si la condición es verdadera, entonces ejecuta la acción S1 (o acciones caso de ser S1 una acción compuesta y constar de varias acciones).
Si la condición es falsa, entonces no hacer nada.
PSEUDOCÓDIGO
Si (condición) Entonces
(acción S1)
Fin_si
ALTERNATIVA DOBLE ( SI-ENTONCES-SI_NO / IF - THEN - ELSE ).
Estructura que permita elegir entre dos opciones o alternativas posibles, en función del cumplimiento o no de una determinada condición.
Si la condición C es verdadera, se ejecuta la acción S1 y, si es falsa, se ejecuta la acción S2.
PSEUDOCÓDIGO
Si ( condición ) entonces
( acción S1 )
si_no
(acción S2)
fin_si
ALTERNATIVAS MÚLTIPLES (SEGÚN _ SEA, CASO DE / CASE).
Cuando existen más de dos elecciones (alternativas) posibles, es cuando se presenta el caso de alternativas múltiples. Si el número de alternativas es grande puede plantear serios problemas de escritura del algoritmo y naturalmente de legibilidad.
La estructura de decisión múltiple evaluará una expresión que podrá tomar n valores distintos 1,2,3,4,..n . Según que elija uno de estos valores en la condición, se realizará una de las n acciones, o lo que es igual, el flujo del algoritmo seguirá un determinado camino entre los n posibles.
Ejemplo :
Determinar si un triangulo es : equilatero, isóceles o escaleno, conociendo sus tres lados (a,b,c).
PSEUDOCÓDIGO
INICIO
leer a,b,c
SI (a == b) ENTONCES
SI (b == c) ENTONCES
imprimir("Triangulo Equilátero")
SINO
imprimir("Triangulo Isóceles")
FIN SI
SINO
SI (b == c) ENTONCES
imprimir("Triangulo Isóceles")
SINO
imprimir("Triangulo Escaleno")
FIN SI
FIN SI
FIN
algoritmos secuanciales
Paso 1.- Lee la etapa 1 de tu libro de texto TIC 1.
Paso 2.- Revisa los videos de la etapa 1.
Paso 3.- Analiza los ejemplos A y B de la etapa 1 de tu guía de aprendizaje.
Paso 4.- Elabora los siguientes algoritmos secuenciales:
►Determina el perímetro de un rectángulo.
►Convierte una cantidad cualquiera de pesos a dólares.
►Determina el área de un pentágono.
►Determina la velocidad final de un auto si su velocidad inicial es 0 km/h y su aceleración es 0.8 m/s2; y el tiempo transcurrido es de 30 segundos.
Paso 5.- Analiza ejemplos C y D de la etapa 1.
Paso 6.- Elabora los siguientes algoritmos condicionales:
►Determina si una persona tiene derecho a …ver más…
•Identifica el inicio y el final.
•Enumera cada uno de los pasos
•Describe los pasos, sin ambigüedad, siendo preciso y veras en la solución del problema.
•Utiliza lenguaje sencillo en la descripción.
Algoritmos Secuenciales.
►Determina el perímetro de un rectángulo.
►Convierte una cantidad cualquiera de pesos a dólares.
►Determina el área de un pentágono.
►Determina la velocidad final de un auto si su velocidad inicial es 0 km/h y su aceleración es 0.8 m/s2; y el tiempo transcurrido es de 30 segundos.
►Determina el perímetro de un rectángulo.
1.- Inicio.
2.- Variables; Perímetro, L1=10 cm, L2=20 cm, L3=10 cm, L4=10 cm.
3.- Perímetro es igual a L1+L2+L3+L4.
4.- P=10+20+10+20
5.- P=60 cm.
6.- Fin.
►Convierte una cantidad cualquiera de pesos a dólares.
1.-Inicio.
2.-Determinar variables. x=1000 pesos; y= ¿?dólares.
3.- Un dólar=13.49.
4.- y= x/13.49
5.- y= 74.12 dólares
6.- 1000 pesos son 74.12 dólares.
7.- Fin.
►Determina el área de un pentágono.
1.- Inicio.
2.- Variables; Área= ¿?, Perímetro=10, Apotema=8.
3.- Área es igual a 10*8/2
4.- Área=40
5.- Fin
•Enumera cada uno de los pasos
•Describe los pasos, sin ambigüedad, siendo preciso y veras en la solución del problema.
•Utiliza lenguaje sencillo en la descripción.
Algoritmos Secuenciales.
►Determina el perímetro de un rectángulo.
►Convierte una cantidad cualquiera de pesos a dólares.
►Determina el área de un pentágono.
►Determina la velocidad final de un auto si su velocidad inicial es 0 km/h y su aceleración es 0.8 m/s2; y el tiempo transcurrido es de 30 segundos.
►Determina el perímetro de un rectángulo.
1.- Inicio.
2.- Variables; Perímetro, L1=10 cm, L2=20 cm, L3=10 cm, L4=10 cm.
3.- Perímetro es igual a L1+L2+L3+L4.
4.- P=10+20+10+20
5.- P=60 cm.
6.- Fin.
►Convierte una cantidad cualquiera de pesos a dólares.
1.-Inicio.
2.-Determinar variables. x=1000 pesos; y= ¿?dólares.
3.- Un dólar=13.49.
4.- y= x/13.49
5.- y= 74.12 dólares
6.- 1000 pesos son 74.12 dólares.
7.- Fin.
►Determina el área de un pentágono.
1.- Inicio.
2.- Variables; Área= ¿?, Perímetro=10, Apotema=8.
3.- Área es igual a 10*8/2
4.- Área=40
5.- Fin
Explicamos las estructuras secuenciales, cómo se representan en pseudocódigo y algunos ejemplos prácticos de las mismas.
La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. En Pseudocódigo una Estructura Secuencial se representa de la siguiente forma:
Observe el siguiente problema de tipo cotidiano y sus respectivos algoritmos representados en Pseudocódigo y en diagramas de flujos:
Tengo un teléfono y necesito llamar a alguien pero no sé como hacerlo.
El anterior ejemplo es un sencillo algoritmo de un problema cotidiano dado como muestra de una estructura secuencial. Ahora veremos los componentes que pertenecen a ella:
Asignación
La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:
- Simples: Consiste en pasar un valor constante a una variable (a 15)
- Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a a + 1)
- Acumulador: Consiste en usarla como un sumador en un proceso (a a + b)
- De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a c + b*2/4).
< Variable > <valor o expresión >
El símbolo debe leerse asigne.
Escritura o salida de datos
Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Esta instrucción presenta en pantalla el mensaje escrito entre comillas o el contenido de la variable. Este proceso se representa así como sigue:
Lectura o entrada de datos
La lectura o entrada de datos consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor o dato. Este dato va a ser almacenado en la variable que aparece a continuación de la instrucción. Esta operación se representa así:
DECLARACION DE VARIABLES Y CONSTANTES
La declaración de variables es un proceso que consiste en listar al principio del algoritmo todas las variables que se usarán, además de colocar el nombre de la variable se debe decir qué tipo de variable es.
Contador: ENTERO
Edad, I: ENTERO
Direccion : CADENA_DE_CARACTERES
Salario_Basico : REAL
Opcion : CARACTER
En la anterior declaración de variables Contador, Edad e I son declaradas de tipo entero; Salario_Basico es una variable de tipo real, Opcion es de tipo carácter y la variable Direccion está declarada como una variable alfanumérica de cadena de caracteres.
En el momento de declarar constantes debe indicarse que lo es y colocarse su respectivo valor.
CONSTANTE Pi 3.14159
CONSTANTE Msg Presione una tecla y continue
CONSTANTE ALTURA 40
Cuando se trabaja con algoritmos por lo general no se acostumbra a declarar las variables ni tampoco constantes debido a razones de simplicidad, es decir, no es camisa de fuerza declarar las variables. Sin embargo en este curso lo haremos para todos los algoritmos que realicemos, con esto logramos hacerlos más entendibles y organizados y de paso permite acostumbrarnos a declararlas ya que la mayoría de los lenguajes de programación (entre ellos el C++) requieren que necesariamente se declaren las variables que se van a usar en los programas.
PSEUDOCODIGOS
En ciencias de la computación, y análisis numérico, el pseudocódigo (o lenguaje de descripción algorítmico) es una descripción de alto nivel compacta e informal1 del principio operativo de un programa informático u otro algoritmo.
Utiliza las convenciones estructurales de un lenguaje de programación real,2 pero está diseñado para la lectura humana en lugar de la lectura mediante máquina, y con independencia de cualquier otro lenguaje de programación. Normalmente, el pseudocódigo omite detalles que no son esenciales para la comprensión humana del algoritmo, tales como declaraciones de variables, código específico del sistema y algunas subrutinas. El lenguaje de programación se complementa, donde sea conveniente, con descripciones detalladas en lenguaje natural, o con notación matemática compacta. Se utiliza pseudocódigo pues este es más fácil de entender para las personas que el código del lenguaje de programación convencional, ya que es una descripción eficiente y con un entorno independiente de los principios fundamentales de un algoritmo. Se utiliza comúnmente en los libros de texto y publicaciones científicas que se documentan varios algoritmos, y también en la planificación del desarrollo de programas informáticos, para esbozar la estructura del programa antes de realizar la efectiva codificación.
No existe una sintaxis estándar para el pseudocódigo, aunque los ocho IDE's que manejan pseudocódigo tengan su sintaxis propia. Aunque sea parecido, el pseudocódigo no debe confundirse con los programas esqueleto que incluyen código ficticio, que pueden ser compilados sin errores. Los diagramas de flujo y UMLpueden ser considerados como una alternativa gráfica al pseudocódigo, aunque sean más amplios en papel.
Aplicaciones
Generalmente se utiliza pseudocódigo en los libros de texto y publicaciones científicas relacionadas con la informática y la computación numérica, para la descripción de algoritmos, de manera que todos los programadores puedan entenderlo, aunque no todos conozcan el mismo lenguaje de programación. Generalmente, en los libros de texto se adjunta una explicación que acompaña a la introducción y que explica las convenciones particulares en uso. El nivel de detalle del seudocientífico puede, en algunos casos, acercarse a la de formalizar los idiomas de propósito general.
Un programador que tiene que aplicar un algoritmo específico, sobre todo uno desfamiliarizado, generalmente comienza con una descripción en pseudocódigo, y luego "traduce" esa descripción en el lenguaje de programación meta y lo modifica para que interactúe correctamente con el resto del programa. Los programadores también pueden iniciar un proyecto describiendo la forma del código en pseudocódigo en el papel antes de escribirlo en su lenguaje de programación, como ocurre en la estructuración de un enfoque de Top-down y Bottom-up arriba hacia abajo.}
Sintaxis[editar]
En la actualidad y por lo general, el pseudocódigo, como su nombre lo indica, no obedece a las reglas de sintaxis de ningún idioma en particular ni es de forma estándar sistemática, a pesar de que cualquier escritor en particular vaya a pedir prestado las estructuras de control general, la sintaxis y el estilo, por ejemplo, de algún lenguaje de programación convencional. Pero en caso de que se quiera ejecutar, se debe llevar a forma tipo, para que no genere mensajes de error. Las fuentes populares incluyen la sintaxis de Pascal, BASIC, C, C++, Java, Lisp, y ALGOL. Por lo general, se omiten las declaraciones de variables. A veces, las llamadas a funciones, los bloques de código y el código contenido dentro de un loop se remplazan por una sentencia de una línea en lenguaje natural.
Dependiendo del escritor, el pseudocódigo puede variar mucho en su estilo, yendo desde en un extremo, una imitación casi exacta de un lenguaje de programación real, hasta al acercarse a una descripción en prosa de formato de pseudocódigo en el otro extremo.
Este es un ejemplo de pseudocódigo (para el juego matemático bizz buzz):
Pseudocódigo estilo Fortran:
programa bizzbuzz
hacer i = 1 hasta 100
establecer print_number a verdadero
si i es divisible por 3
escribir "Bizz"
establecer print_number a falso
si i es divisible por 5
escribir "Buzz"
establecer print_number a falso
si print_number, escribir i
escribir una nueva línea
fin del hacer
|
Pseudocódigo estilo Pascal:
procedimiento bizzbuzz
para i := 1 hasta 100 hacer
establecer print_number a verdadero;
Si i es divisible por 3 entonces
escribir "Bizz";
establecer print_number a falso;
Si i es divisible por 5 entonces
escribir "Buzz";
establecer print_number a falso;
Si print_number, escribir i;
escribir una nueva línea;
fin
|
Pseudocódigo estilo C:
subproceso funcion bizzbuzz
para (i <- 1; i<=100; i++) {
establecer print_number a verdadero;
Si i es divisible por 3
escribir "Bizz";
establecer print_number a falso;
Si i es divisible por 5
escribir "Buzz";
establecer print_number a falso;
Si print_number, escribir i;
escribir una nueva línea;
}
|
Definición de datos en pseudocódigo[editar]
La definición de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del algoritmo, y naturalmente cuando empleemos el pseudocódigo para definir estructuras de datos, esta parte la desarrollaremos adecuadamente.
Funciones y operaciones[editar]
Cada autor usa su propio pseudocódigo con sus respectivas convenciones. Por ejemplo, la instrucción "reemplace el valor de la variable por el valor de la variable " puede ser representado como:
- asigne a el valor de
Las operaciones aritméticas se representan de la forma usual en matemáticas.
Estructuras de control[editar]
En la redacción de pseudocódigo se utiliza tres tipos de estructuras de control: las secuenciales, las selectivas y las iterativas.
Estructuras secuenciales[editar]
Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el número de renglón. Es decir que las instrucciones se ejecutan de arriba hacia abajo.
Estructuras selectivas[editar]
Las instrucciones selectivas representan instrucciones que pueden o no ejecutarse, según el cumplimiento de una condición.
La condición es una expresión booleana. Instrucciones es ejecutada sólo si la condición es verdadera.
Selectiva doble (alternativa)[editar]
La instrucción alternativa realiza una instrucción de dos posibles, según el cumplimiento de una condición.
La condición es una variable booleana o una función reducible a booleana (lógica, Verdadero/Falso). Si esta condición es cierta se ejecuta Instrucciones1, si no es así, entonces se ejecuta Instrucciones2.
Selectiva múltiple[editar]
También es común el uso de una selección múltiple que equivaldría a anidar varias funciones de selección.
En este caso hay una serie de condiciones que tienen que ser mutuamente excluyentes, si una de ellas se cumple las demás tienen que ser falsas necesariamente, hay un caso si no que será cierto cuando las demás condiciones sean falsas.
En esta estructura si Condición1 es cierta, entonces se ejecuta sólo Instrucciones1. En general, si Condicióni es verdadera, entonces sólo se ejecuta Instruccionesi
Selectiva múltiple-Casos[editar]
Una construcción similar a la anterior (equivalente en algunos casos) es la que se muestra a continuación.
En este caso hay un Indicador es una variable o una función cuyo valor es comparado en cada caso con los valores "Valori", si en algún caso coinciden ambos valores, entonces se ejecutarán las Instruccionesi correspondientes. La sección en otro caso es análoga a la sección si no del ejemplo anterior.
Estructuras iterativas[editar]
Las instrucciones iterativas representan la ejecución de instrucciones en más de una vez.
Bucle mientras[editar]
Artículo principal: Bucle while
El bucle se repite mientras la condición sea cierta, si al llegar por primera vez al bucle mientras la condición es falsa, el cuerpo del bucle no se ejecuta alguna vez.
Bucle repetir[editar]
Existen otras variantes que se derivan a partir de la anterior. La estructura de control repetir se utiliza cuando es necesario que el cuerpo del bucle se ejecuten al menos una vez y hasta que se cumpla la condición:
La estructura anterior equivaldría a escribir:
Bucle hacer[editar]
El Bucle hacer se utiliza para repetir un bloque de código mientras se cumpla cierta condición.
Bucle para[editar]
Artículo principal: Bucle for
Una estructura de control muy común es el ciclo FOR, la cual se usa cuando se desea iterar un número conocido de veces, empleando como índice una variable que se incrementa (o decrementa):
la cual se define como:
Bucle para cada[editar]
Por último, también es común usar la estructura de control para cada. Esta sentencia se usa cuando se tiene una lista o un conjunto y se quiere iterar por cada uno de sus elementos:
Si asumimos que los elementos de son , entonces esta sentencia equivaldría a:
Que es lo mismo que:
Sin embargo, en la práctica existen mejores formas de implementar esta instrucción dependiendo del problema.
Es importante recalcar que el pseudocódigo no es un lenguaje estandarizado. Eso significa que diferentes autores podrían dar otras estructuras de control o bien usar estas mismas estructuras, pero con una notación diferente. Sin embargo, las funciones matemáticas y lógicas toman el significado usual que tienen en matemática y lógica, con las mismas expresiones.
El anidamiento[editar]
Cualquier instrucción puede ser sustituida por una estructura de control. El siguiente ejemplo muestra el pseudocódigo del ordenamiento de burbuja, que tiene varias estructuras anidadas. Este algoritmo ordena de menor a mayor los elementos de una lista .
En general, las estructuras anidadas se muestran indentadas, para hacer más sencilla su identificación a simple vista. En el ejemplo, además de la indentación, se ha conectado con flechas los pares de delimitadores de cada nivel de anidamiento.
Funciones y procedimientos[editar]
Muchas personas prefieren distinguir entre funciones y procedimientos. Una función, al igual que una función matemática, recibe uno o varios valores de entrada y regresa una salida mientras que un procedimiento recibe una entrada y no genera alguna salida aunque en algún caso podría devolver resultados a través de sus parámetros de entrada si estos se han declarado por referencia (ver formas de pasar argumentos a una función o procedimiento).
En ambos casos es necesario dejar en claro cuáles son las entradas para el algoritmo, esto se hace comúnmente colocando estos valores entre paréntesis al principio o bien declarándolo explícitamente con un enunciado. En el caso de las funciones, es necesario colocar una palabra como regresar o devolver para indicar cuál es la salida generada por el algoritmo. Por ejemplo, el pseudocódigo de una función que permite calcular (un número elevado a potencia ).
Un ejemplo de procedimiento seria el algoritmo de ordenamiento de burbuja, por el que partiendo de una lista de valores estos se ordenan, nótese que en un procedimiento, no se calcula el valor de una función, sino que se realiza una acción, en este caso ordenar la lista.
Desarrollo de algoritmos[editar]
Con el pseudocódigo se puede desarrollar cualquier algoritmo que:
- Tenga un único punto de inicio.
- Tenga un número finito de posibles puntos de término.
- Halla un número finito de caminos, entre el punto de inicio y los posibles puntos de término.
Ventajas del pseudocódigo sobre los diagramas de flujo[editar]
Los pseudocódigos presentan los siguientes beneficios:
- Ocupan mucho menos espacio en el desarrollo del problema.
- Permite representar de forma fácil operaciones repetitivas complejas.
Suscribirse a:
Entradas (Atom)