ALGORITMOS COTIDIANOS

ALGORITMOS COTIDIANOS Se refiere a todos aquellos algoritmos que nos ayudan a resolver problemas diarios, y que los hace

Views 77 Downloads 2 File size 314KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ALGORITMOS COTIDIANOS Se refiere a todos aquellos algoritmos que nos ayudan a resolver problemas diarios, y que los hacemos casi sin darnos cuenta de que estamos siguiendo una metodología para resolverlos. HISTORIA Y APLICACION DE LOS LENGUAJES ALGORITMICOS

Al igual que los idiomas sirven de vehículo de comunicación entre los seres humanos, existen lenguajes que realizan la comunicación entre los seres humanos y las computadoras. Estos lenguajes permiten expresar los programas o el conjunto de instrucciones que el operador humano desea que la computadora ejecute.

Los lenguajes de computadoras toman diferentes formas; los de las primeras computadoras, como la ENIAC y la EDSAC, se componían en el lenguaje real de las máquinas mismas. La dificultad de programar las máquinas de esta manera limitaba drásticamente su utilidad y proporcionaba un fuerte incentivo para que se desarrollaran lenguajes de programación más orientados hacia la expresión de soluciones con la notación de los problemas mismos.

Los primeros lenguajes de programación se conocieron como Lenguajes Ensambladores, un ejemplo es: TRANSCODE, desarrollado para la computadora FERUT. En los lenguajes ensambladores se define un código especial llamado mnemónico para cada una de las operaciones de la máquina y se introduce una notación especial para especificar el dato con el cual debe realizarse la operación.

A mediados de los años 60’s aparecieron los primeros lenguajes de propósito general como FORTRAN, FORTRAN IV, ALGOL, COBOL, BASIC, PL/I, ADA, C,C++, PASCAL, etc. pero el desarrollo de nuevas tecnologías, tanto en arquitectura de computadoras como en lenguajes de programación, continúa a paso acelerado, cada vez con mayor velocidad, el panorama está cambiando de una etapa de sistemas y lenguajes especialmente desarrollados para aplicaciones

individuales. Los lenguajes de programación actuales son los conocidos como Lenguajes visuales, como por ejemplo Visual Fox, Visual Basic, Visual C .

Una definición muy simple: El tipo de un dato es el conjunto de valores que puede tomar durante el programa. Si se le intenta dar un valor fuera del conjunto se producirá un error. La asignación de tipos a los datos tiene dos objetivos principales:  Por un lado, detectar errores en las operaciones  Por el otro, determinar cómo ejecutar estas operaciones De Pascal se dice que es un lenguaje fuertemente tipeado. Esto quiere decir que todos los datos deben de tener un tipo declarado explícitamente, y además que existen ciertas restricciones en las expresionesen cuanto a los tipos de datos que en ellas intervienen. Una ventaja de los lenguajes fuertemente tipeados es que se gasta mucho menos esfuerzo en depurar (corregir) los programas gracias a la gran cantidad de errores que detecta el compilador. Los tipos de datos, como casi todos los objetos de Pascal, se pueden declarar. La declaración de tipos ya se comentó en el tema correspondiente a la estructura de un programa.

Clasificaciones en los tipos de datos En Pascal existen gran variedad y cantidad de tipos de datos. Pero en este tutorial sólo se trataran los básicos para que puedas ir construyendo tus primeros programas. Existen muchas clasificaciones para los tipos de datos, y dependiendo de la fuente que mires, te mostrarán una u otra. A continuacón tienes una de las posibles clasificaciones.:

 Dinámicos  Estáticos o El tipo cadena o Estructurados o Simples  Ordinales  No-ordinales

Tipos estáticos Casi todos los tipos de datos son estáticos, la excepción son los punteros y no se tratarán debido a su complejidad.

Tipos dinámicos Dentro de esta categoría entra sólamente el tipo puntero. Este tipo te permite tener un mayor control sobre la gestión de memoria en tus programas. Con ellos puedes manejar el tamaño de tus variables en tiempo de ejecución, o sea, cuando el programa se está ejecutando.

Tipos simples Como su nombre indica son los tipos básicos en Pascal. Son los más sencillos y los más fáciles de aprender. Por todo esto, serán en los que nos centremos. Los tipos simples más básicos son: entero, lógico, carácter y real. Y la mayoría de los lenguajes de programación los soportan, no como ocurre con los estructurados que pueden variar de un lenguaje a otro.

