lunes, 29 de junio de 2015

ALGORITMO Y ESTRUCTURA DE CONTROL IF

Resolver problemas utilizando la computadora.



El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y a su ejecución en la misma. Se pueden considerar una serie de fases o pasos comunes, que generalmente deben seguir todos los programadores.
Las fases de resolución de un problema con computadoras son:

◮Análisis del problema.
◮Diseño de algoritmo.
◮Codificación.
◮Compilación y ejecución.
◮Verificación.
◮Depuración.
◮Documentación.


Algoritmo.


La palabra algoritmo se deriva de la traducción al latín de la palabra árabe Alkhôwarîzmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.

Definición: Un algoritmo es un método para resolver un problema mediante una serie de pasos precisos, definidos y finitos.

*Características de un algoritmo:

Preciso (Indicar el orden de realización en cada paso)
Definido (Si se sigue dos veces, obtiene el mismo resultado cada vez)
Finito (tiene fin; un numero determinado de pasos) Ejemplos de algoritmos  son: Instrucciones para montar en una bicicleta, hacer una receta de cocina,  obtener el máximo común divisor de dos números, etcétera.



Representación de algoritmos.

Los algoritmos pueden ser representados en muchas formas, algunas mejores que otras y dependen del algoritmo.

Verbal: El algoritmo es expresado en palabras.
Algebraica: El algoritmo es expresado matemáticamente con símbolos y formulas.
Tabular: El algoritmo es expresado por una o mas tablas.
Pseudocódigo: El algoritmo es representado como un conjunto de instrucciones escritas, usando una mezcla de lenguaje natural y notaciones matemáticas. La forma de las instrucciones son similares a las que tiene los lenguajes de programación.
Diagrama de flujo: El algoritmo es representado en la forma de un diagrama con cajas de acción, ligadas por lineas que muestran el orden en que se ejecutan o la secuencia de acciones.



Descripción de un  diagrama de flujo.


  1. INICIO/FIN:Representa el comienzo y el fin de un programa.
  2. PROCESO:Cualquier tipo de operación  que pueda originar cambios de valor, formato o posición de la información almacenada en memoria, operaciones aritméticas, etcétera.
  3. ENTRADA/SALIDA:Cualquier tipo de introducción de datos a la memoria, desde cualquier tipo de periféricos de "entrada" o registro de la información procesada en un periférico de salida. 











 
  4. DECISIÓN: Indica operaciones lógicas o de comparación entre datos normalmente dos, y en función del resultado el camino que debe seguir. 
  5. CONECTOR: Enlaza dos partes cualesquiera de un diagrama a través de un conector en la entrada, se refiere a una conexión en la misma pagina del diagrama.  
  6.CONECTOR FUERA DE PAG : Este es utilizado para enlazar dos partes de un diagrama pero que no se encuentren en la misma pagina.















7.FLUJO DE PROGRAMA: Indica la secuencia del diagrama de flujo, es decir, el sentido de las operaciones dentro del mismo.
8.SALIDA DE INFORMACIÓN: Representa la salida de información por medio de la impresora.
9.MOSTRAR INFORMACIÓN EN PANTALLA: Representa la salida o para mostrar la información por medio del monitor o la pantalla.






                                             





       

       Ejemplos:

 Algoritmo Agua de limón

Verbal
1. Obtener ingredientes: agua, azúcar y limones. Utensilios: Jarra, cuchara, cuchillo y exprimidor.
2. Partir los limones.
3. Agregar el agua a la jarra.
4. Agregar azúcar al a la jarra y mezclar.
5. Agregar el jugo de los limones a la jarra
Algebraica (No aplica).
Pseudocódigo (No aplica).
Diagrama de flujo.








Estructura de control if.

