viernes, 2 de febrero de 2018

index








Algorítmica y Programación




Profesor:
 Alturo Ayala                   
                                                                                                         Estudiante:
                                                                                                         Bryant Terán

                                                          Caracas, Enero 2018

Definición de Algoritmo

Algoritmo y Tipos


Significado de algoritmo
¿Qué es un algoritmo? Se denomina algoritmo a una combinación de pasos lógicos dispuestos de forma organizada para resolver un problema. Los algoritmos ayudan a ordenar el trabajo en numerosas disciplinas. En informática se utilizan para expresar las ‘instrucciones’ con las que se realizan las funciones, y se suele expresar mediante diferentes tipos de diagrama. El esquema más conocido es el diagrama de flujo, que muestra paso por paso como se debe proseguir, y principalmente, las preguntas que el operador se debe hacer para proseguir con el siguiente pasó y así llegar al final del proceso. Si algún paso falla, el algoritmo permite “retroceder ordenadamente” la cantidad de pasos que sean necesarios para corregir el error

Resultado de imagen para Algoritmo


Clasificación y Tipos de algoritmos

Resultado de imagen para Tipos de algoritmo
Se haclasificado a los algoritmos de diversas formas, de acuerdo con algunos de sus atributos. Por ejemplo:

Según el sistema de signos con el que describen los pasos a seguir, se reconocen:
Algoritmos cualitativos: cuando se hace a través de palabras, es decir, las instrucciones son verbales. Sucede, por ejemplo, con recetas de cocina.
Algoritmos cuantitativos: cuando se hace a través de cálculos numéricos. Se puede hacer un algoritmo, por ejemplo, para obtener la raíz cuadrada de un número.

Según su función, los algoritmos pueden ser:
Algoritmos de ordenamiento: secuencian los elementos que ingresan a partir de un cierto orden, en general, según un orden numérico o léxico.
Algoritmos de búsqueda: al contrario de realizar operaciones o secuenciar elementos, se dedica a encontrar dentro de una lista que ingresa, uno o varios elementos en particular que cumplan con el conjunto de condiciones dadas.
Algoritmos de encaminamiento: deciden de qué modo se deberá transmitir algo que llega, y cómo seguirá un conjunto de pasos encadenados. Se dividen fundamentalmente entre adaptativos y estáticos, los primeros con cierta capacidad de aprendizaje y ajuste a la circunstancia, mientras que los segundos funcionan mecánicamente, siempre del mismo modo. Es importante decir que los algoritmos de encaminamiento cuentan con una propia subdivisión, según el camino que se toma para que la transmisión llegue de manera efectiva (ejemplos de estos tipos son: por el camino más corto, de manera óptima, basado en el flujo, etc.).

También los algoritmos han sido clasificados según la estrategia que se utiliza para llegar al resultado. Veamos algunos ejemplos:
Algoritmos probabilistas: no se puede estar seguro de la exactitud de la respuesta que darán. Se agrupan en distintos subtipos, pero con esa premisa: o bien presentan soluciones aproximadas del problema, o bien presentan soluciones que pueden ser correctas pero también erróneas.
Algoritmo cotidiano: es el que se da en la vida común de las personas, no se aplica en sistemas informáticos ni en nada ajeno al día a día. Muchas de las decisiones que se toman desde que uno se despierta por la mañana pertenecen a este grupo.
Algoritmo eucarístico: abandona alguno de los objetivos como recurso para terminar llegando a la solución. En general, son utilizados cuando no existe una solución mediante las vías tradicionales.
Algoritmo de escalada: se comienza con una solución insatisfactoria (que no cumple la entrada y la salida), y se la va modificando aproximándose a lo que se busca. En algún momento, estaremos cerca de (o llegaremos a) la solución correcta.
Algoritmo voraz: Con la idea de llegar a una solución óptima definitiva, elige analizar cada paso como único y elegir la solución óptima para ese paso.
Algoritmo determinista: es completamente lineal (cada paso tiene un paso sucesor y un paso predecesor) y por lo tanto predictivo, si se conocen sus entradas y su forma de proceder. El algoritmo de Elucides, que permite averiguar el máximo común divisor entre dos números, responde a este tipo. Se distinguen de los no deterministas, donde el algoritmo tiene un comportamiento en forma de árbol.




diagrama de flujo y sus características

 diagrama de flujo y sus características