Tipos estructurados Mientras que una variable de un tipo simple sólo referencia a un elemento, los estructurados se refieren a colecciones de elementos. Las colecciones de elementos que aparecen al hablar de tipos estructurados son muy variadas: tenemos colecciones ordenadas que se representan mediante el tipo array, colecciones sin orden mediante el tipo conjunto, e incluso colecciones que contienen otros tipos, son los llamados registros.

Tipos ordinales Dentro de los tipos simples, los ordinales son los más abundantes. De un tipo se dice que es ordinal porque el conjunto de valores que representa se puede contar, es decir, podemos establecer una relación uno a uno entre sus elementos y el conjunto de los números naturales. Dentro de los tipos simples ordinales, los más importantes son:  El tipo entero (integer)  El tipo lógico (boolean)  El tipo carácter (char)

Tipos no-ordinales Simplificando, podríamos reducir los tipos simples no-ordinales al tipo real. Este tipo nos sirve para declarar variables que pueden tomar valores dentro del conjunto de los números reales.

A diferencia de los tipos ordinales, los no-ordinales no se pueden contar. No se puede establecer una relación uno a uno entre ellos y los número naturales. Dicho de otra forma, para que un conjunto se considere ordinal se tiene que poder calcular la posición, el anterior elemento y el siguiente de un elemento cualquiera del conjunto.¿Cuál es el sucesor de 5.12? Será 5.13, o 5.120, o 5.121, ...

Identificador. Un identificador es un conjunto de caracteres alfanuméricos de cualquier longitud que sirve para identificar las entidades del programa (clases, funciones, variables, tipos compuestos) Los identificadores pueden ser combinaciones de letras y números. Cada lenguaje tiene sus propias reglas que definen como pueden estar construidos. Cuando un identificador se asocia a una entidad concreta, entonces es el “nombre” de dicha entidad, y en adelante la representa en el programa. Nombrar las entidades hace posible referirse a las mismas, lo cual es esencial para cualquier tipo de procesamiento simbólico.

Almacenamiento Direccionamiento y Representacion en Memoria Almacenamiento de datos La única estructura que ofrece la memoria es la organización de sus elementos en bytes. Por tanto, para almacenar los datos que manipula un procesador es imprescindible saber de antemano su tamaño. El tamaño de algunos datos básicos viene definido por la arquitectura del propio procesador. Por ejemplo, el lenguaje máquina del Intel Pentium contiene instrucciones máquina para operar enteros de 32 bits. Esto no quiere decir que el procesador no pueda manejar enteros de otros tamaños, sino que el procesador manipula estos de forma mucho más rápida y eficiente. Números de otros tamaños pueden ser manipulados igualmente pero con un coste mayor en tiempo de ejecución. Almacenamiento de direcciones de memoria Supongamos que la memoria utilizada tiene un tamaño de 4 Gigabytes y por tanto sus direcciones se representan con 32 bits. Las direcciones de memoria son números naturales en el rango [0, 232 - 1]. Pero este número natural es susceptible de ser almacenado él mismo en memoria. Es decir, se puede almacenar la representación binaria de una dirección de memoria en la propia memoria. Al tener un tamaño de 32 bits o 4 bytes, se utilizan para ello cuatro posiciones de memoria consecutivas. 4.4 Operadores, operandos y expresiones.

Operadores. Los operadores nos permiten manipular datos, sean variables, constantes, otras expresiones, objetos, atributos de objetos, entre otros, de manera que podamos (1) transformarlos, (2) usarlos en decisiones para controlar el flujo de ejecución de un programa, (3) formar valores para asignarlos a otros datos. El tipo de datos involucrado en una expresión se relaciona muy de cerca con los operadores utilizados. En nuestro curso veremos 7 tipos de operadores : • aritméticos. • relacionales • lógicos • asignación • incremento • decremento • concatenación

Prioridad de operadores, evaluación de expresiones. Prioridad de operadores. Los programas de computadora evalúan expresiones de tipo aritméticas, relacionales, lógicas, de incremento, de decremento, de asignación, entre otras, tomando en cuenta las prioridades predefinidas por el lenguaje para los diferentes operadores. Esto lo apuntamos, debido a que las expresiones pueden involucrar a diferente tipo de operadores, por ejemplo : ! x < 0 && y >= x * 12.0 – 5.5 Digamos que x tiene el valor de 10, y el valor de 200.4, entonces ¿cuál sería el valor que retorna la expresión?. Para calcularlo deberemos conocer la prioridad de ejecución de los diferentes tipos de operadores en el lenguaje de programación

