martes, 25 de agosto de 2015

Ejercicios POO (Diagramas Basicos de Clases y Objetos)

Quererse a sí mismo es el principio de un romance para toda la vida
Oscar Wilde


En el diagrama de clase presentado se presenta una clase Persona, con los atributos identificación, nombre, sexo, madre y padre (estos dos atributos son de tipo persona)  y se presentan dos métodos, el método constructor Persona() y El método quererse() el cual tiene como parámetro un objeto de tipo Actividad
El Diagrama de Objeto seria:



TARARÍ Y TARARÁ
De: Alicia a través del espejo
Lewis Carroll
— Ahora está soñando -señaló Tarará- ¿y a que no sabes lo que está soñando?
— ¡Vaya uno a saber -replicó Alicia- ¡Eso no podría adivinarlo nadie!
— ¡Anda! ¡Pues si te está soñando a ti! -exclamó Tarará batiendo palmas en aplauso de su
triunfo-. Y si dejara de soñar contigo, ¿qué crees que te pasaría?
— Pues que seguiría aquí tan tranquila, por supuesto -respondió Alicia.
— ¡Ya! ¡Eso es lo que tú quisieras! -replicó Tarará con gran suficiencia-. ¡No estarías en
ninguna parte! ¡Como que tú no eres más que un algo con lo que está soñando!
— Si este Rey aquí se nos despertara -añadió Tararí- tú te apagarías… ¡zas! ¡Como una vela!



Diagrama de Objetos



REALIZAR UN DIAGRAMA DE CLASE BASADO EN CADA UNO DE LOS CUENTOS, SEGÚN LOS EJEMPLOS DE ARRIBA

MI ZAPATO VIEJO
Cuento Corto para niños y niñas, creado por: Emiliana Marante
Tenía un hueco en la punta de mi zapato, estaba roto por un lado, machacado por detrás, ya no servían para nada.
– ¡Lo tiraré a la basura!, – pensé
Y por un rato dejé allí mi zapato, mientras hacía mis tareas de la escuela. Cuando terminé me dispuse a tirar mis viejos e inservibles zapatos, pero me llevé una gran sorpresa cuando vi un lindo y calentito huevo de mi patita Loló dentro de uno de ellos.
– ¡Puede servirle de nidito!, -pensé.
Por lo menos no se moja ni pasa frío. Busqué un pedazo de tela vieja, la hundí dentro y puse el huevo encima.
– ¡Que alegre estaba! ¡Ya mi patito Loló tenía su camita para nacer!
Puse mi zapato debajo de un arbolito, allí mi patita Lolò velaría a su nuevo bebé y mi abuela vería como pude darle otro uso a los zapatos, que si para mi no servían, sí a mis animalitos.
Nunca mas pensaré en tirar algo sin antes pensar para que puede servir y les contaré a mis amiguitos de la escuela y a mi maestra.
– ¡Viva! ¡que llegue mañana!




NATI Y SU DELFIN

Cuento Corto para niños/as; creado por: Luna Pilar Acevedo
Nati era una chica de dieciséis años, era huérfana. Un día Nati decidió que quería trabajar. Los primeros que quisieron  contratarla  fueron los Mancini.
Ellos necesitaban que trabajara para que cuidara a su mascota. Nati pensaba que era una mascota cualquiera, normal, pero no era así. Incluso se desmayó cuando se enteró de que tendría que cuidar de un delfín. Cuando se recuperó de la gran sorpresa lo pensó y aceptó el trabajo.
El primer día de trabajo los dos (el delfín y ella) se divirtieron muchísimo, tanto fue que Nati pasó un año cuidando al delfín. Los Mancini se encariñaron con ella y la adoptaron.  Vivió muy feliz junto a su familia y su delfín.



EL CARACOL PESIMISTA

Cuento Corto para niños y niñas; creado por: Sergio Gomez
Había un niño llamado Juan que salía  a su jardín todos los días.
Un día vio una fila de caracoles, uno de ellos iba muy atrasado y el niño le preguntó:
– ¿Por qué estas tan atrasado?
El caracol le dijo:
– Es que soy el más lento de todos.
– No seas pesimista tu puedes avanzar más rápido. -Dijo el niño.
El caracol pensó en lo que le estaba diciendo el niño y se animó. Empezó a ir cada vez más rápido hasta que consiguió correr.
Ahora, cuando el niño sale al jardín, siempre ve al caracol y va el primero de todos, ya que tiene confianza en sí mismo y mejora cada día un poquito más.
Uno no debe ser pesimista porque puede hacer todo lo que se propone…



Soñé que estaba ella sentada a mi cabecera...

Soñé que estaba ella sentada a mi cabecera,
y alborotaba tiernamente mi cabello con sus dedos,
suscitando la melodía de su contacto.
La miré a la cara, luchando con mis lágrimas,
hasta que la angustia de las palabras no dichas
quebró mi sueño como una burbuja.
Me incorporé. La Vía Láctea se veía arder por mi ventana,
como un mundo de silencio inflamado.
Y me pregunté si en aquel momento estaría ella soñando
un sueño que viniera, bien con el mío.



Introduccion a la Programacion Orientada A Objetos (POO)

Que es la POO?

La programación orientada a objetos (POO, u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos en sus interacciones, para diseñar aplicaciones y programas informáticos.
Está basada en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.


La programación orientada a objetos difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programación estructurada solo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.

Objeto

Los objetos son entidades que tienen un determinado "estado" (en sus atributos), "comportamiento (método)" e "identidad":
  • El estado está compuesto de datos o informaciones; serán uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
  • El comportamiento está definido por los métodos o mensajes a los que sabe responder dicho objeto, es decir, qué operaciones se pueden realizar con él.
  • La identidad es una propiedad de un objeto que lo diferencia del resto; dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).

Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento.
Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos.

Conceptos

La POO es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:
Clase
Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ella.
Herencia
Por ejemplo, herencia de la clase C a la clase D, es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables públicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de POO.
Objeto
Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o con objetos internos del sistema (del programa). Es una instancia a una clase.
Método
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.
Evento
Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento la reacción que puede desencadenar un objeto; es decir, la acción que genera.
Atributos
Características que tiene la clase.
Mensaje
Una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.
Propiedad o atributo
Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.
Estado interno
Es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.
Componentes de un objeto
Atributos, identidad, relaciones y métodos.
Identificación de un objeto
Un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.
En comparación con un lenguaje imperativo, una "variable" no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.

Características de la POO[editar]

Existe un acuerdo acerca de qué características contempla la "orientación a objetos". Las características siguientes son las más importantes:
Abstracción
Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar "cómo" se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos, y, cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.
Encapsulamiento
Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión (diseño estructurado) de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
Modularidad
Se denomina "modularidad" a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la modularidad de diversas formas.
Principio de ocultación
Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una "interfaz" a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas; solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado interno de un objeto de manera inesperada, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
Polimorfismo
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O, dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.
Herencia
Las clases no se encuentran aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento, permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hayherencia múltiple; siendo de alta complejidad técnica por lo cual suele recurrirse a la herencia virtual para evitar la duplicación de datos.
Recolección de basura
La recolección de basura (garbage collection) es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse expresamente.

URL:
https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos#Conceptos_fundamentales


martes, 18 de agosto de 2015

Introduccion a los Algoritmos

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.