miércoles, 24 de septiembre de 2014

ESTRUCTURA SELECTIVA

Estructura Selectiva
La estructura lógicas selectivas se encuentran en la solución algorítmica de casi todo tipo de problemas. Las utilizamos cuando en  el desarrollo de la solución de un problema debemos tomar una decisión, para establecer un proceso o señalar un camino alternativo a seguir.

Esta toma de decisión (expresada con un rombo) se basa en la evaluación de una o  más condiciones que nos señalarán como alternativa o consecuencia, la rama a seguir.

Hay situaciones en las que la toma de decisiones se realiza en cascada. Es decir se toma una decisión, se marca la rama correspondiente a seguir, se vuelve a tomar una decisión y así sucesivamente. Por lo que para alcanzar la solución de este problema o subproblema debemos aplicar prácticamente un árbol de decisión.

Las podemos clasificar en:

1. SI ENTONCES (Esctructura selectiva simple)

2.SI ENTONCES / SINO (Estructura selectiva doble)

3.SI MULTIPE (Estructura selectiva múltiple)

ESCTRUCTURA SELECTIVA SI- ENTONCES

















ESTRUCTURA SELECTIVA SI ENTONCES /SINO











ESTRUCTURA SELECTIVAS ANIDADAS.
















ESTRUCTURA SI  MÚLTIPLE















REFERENCIAS

http://galanistaprogramando.wordpress.com/estructura-selectiva/

ESTRUCTURA SECUENCIAL


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).
En general el formato a utilizar es el siguiente: 

< 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. 

Veamos algunos ejemplos donde se aplique todo lo que hemos visto hasta el momento sobre algoritmos: 

Ejemplo 1: Escriba un algoritmo que pregunte por dos números y muestre como resultado la suma de estos. Use Pseudocódigo y diagrama de flujos. 



Ejemplo 2: Escriba un algoritmo que permita conocer el área de un triángulo a partir de la base y la altura. Exprese el algoritmo usando Pseudocódigo y diagrama de flujos.

REFERENCIAS

http://www.desarrolloweb.com/articulos/2199.php

CONCEPTOS BASICOS

CONCEPTOS BÁSICOS

Programación de computadores
Programar un computador consiste en escribir las instrucciones para que este realice una tarea; el computador ejecuta las instrucciones que resuelven dicho problema. A este conjunto de instrucciones especificas para que el computador realice la tarea se le llama programa.
El programa y los datos son transferidos a la memoria principal a través de un dispositivo USB, teclado, y el resultado del proceso se muestra a través de un dispositivo de salida por ejemplo: parlantes, impresoras, o dispositivos de almacenamiento por ejemplo: USB, Disco Duro, CD, DVD. El programa debe estar  escrito o codificado en un lenguaje de programación.

Programación
Se conoce como programación de computadores a la implementación de un algoritmo en un determinado lenguaje de programación, conformando un programa. Mientras que un algoritmo se ejecuta en una máquina abstracta que no tiene limitaciones de memoria o tiempo, un programa se ejecuta en una máquina real, que sí tiene esas limitaciones. El lenguaje de programación puede ser de alto nivel, medio nivel o bajo nivel, en función del grado de abstracción.

Algoritmo
Se denomina algoritmo a un grupo finito de operaciones organizadas de manera lógica y ordenada que permite solucionar un determinado problema. Se trata de una serie de instrucciones o reglas establecidas que, por medio de una sucesión de pasos, permiten arribar a un resultado o solución.

TIPOS DE ALGORITMOS

Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Son todos aquellos pasos o instrucciones descritos por medio de palabras que sirven para llegar a la obtención de una respuesta o solución de un problema cualquier
Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.
 Son aquellos pasos o instrucciones que involucran cálculos numéricos para llegar a un resultado satisfactorio

Tipos de algoritmos de razonamiento:

Algoritmos Estáticos: son los que funcionan siempre igual, independientemente del tipo de problema tratado.
Algoritmos Adaptativos: algoritmos con cierta capacidad de aprendizaje.
Algoritmos Probabilísticos: son algoritmos que no utilizan valores de verdad booleanos sino continuos. Existen varios tipos de algoritmos probabilísticos dependiendo de su funcionamiento, pudiéndose distinguir:
Algoritmos numéricos: que proporcionan una solución aproximada del problema.
Algoritmos de Montecarlo: que pueden dar la respuesta correcta o respuesta erróneas (con probabilidad baja).
Algoritmos de Las Vegas: que nunca dan una respuesta incorrecta: o bien dan la respuesta correcta o informan del fallo.
Algoritmo Cotidiano: es la serie de pasos que realizamos en nuestra vida diaria para realizar las diferentes tareas y actividades comunes, desde los pasos al levantarnos, así como ir de compras, etc.
Algoritmo Voraz: un algoritmo voraz es aquel que, para resolver un determinado problema, sigue una meta heurística consistente en elegir la opción óptima en cada paso local con la esperanza de llegar a una solución general óptima.
Algoritmo Determinista: es un algoritmo que, en términos informales, es completamente predictivo si se conocen sus entradas.
Algoritmo Heurístico: es un algoritmo que abandona uno o ambos objetivos; por ejemplo, normalmente encuentran buenas soluciones, aunque no hay pruebas de que la solución no pueda ser arbitrariamente errónea en algunos casos; o se ejecuta razonablemente rápido, aunque no existe tampoco prueba de que siempre será así.
Las heurísticas generalmente son usadas cuando no existe una solución óptima bajo las restricciones dadas (tiempo, espacio, etc.), o cuando no existe del todo.
Algoritmo de escalada: la idea básica consiste en comenzar con una mala solución a un determinado problema y, repetidamente, aplicar optimizaciones a la misma hasta que esta sea óptima o satisfaga algún otro requisito.