que en nuestro caso es el C#. La prioridad de ejecución puede ser alterada por el programador por medio del uso de los paréntesis. 4.4 Operaciones básicas de entrada-salida A diferencia de otros lenguajes, C no dispone de sentencias de entrada/salida. En su lugar se utilizan funciones contenidas en la librería estándar y que forman parte integrante del lenguaje. Las funciones de entrada/salida son un conjunto de funciones, incluidas con el compilador, que permiten a un programa recibir y enviar datos al exterior. Para su utilización es necesario incluir, al comienzo del programa, el archivo stdio.h en el que están definidos sus prototipos..

definicion de algoritmos: es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar unaactividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. los algoritmos son el objeto de estudio de la algoritmia. tiposde algoritmos:  algoritmo de ordenamiento  algoritmo de búsqueda

a) Descripción Narrada b) Pseudocódigo c) Diagramas de Flujo d) Diagramas N- S (Nassi-Schneiderman o de Chapin) 1 Descripción Narrada

Este algoritmo es caracterizado porque sigue un proceso de ejecución común y lógico, describiendo textualmente paso a paso cada una de las actividades a realizar dentro de una actividad determinada.

2.Descripción en Pseudocódigo Pseudo = falso. El pseudo código no es realmente un código sino una imitación y una versión abreviada de instrucciones reales para las computadoras. Es una técnica para diseño de programas que permite definir las estructuras de datos, las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema. Utiliza un pseudolenguaje muy parecido a nuestro idioma, pero que respeta las directrices y los elementos de los lenguajes de programación. Se concibió para superar las dos principales desventajas de los flujogramas: lento de crear y difícil de modificar sin un nuevo redibujo. . Diagramas N-S Son una herramienta que favorece la programación estructurada y reúne características gráficas propias de diagramas de flujo y lingüísticas propias de pseudocódigos. Constan de una serie de cajas contiguas que se leerán siempre de arriba-abajo y sus estructuras lógicas son las siguientes:

4. Diagramas de Flujo. Son la representación gráfica de la solución algorítmica de un problema. Para diseñarlos se utilizan determinados símbolos o figuras que representan una acción dentro del procedimiento. Utilizan unos símbolos normalizados, con los pasos del algoritmo escritos en el símbolo adecuado y los símbolos unidos con flechas, denominadas líneas de flujo, que indican el orden en que los pasos deben ser ejecutados.

Un algoritmo secuencial es aquel en el que se necesita que un paso anterior haya concluido para continuar con otro. De esta forma, en este tipo de algoritmos se requiere de datos de la etapa anterior, como una cadena o

secuenci

a de información.

Un algoritmo selectivo es aquel en el que se establecen condiciones para poder realizar una acción específica, en los lenguajes de programación se implementan las sentencias if o select case para llevar a cabo este tipo de algoritmos. Un algoritmo repetitivo o cíclico es aquel en el que el programador establece un rango de repetición para una acción dada, o en el que se determina que una acción se repita de forma cíclica mientras se cumpla alguna condición. En los lenguajes de programación se usan las sentenciaswhile y for para llevar a cabo este tipo de algoritmos.

Afín de tener un cierto grado de equidad entre las herramientas de software a comparar en este trabajo,es preciso indicar los dos principales criterios deselección:1. Haberse construido con el propósito de ser un recurso didáctico en la enseñanzaaprendizaje dealgoritmos.2. Emplear diagramas de flujo para la representación de las soluciones algorítmicas.

DFD Esta herramienta de software surge en 1988 de un proyecto colombiano llamado Editor e Intérprete de Algoritmos Representados en Diagramas de Flujo

RAPTOR RAPTOR (acrónimo del inglés Rapid Algorithmic Prototyping Tool for Ordered Reasoning ) surge en2004 como un proyecto de la Academia de la Fuerza Aérea de Estados Unidos. En [6] se define como: “un ambiente de programación con base en diagramas deflujo, diseñado específicamente para ayudar a losestudiantes a visualizar sus algoritmos y evitar el bagaje sintáctico”.

PSeInt PSeInt (abreviatura de Pseudo Intérprete) surge en2003 como un proyecto para la materia deProgramación I en la Facultad de Ingeniería yCiencias Hídricas de la Universidad

Nacional delLitoral. Se trata de un intérprete de pseudocódigo basado en los contenidos de la cátedra deFundamentos de Programación [5].