Esta estructura se usa para COMPROBAR si se cumplen condiciones.
Si solo queremos hacer una comparación o condición escribimos if (condición) { instrucciones Significa SI condición ENTONCES ...
Si solo utilizaremos una instrucción podemos ahorrarnos las llaves.
Si la condición que queremos utilizar da dos alternativas que son complemento o negación una de la otra utilizamos la estructura if(condición){ instrucciones} else{ instrucciones} significa SI condición ENTONCES ... SINO ENTONCES...

Operadores relacionales.

















Programa para determinar si un número es par o impar.



En este programa nos es útil utilizar la operación MODULO para saber si el numero introducido por el usuario es par, es decir "NUMERO%2" ademas de utilizar la estructura de control IF.Esta operación nos dará cero como residuo en la división, esto quiere decir que el numero es par de lo contrario se imprime el mensaje "el numero es impar".



Implementa el siguiente programa:





Programa que solicita la hora en notación de 24 horas y lo transforma en horario de 12 horas.


En este programa se utilizan operadores relacionales y la estructura IF, es importante saber donde abrir y cerrar las llaves ya que se ejecutaran varias instrucciones(también condiciones).


EJERCICIOS


Diseña una solución para resolver cada uno de los siguientes problemas y representa tu algoritmo usando mínimo la representación de diagrama de flujo.
1. Utilizar el metro ingresando en la estación Olivos para ir a la estación Ciudad Azteca.
2. Hacer huevos revueltos con jamón.

3. Usar un teléfono publico.



Ejercicios: Realizar los siguientes programas.

1. Tu tío que es taquero te pide que hagas un programa que calcule la cuenta. Se venden tacos (los tacos cuestan por igual 7 pesos cada uno no importa si son al pastor, sudadero, longaniza o tripa) y refrescos (los refrescos son a 12 pesos) si la cuenta total es mayor o igual a 150 pesos se hace un descuento de 10 pesos.
2. Haz un programa que determine si un numero entero distinto de cero es positivo o negativo.

3. Haz un programa que solicite 2 números enteros distintos e imprima cual es el mayor.

El modelo de Von Neumann






El modelo de Von Neumann está integrado por los siguientes elementos:
 
1. La unidad aritmético-lógica o ALU.
 
2. La unidad de control.
 
3. La memoria.
 4
. Los dispositivos de entrada/salida.
 
5. Los Buses.
https://www.youtube.com/watch?v=QscWZ_rven4





                                             ¿Cómo funciona básicamente una Computadora?
 ´Recibe los datos del usuario a través de las unidades de entrada.  
  ´Procesa los datos con la CPU. 
´Presenta el resultado mediante las unidades de salida 
´Es importante considerar que la CPU no recibe los datos de manera directa de la unidad de entrada ni los envía directamente a la unidad de salida. Existe una zona de almacenamiento temporal llamada memoria RAM, que sirve como lugar de paso obligatorio para acceder a la CPU.
´Dentro de la CPU, el funcionamiento es el siguiente:
´Una vez almacenado el programa a ejecutar y los datos necesarios en la memoria principal, la Unidad de Control va decodificando (analizando) instrucción a instrucción.
´Al decodificar una instrucción detecta las unidades (ALU, dispositivos de entrada, salida o memoria) implicadas, y envía señales de control a las mismas con las cuales les indica la acción a realizar y la dirección de los datos implicados.
´Las unidades implicadas a su vez, cuando terminen de operar sobre los datos, enviarán señales a la UC indicando que la acción se ha realizado o bien el problema que ha imposibilitado que se haga.

´La CPU es la única que puede procesar los datos (lo cual implica que los datos tienen que llegar de alguna forma a la CPU para ser procesados).
´La CPU sólo puede acceder a los datos o instrucciones almacenados en memoria RAM.
´Central Process Unit CPU
´En la unidad central de procesamiento (CPU) es donde ocurre el procesamiento de datos.
 
La CPU consiste de dos componentes básicos: unidad de control y unidad de aritmética y lógica.
´       1. UNIDAD DE ARITMÉTICA LÓGICA - ALU En la unidad de aritmética lógica (ALU) es donde ocurre se realizan todos los cálculos. Las operaciones que la ALU puede efectuar son: suma, resta, multiplicación y división, manipulación de bits de los registros, y comparación del contenido de dos registros.
´2. UNIDAD DE CONTROL - CU En la unidad de control (UC) se coordina y controla las demás partes de la computadora. Lee un programa almacenado, una instrucción a la vez, y dirige a los demás componentes para realizar las tareas requeridas por el programa.
´MEMORIA
´Guarda temporalmente los datos y las instrucciones del programa durante el procesamiento. Compuesta por multitud de elementos, cada uno con una dirección única.
´En el lenguaje C, un apuntador es la dirección de memoria de una variable. El conocer la dirección de una variable puede representar una gran ayuda en ciertos tipos de rutinas.
´Para definir un apuntador entero usamos intapt x, x; apt x es simplemente un nombre.
´Si queremos la dirección de la memoria de x utilizamos &x apt x = &x y no tiene que ver con el valor de x.
´Para llamar este en formato de memoria utilizamos el %p.




 
´Ejercicios
´Utiliza el programa y calcula con los valores siguientes, que es lo que pasa con cada una de las operaciones.
´1. a = 9 y b = 2.
´2. a = 16 y b = 2.
´3. a = 25 y b = 5.
´4. a = 33 y b = 16.

 



Leguaje C: Prioridad de operadores básicos
1.-Primero hace lo que esta en paréntesis: () y []
2.- Sigue con las operaciones de multiplicación, cociente y módulo: ∗, / y %.
 3.- Por último la suma y la resta + y −.
4.-Lo mejor es usar paréntesis, aunque exageremos.
 


Lenguaje C: Obtener datos del usuario para el programa:
La función scanf() sirve para leer datos de entrada.
El formato utilizado es similar a printf()
Si se trata de enteros utilizamos scanf(“%d”,&x);
Si se trata de entero hexadecimal scanf(“%X”,&x);
Si se trata de un carácter sólo debemos dejar un espacio entre las primeras comillas y %c, esto es, scanf(“ %c”,&c);
  Podemos utilizar para obtener un carácter también la función getchar(); El truco es que debemos poner dos getchar();c=getchar(); esto sucede pues el espacio en blanco también esta considerado como carácter. Si no lo ponemos el carácter que se asigna es el espacio en blanco.
 

Ejercicios
1. Implementa un programa que le pida al usuario dos enteros y haga la suma, la resta, la multiplicación, el cociente y el módulo.