Un algoritmo debe ser:
1. Realizar: La cantidad de pasos debe ser finita. Es decir el proceso debe arrojar un resultado
2. Comprensible: Debe ser claro, quien ejecute los pasos debe saber que como y cuando hacerlo
3. Preciso: El orden de ejecución de las instrucciones debe estar perfectamente indicado, si se ejecuta con los mismos datos, el resultado debe ser el mismo

La definición de algoritmo debe describir 3 partes:
1. Entrada
Es la información dada al algoritmo o los valores con que se da a trabajar
2. Proceso
Son los cálculos necesarios para que a partir de un dato de entrada se pueda llegar a los resultados
3. Salida
Son los resultados finales a la transformación que ha sufrido la información de entrada a través del proceso

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 (String): 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.


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 = ’lopez’ direccion = ’Av. Libertad #190’

Variables 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 numero 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.
Estructuras de Programacion


Selección o decisión: acciones en las que la ejecución de alguna dependerá de que se cumplan una o varias condiciones. Repetición, Iteración: cuando un proceso se repite en tanto cierta condición sea establecida para finalizar ese proceso.
ESTRUCTURAS BÁSICAS.
 

Tipos de estructuras de programación. Estructuras básicas y secuencial.

Estructura Secuencial.

Se caracteriza porque una acción se ejecuta detrás de otra. El flujo del programa coincide con el orden físico en el que se han ido poniendo las instrucciones. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicialización de variables, operaciones de asignación, cálculo, sumarización, etc. Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa:

Definición de variables (Declaración)

Inicialización de variables.

Lectura de datos

Cálculo

Salida

Ejemplo 1.

Se desea encontrar la longitud y el área de un círculo de radio 5.

Solución.

El objetivo del ejercicio es encontrar la longitud y el área de un círculo con un radio conocido y de valor 5. Las salidas serán entonces la longitud y el área. (Fase 5 del algoritmo) Sabemos que la longitud de un círculo viene dada por la fórmula 2 * pi * radio y que el área viene dada por pi * radio al cuadrado. (Fase 4 del algoritmo) Si definimos las variables como: (fase 1 del algoritmo)

L = Longitud A = área R = radio pi = 3.1416 hagamos el algoritmo:

Inicio

Pi ¬ 3.1416 (definición de un valor constante)

R ¬ 5 (radio constante ya que es conocido su valor)

A ¬ pi * R ^ ² (asignación del valor del área)

L ¬ 2 * pi * R (asignación del valor de la longitud)

Escribir (A, L) (salida del algoritmo)

Fin

Representación en Diagrama de Flujo para el ejemplo:

 

Tipos de estructuras de programación. Estructuras básicas y secuencial.

Representación en Diagrama Nassi Schneiderman:

Los problemas secuenciales en diagramas N-S se representan solamente por cajas con líneas horizontales

 


Tipos de estructuras de programación. Estructuras básicas y secuencial.

En este ejercicio no existen datos de entrada ya que para calcular el área y la longitud necesitamos únicamente el radio y el valor de Pi los cuales ya son dados en el problema Modificar el problema anterior para que sea capaz de calcular el área y la longitud de un círculo de cualquier radio requerido.

Solución.

El problema es el mismo con la variante de que ahora ya existe un dato de entrada, puesto que el radio puede ser cualquiera y será necesario que el usuario sea quien lo introduzca de teclado. Usando las misma definición de variables tenemos:

Algoritmo:

Inicio

Pi ¬ 3.1416 (fase de inicialización)

Leer (R) (fase de lectura)

Area ¬ pi * R ^ ² (fase de cálculos)

L ¬ 2 * pi * R

Escribir ( A, L ) (fase de salida)

Fin

Note que la instrucción de asignación fue cambiada por la instrucción leer. En el flujograma deberán cambiarse también los símbolos que los representan:
 


Tipos de estructuras de programación. Estructuras básicas y secuencial.

Ejemplo 3.

Leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y 15% respectivamente. Desplegar el resultado.

Salidas: Sueldos finales

Entradas: Salarios de los empleados

Datos adicionales: aumentos del 10, 12 y 15%

  Cálculos:

Sueldo final = sueldo inicial + aumento

Aumento = sueldo inicial * porcentaje/100

  Definición de variables:

Sf1, Sf2, Sf3 = los sueldos finales

S1, S2, S3 = salarios de los empleados

Aum1, aum2, aum3 = aumentos

ALGORITMO

Inicio

Leer (S1,S2,S3)

Aum1 ¬ S1 * 0.10

Aum2 ¬ S2 * 0.12

Aum3 ¬ S3 * 0.15

Sf1 ¬ S1 + Aum1

Sf2 ¬ S2 + Aum2

Sf3 ¬ S3 + Aum3

Escribir (SF1,SF2,SF3)

Fin

FLUJOGRAMA
 


REFERENCIA

http://www.mailxmail.com/curso-aprende-programar/tipos-estructuras-selectivas-estructura-simple
Teoria Clase