Resultado de imagen para Tipos de algoritmo
Definición de Diagrama de Flujo
Un diagrama de flujo es una forma esquemática de representar ideas y conceptos en relación. A menudo, se utiliza para especificar algoritmos de manera gráfica.
Se conoce como diagramas de flujo a aquellos gráficos representativos que se utilizan para esquematizar conceptos vinculados a la programación, la economía, los procesos técnicos y/o tecnológicos, la psicología, la educación y casi cualquier temática de análisis.

Los diagramas de flujo son múltiples y diversos y pueden abordar muchos temas distintos de formas también muy diferentes. En cualquier caso, el aspecto en común entre ellos es la presencia de un vínculo entre los conceptos enunciados y una interrelación entre las ideas. Comúnmente, se utiliza este tipo de diagramas para detallar el proceso de un algoritmo y, así, se vale de distintos símbolos para representar la trayectoria de operaciones precisas a través de flechas. Siempre que existe un diagrama de flujo existe un proceso o sistema que pretende ser graficado a través de símbolos visuales que, en vez de términos verbales, simplifican el funcionamiento de dicho proceso y lo hacen más claro y evidente al lector.

Característica de Diagrama de Flujo
Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el autor o responsable del proceso, los autores o responsables del proceso anterior y posterior y de otros procesos interrelaciones, así como las terceras partes interesadas.
Definir qué se espera obtener del diagrama de flujo.
Identificar quién lo empleará y cómo.
Establecer el nivel de detalle requerido.
Determinar los límites del proceso a describir.
Los pasos a seguir para construir el diagrama de flujo son: Los pasos a seguir para construir el diagrama de flujo son:
Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.
Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.
Si el nivel de detalle definido incluye actividades menores, listarlas también.
Identificar y listar los puntos de decisión.
Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.
Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido.
Resultado de imagen para caracteristicas de diagrama de flujo

Metodología para la resolucion de problema algorítmica

Metodología para la resolución de problema algorítmica
A continuación se describen las etapas de la Metodología para la Resolución de Problemas Algorítmicos propuesta por Tucker et al., denominada por sus siglas en inglés "MAPS". Son siete las etapas, que a continuación se describen: Etapa 1: El Dialogo Comprender el problema. Leer el enunciado del problema y hacer preguntas sobre las características de las entradas y las salidas. Consiste en la identificación de las entradas, las salidas y sus respectivas limitaciones, para un problema determinado, como fruto de un proceso de análisis, en el cual se le sugiere al estudiante aplicar un enfoque sistémico para realizar una correcta delimitación del problema.
 Etapa 2:
Las Especificaciones Comprendido el paso anterior se procede a definir las especificaciones a partir de las entradas y salidas identificadas en la etapa anterior. Este proceso tiene como fin predecir las pre y post condiciones expresadas como predicados, que en un futuro permitirán evaluar la consistencia del algoritmo ya sea utilizándolas como estados iniciales, intermedios o finales. El estudiante debe tener conocimiento previo de lógica matemática para lograr especificaciones claras de las pre y post condiciones. Escribir pre y postcondiciones que sean completas y consistentes. Es decir, asegurarse de que las precondiciones cubren todas las posibles entradas, que las postcondiciones definen la salida para todas las posibles entradas, y que tanto las precondiciones como las postcondiciones son interna y mutuamente consistente. 
Etapa 3: 
La División Esta etapa consiste en la elaboración del algoritmo, diseño del mismo, fundamentada en las técnicas y herramientas que se expusieron anteriormente. Realizar subdivisiones del proceso en una colección de pasos diferentes. Repetir este proceso para cada paso hasta que la subdivisión no tenga sentido. Identificar las relaciones de control entre los distintos pasos. Es decir ¿Qué paso debe preceder a cuál ?, ¿Qué pasos son parte de otro mas complejo?, ¿Qué pasos deben repetirse dentro de un bucle?, y así sucesivamente.
 Etapa 4:
 Definición de Abstracciones En esta etapa se determinan cuáles de los pasos que se han utilizado, recolectándolos y adaptarlos en una solo rutina para ser utilizada en la situación presente. Se debe identificar rutinas que se puede reutilizar en el programa, ya sea que existan o que necesite desarrollar él Metodología para la Solución de Problemas Algorítmicos (MAPS) Adaptado por: Ing. Zamantha González mismo, esto le permitirá realizar sus programas mas fácilmente y de tal forma que su mantenimiento y comprensión sea mas fácil. En muchos casos, esta tarea implica la construcción de nuevas rutinas a partir de otras, o incluso construir una nueva para una utilización mas especializada.
 Etapa 5: 
Codificación Se trata de trasladar el algoritmo a un lenguaje de programación, crear el programa fuente con base en la sintaxis propuesta por el lenguaje de programación escogido, compilarlo y por ultimo depurarlo. 
Etapa 6:
Prueba y Verificación Se realizan las pruebas y verificaciones del programa con miras a que este sea: un programa correcto, robusto y amigable. La prueba se realiza para el conjunto de entradas que permita explorar todo el rango de valores permitidos por las precondiciones, para cada ejecución, comprobar que las salidas satisfacen las poscondiciones.
 Etapa 7:
Presentación Se debe crea la documentación necesaria, esta debe ser tanto interna (expresada en líneas de texto dentro del programa) como externa (creando un documento anexo que exponga los aspectos clave del programa para su mantenimiento posterior), de forma tal, que su mantenimiento sea fácil. Se debe identificar el programa, el autor la fecha, una explicación de cada rutina utilizada, no hay límite en cuanto a comentarios, de tal manera que faciliten la modificación programa. Ahora bien, el desarrollo de estas etapas involucra dos conceptos fundamentales como son: Análisis, que consiste en definir las partes en función de un comportamiento, o sea, de algo general y desconocido obtener algo específico y conocido. Es ir del todo a las partes. Es responder a preguntas que involucran ¿Qué?, consiste en indagar. Por ejemplo: ¿Qué debe entrar al problema?, ¿Qué resultados deben salir del problema? y ¿Qué procesos debe ejecutar el problema para convertir las entradas en salidas? Síntesis, que consiste en definir un comportamiento a partir de una serie de partes, es ir de las partes al todo, de algo conocido a lo desconocido, consiste en crear. Es responder a preguntas sobre ¿Cómo?. Por ejemplo: ¿Cómo se debe desarrollar este proceso para lograr convertir las entradas en salidas

Resultado de imagen para Metodologia para la resolución de problema algorítmica

Tipos De Datos

Tipos De Datos
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable.

Numéricos

Simples Lógicos

Alfanuméricos (string)

Tipos de

datos Arreglos (Vectores, Matrices)

Estructurados Registros

(Def. por el Archivos

usuario) Apuntadores


Tipos de Datos Simples
Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.

 Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos).

Datos Alfanuméricos (Stirling): Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas.

Ejemplo:

“Instituto Tecnológico de Tuxtepec”

“1997”



Operadores y Operando
Operadores: Son elementos que relacionan de forma diferente, los valores de una o más variables y/o constantes. Es decir, los operadores nos permiten manipular valores.

Aritméticos

Tipos de Operadores Relaciónales

Lógicos

 Operadores Aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes).

Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.

Operando (Operador) Operando

Valor

(Constante o variable)

Operadores Aritméticos

+ Suma

- Resta

* Multiplicación

/ División

Mod Modulo (residuo de la división entera)

Ejemplos:

Expresión Resultado

7 / 2 3.5

12 mod 7 5

4 + 2 * 5 14

Prioridad de los Operadores Aritméticos

Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis mas interno se evalúa primero.

Dentro de una misma expresión los operadores se evalúan en el siguiente orden.

1.- ^ Exponenciación

2.- *, /, mod Multiplicación, división, modulo.

3.- +, - Suma y resta.

 Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha.

Operadores Relaciónales:

Se utilizan para establecer una relación entre dos valores.

Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso).

Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas)

 Tienen el mismo nivel de prioridad en su evaluación.

Los operadores relaciónales tiene menor prioridad que los aritméticos.

Operadores Relaciónales

> Mayor que

< Menor que

> = Mayor o igual que

< = Menor o igual que

< > Diferente

= Igual

Ejemplos:

Si a = 10 b = 20 c = 30

a + b > c Falso

a - b < c Verdadero

a - b = c Falso

a * b < > c Verdadero

Ejemplos no lógicos:

a < b < c

10 < 20 < 30

T < 30 (no es lógico porque tiene diferentes operandos)

 Operadores Lógicos:

Estos operadores se utilizan para establecer relaciones entre valores lógicos.

  Estos valores pueden ser resultado de una expresión relacional.

Operadores Lógicos

And            Y

Or           O

Not        Negación

Operador And

Operando1   Operador  Operando2  Resultado

T                  AND               T                 T

T                                         F                  F

F                                        T                   F

F                                         F                  F

Operador Or

Operando1  Operador  Operando2  Resultado

T                      OR               T               T

T                                           F              T

F                                          T               T

F                                           F               F

Operador Not

Operando  Resultado

T                     F
              
F                     T




Ejemplos:

(a < b) and (b < c)

(10<20) and (20<30)

   T and T

       T
Resultado de imagen para tipos de datos en algoritmoResultado de imagen para tipos de datos en algoritmo

Operaciones Aritméticos

Operaciones Aritméticos 
En la actualidad, ninguno de estos procedimientos se hace fuera de los centros escolares, y no aportan ni desarrollan ninguna habilidad cognitiva que mejore el razonamiento lógico-matemático, siendo esto último el objetivo fundamental que debe predominar en todas las acciones que hacemos los educadores matemáticos con nuestros alumnos.
No existe ningún centro comercial, financiero (Bancos, Cajas de Ahorros,…), empresas (gasolineras, supermercados,…), laboratorios, etc, donde veamos realizar en el año 2001 (lo mismo que hace dos décadas) las operaciones aritméticas (sumas, restas, multiplicaciones y divisiones) con bolígrafo y papel. Por lo tanto, esos algoritmos deben desaparecer del trabajo escolar. En definitiva, deben desaparecer de la práctica educativa. Son parte de la Historia de la Pedagogía.
Debemos esperar a un cataclismo, para que cambie el panorama mundial tal como lo conocemos hoy en día, y desaparezcan todos los instrumentos de cálculo electrónico, para volver a reconsiderar la utilidad de estos procedimientos.
Después de lo anterior, ¿qué haremos ahora los docentes con el cálculo?
Desde hace décadas, y de manera signifi cativa en los comienzos del siglo XXI, las estrategias elementales de cálculo en la escuela deben ir dirigidos a dotar a las niñas y niños (futuros ciudadanos) del mayor número de habilidades cognitivas posibles para el CÁLCULO MENTAL, y dentro de este para el CÁLCULO APROXIMADO (Estimación). El exacto lo dan las máquinas, que se equivocan menos que los seres humanos. Por lo tanto, todas las acciones a desarrollar en las aulas deben tener dentro de esta parcela del conocimiento matemático como principal objetivo:
“Fomentar el desarrollo del cálculo mental”.
Una herramienta que contribuye sustancialmente a conseguir este objetivo es la calculadora. Este instrumento ha revolucionado la enseñanza y el aprendizaje del cálculo, pero desgraciadamente son muy pocos los responsables educativos, inspectores, profesores, investigadores, formadores de profesores, madres y padres que se han enterado de este hecho. Hay una función en estas máquinas que la mayoría de las personas ignora, que es el factor constante. Esta posibilidad permite un amplio espectro para el trabajo en la clase de matemáticas en todos los ciclos de Infantil y Primaria.
La calculadora es una de las mejores herramientas con que cuentan los docentes para atender la diversidad en el alumnado en la clase de matemáticas. No entendemos cómo se puede trabajar el cálculo mental sin calculadora. Es la herramienta ideal para dar a cada alumno lo que necesita y no limitar capacidades. El inconveniente se encuentra en que la mayoría de los docentes no saben sacar el provecho del factor constante, no por capricho, sino por desconocimiento. La calculadora desarrolla en la mente infantil habilidades cognitivas que las personas no podemos.
Gran parte de los que se oponen al uso de la calculadora en la escuela, es porque piensan que el uso de la máquina para niños de 6 a 8 años es la de calcular operaciones como: 2+4=, 8-3=, 15:3= , 2×3=. Por supuesto que no estamos de acuerdo en que este sea el uso que se debe dar a la calculadora con niños normales. ¡Atención!, todas las calculadoras no tienen esta posibilidad.
Por lo tanto, no todas las calculadoras de cuatro operaciones sirven para trabajar en la escuela.
 Por otro lado, la calculadora me va a permitir investigar y descubrir, propiedades y relaciones entre los números, que de no ser por ella sería muy difícil poder abordar a los 4, 5, 6 y 7 años. Entre otros temas del currículo, la calculadora es una herramienta excelente para el estudio de las tablas del multiplicar.

Ahora bien, la calculadora no piensa. El hacer los cálculos con la misma no significa que el resultado obtenido sea correcto. Por eso, enseñaremos a los alumnos a que antes de apretar la tecla, deben aventurar el resultado, de esta forma la calculadora hace la función de auto evaluadora de los procesos mentales (estimación). El alumno, siempre, antes de tocar la tecla, debe hacer una estimación, un cálculo aproximado. Siempre se hará primero el proceso mental que el digital (tocar las teclas).

Resultado de imagen para Operaciones Aritméticos en algoritmo

Prioridad de operadores aritméticos

Prioridad de operadores aritméticos

n programación, la prioridad de los operadores puede variar de unos lenguajes de programación a otros, pero, en pseudocódigo, en este curso, vamos a establecer una prioridad de operadores muy similar a la que se aplica en lenguaje C. La prioridad no puede ser exactamente la misma, ya que, en C existen algunos operadores que no existen en pseudocódigo, y al revés.

Ejemplo 1: En una expresión aritmética puede aparecer más de un operador aritmético.

11 + 3 div 3 (dos operadores)
-3 * 6 mod 4 (tres operadores)
-3.1 + 5 * 0.5 (tres operadores)
3 ** 3 - 1 (dos operadores)
+3 * -8 (tres operadores)

Para poder evaluar correctamente las expresiones aritméticas del ejemplo, es necesario seguir un criterio de prioridad de operadores. En nuestro pseudocódigo CEE, la prioridad de los operadores aritméticos es:
Prioridad de Operadores Aritméticos en Pseudocódigo CEE

Prioridad de Operadores Aritméticos en Pseudocódigo CEE
Figura - Prioridad de los Operadores Aritméticos en Pseudocódigo.
A excepción de los operadores de signo, que se evalúan de derecha a izquierda en una expresión, todos los demás operadores aritméticos con la misma prioridad, por ejemplo, el operador multiplicación (*) y el operador módulo (mod), se evalúan de izquierda a derecha. En consecuencia, los valores que proporcionan las expresiones del ejemplo son:

12 (actúan en orden los operadores: (div) y suma (+))
-2 (actúan en orden los operadores: signo menos (-), (*) y (mod))
-0.6 (actúan en orden los operadores: signo menos (-), (*) y suma (+))
26 (actúan en orden los operadores: (**) y resta (-))
-24 (actúan en orden los operadores: signo menos (-), signo más (+) y (*))

Para modificar la prioridad de los operadores en las expresiones, se debe hacer uso de los caracteres abrir paréntesis "(" y cerrar paréntesis ")".

En las expresiones aritméticas hay que tener la precaución de no dividir entre cero (0).

Ejemplo 2: Por tanto, las siguientes expresiones son incorrectas:

11 / 0
5 div 0
-3 mod 0

De la evaluación de cada una de estas expresiones se obtiene:

ERROR (no se puede evaluar; no se puede dividir entre cero)

OPERADORES RELACIONALES

OPERADORES RELACIONALES
Utilizados para comparar el contenido de dos variables. En C existen seis operadores relacionales básicos:

> Mayor que
<> 
>= Mayor o igual que
<= Menor o igual que
== Igual que
!= Distinto que
El resultado que devuelven estos operadores es 1 para Verdadero y 0 para Falso. Si hay más de un operador se evalúan de izquierda a derecha. Además los operadores == y != están por debajo del resto en cuanto al orden de precedencia.

Resultado de imagen para operadores relacionales algoritmo

clasificación de las variables algoritmo


clasificación de las variables algoritmo



Constantes

Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.
Ejemplo:
pi = 3.1416

Variable

Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambiar durante la ejecución del programa.
Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo.
Ejemplo:
area = pi * radio ^ 2
Las variables son : el radio, el area y la constate es pi

Clasificación de las Variables 



Por su contenido
·         Variables Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal.
Ejemplo:
iva = 0.15 pi = 3.1416 costo = 2500
·         Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de una comparación entre otros datos.
·         Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres especiales).
Ejemplo:
letra = ’a’ apellido = ’López’ dirección = ’Av. Libertad #190’
Por su uso
·         Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que se usan normalmente dentro de un programa.
Ejemplo:
Suma = a + b /c 
·         Contadores: Se utilizan para llevar el control del número de ocasiones en que se realiza una operación o se cumple una condición. Con los incrementos generalmente de uno en uno.
·         Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente.
Expresiones

Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales.
Por ejemplo:
a + (b + 3) / c

Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas.

Una expresión consta de operadores y operando. Según sea el tipo de datos que manipulan, se clasifican las expresiones en:
·         Aritméticas
·         Relacionales
·         Lógicas