sábado, 29 de noviembre de 2008

unidad II

Estructuras secuenciales
Unidad II

























Estructuras Secuenciales


-Programación estructurada:

La programación estructurada es una teoría de programación que consiste en construir programas de fácil comprensión.
La programación estructurada es especialmente útil, cuando se necesitan realizar correcciones o modificaciones después de haber concluido un programa o aplicación. Al haberse utilizado la programación estructurada, es mucho más sencillo entender la codificación del programa, que se habrá hecho en diferentes secciones.
La programación estructurada se basa en una metodología de desarrollo de programas llamada refinamiento sucesivo: Se plantea una operación como un todo y se divide en segmentos más sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool de programadores. Si se ha utilizado adecuadamente la programación estructurada, esta integración debe ser sencilla y no presentar problemas al integrar la misma, y de presentar algún problema, será rápidamente detectable para su corrección.
La representación grafica de la programación estructurada se realiza a través de diagramas de flujo o flow chart, el cual representa el programa con sus entradas, procesos y salidas.
La programación estructurada propone segregar los procesos en estructuras lo más simple posibles, las cuales se conocen como secuencia, selección e interacción. Ellas están disponibles en todos los lenguajes modernos de programación imperativa en forma de sentencias. Combinando esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de fácil entendimiento.
Programación modular:
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos ó subprogramas con el fin de hacerlo más legible y manejable.
Se presenta históricamente como una evolución de la programación estructurada para solucionar problemas de programación más grandes y complejos de lo que ésta puede resolver.
Al aplicar la programación modular, un problema complejo debe ser dividido en varios subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos fácilmente con algún lenguaje de programación. Ésta técnica se llama refinamiento sucesivo, divide y vencerás ó análisis descendente (Top-Down).
Un módulo es cada una de las partes de un programa que resuelve uno de los subproblemas en que se divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un módulo necesite de otro, puede comunicarse con éste mediante una interfaz de comunicación que también debe estar bien definida.
Si bien un modulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados contextos, en la práctica es común representarlos con procedimientos y funciones. Adicionalmente, también pueden considerarse módulos las librerías que pueden incluirse en un programa o, en programación orientada a objetos, la implementación de un tipo de dato abstracto.
Estructura de un programa:
El diseño estructurado, persigue elaborar algoritmos que cumplan la propiedad de modularidad, para ello, dado un problema que pretende resolver mediante la elaboración de un programa de ordenador, se busca dividir dicho programa en módulos siguiendo los principios de diseños de descomposición por refinamiento sucesivos, creación de una jerarquía modular y elaboración de módulos independiente.
La escritura de sus partes se realiza tan claramente como es posible mediante el uso de tres estructuras lógicas de control:
-secuencia: sucesión simple de dos o más operaciones.
-selección: división condicional de una o más operaciones.
-interacción: repetición de una operación mientras se cumple una condición.
Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir programas que manejen cualquier tarea de procesamiento de información.
Un programa estructurado esta compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una página o más de codificación. Cada segmento tiene solamente una sola entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y que no tienen instrucciones que jamás se ejecuten, se denominan programas propios.
La programación estructurada esta basada en el teorema de la estructura, el cual establece que cualquier programa propio (un programa con una entrada y salida exclusivamente) es equivalente a un programa que contiene solamente las estructuras lógicas mencionadas anteriormente.
Una característica importante en un programa estructurado es que puede ser leído en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programación. Esto es importante debido a que, es mucho más fácil comprender completamente el trabajo que realiza una función determinada, si todas las instrucciones que influyen en su acción están físicamente cerca y enseradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control y de eliminar la instrucción de desvió de flujo de control, excepto a circunstancia muy especiales tales como la simulación de una estructura lógica de control en un lenguaje de programación que no la posea.
Declaración de datos constantes y variables:
Declaración de variables:Esta es la primera fase en la vida de cualquier variable. La declaración se realiza en la sección que comienza con la palabra var. Para que un programa pueda hacer uso de una o más variables, éstas deben ser declaradas previamente. Todas las variables de un programa se declaran de la misma forma, indicando de cada una de ellas:
El tipo de dato que puede almacenar (mediante un identificador).
Su nombre (mediante otro identificador).
Ejemplo 1: La declaración de una variable para almacenar la edad de una persona se escribe: entero edadPor tanto, en la memoria de la computadora se reservará un espacio para almacenar la edad:
La mayoría de los elementos de un algoritmo escrito en pseudocódigo se diferencian entre sí por su nombre.
Entero, real, lógico y carácter
Cada uno de ellos es un identificador. Un identificador es el nombre que se le da a un elemento de un algoritmo (o programa). Por ejemplo, el tipo de dato entero hace referencia a un tipo de dato que es distinto a todos los demás tipos de datos, es decir, los valores que puede tomar un dato de tipo entero, no son los mismos que los que puede tomar un dato de otro tipo.Los identificadores entero, real, lógico y carácter están predefinidos, forman parte del lenguaje algorítmico. No obstante, en un algoritmo también pueden existir identificadores definidos por el programador. Por ejemplo, un algoritmo puede utilizar variables y constantes definidas por el programador. Además, los algoritmos también se deben nombrar mediante un identificador.En pseudocódigo, a la hora de asignar un nombre a un elemento de un algoritmo, se debe de tener en cuenta que todo identificador debe cumplir unas reglas de sintaxis. Para ello, en nuestro pseudocódigo CEE (C en Español), vamos a seguir las mismas reglas de sintaxis que existen en lenguaje C:
Consta de uno o más caracteres.
El primer carácter debe ser una letra o el carácter subrayado (_), mientras que, todos los demás pueden ser letras, dígitos o el carácter subrayado (_). Las letras pueden ser minúsculas o mayúsculas del alfabeto inglés. Así pues, no está permitido el uso de las letras 'ñ' y 'Ñ'.
No pueden existir dos identificadores iguales, es decir, dos elementos de un algoritmo no pueden nombrarse de la misma forma. Lo cual no quiere decir que un identificador no pueda aparecer más de una vez en un algoritmo.
De la segunda regla se deduce que un identificador no puede contener caracteres especiales, salvo el carácter subrayado (_). Es importante resaltar que las vocales no pueden llevar tilde ni diéresis.Ejemplo 1: Algunos identificadores válidos que pueden ser definidos por el programador son: numero dia_del_mes PINGUINO1 _ciudad Z
Declaración de constante:
Las constantes se declaran en una sección que comienza con la palabra reservada const. Después de declarar una constante ya puedes usarla en el cuerpo principal del programa. Tienen varios usos: ser miembro en una expresión, en una comparación, asignar su valor a una variable, etc.
Procedimientos y Funciones:
En algunas ocasiones se debe llamar un bloque de código mas de una vez, una forma de hacerlo es escribir las instrucciones tantas veces como se necesite, tornando de esta manera programas con exceso de código y dificultad para descubrir posibles errores, la otra es meter las instrucciones en subprogramas que se invocan cada vez que se necesiten.
Los procedimientos y funciones se declaran o escriben antes del begin principal, un procedimiento o función puede contener otros procedimientos y funciones.
En resumen: Las subrutinas son esencialmente partes separadas de código que ejecutan tareas pequeñas de un programa GRANDE.
Instrucción de entrada: (o simplemente entrada) consiste en asignar a una o más variables, uno o más valores (datos) recibidos desde el exterior. Normalmente, los datos son recogidos desde la entrada estándar (el teclado), pero, también existen otros dispositivos de entrada (el ratón, el escáner,...).
Instrucción de asignación: (o simplemente asignación) consiste en asignar el resultado de la evaluación de una expresión a una variable.
Instrucción de salida (o simplemente salida) consiste en llevar hacia el exterior los valores (datos) obtenidos de la evaluación de una lista de expresiones. Normalmente, los datos son enviados a la salida estándar (la pantalla), pero, también existen otros dispositivos de salida (la impresora, el plotter,...).

lunes, 17 de noviembre de 2008

unidad 1

Republica bolivariana de Venezuela
Ministerio del poder popular para la educación
Universidad nacional experimental
“Simón Rodríguez”
Núcleo san Carlos
















INTRODUCCIÒN A LOS ALGORITMOS
UNIDAD I

















PARTICIPANTES:
Castañeda joffran CI: 20.268.347
Ostos dulce CI: 20.268.400
Aparicio rosnery CI: 20.042.324
Hurtado yennyre CI: 19.411.238







Objetivos:


- nuestro objetivo principal, es ayudar a toda persona que necesite saber, o aclarar dudas sobre lo que es un algoritmo, tipos, características, elementos, entre otros temas relacionados con el mismo.












































Introducción a los algoritmos.


*Definición de algoritmo:

Es un Método para resolver un problema mediante una serie de pasos precisos, definidos y finitos. Un algoritmo es una serie de operaciones detalladas, en otras palabras un algoritmo es un conjunto de reglas para resolver una cierta clase de problemas y se puede formular de muchas formas con el cuidado de que no exista ambigüedad.

*Características de un algoritmo:

-Preciso (debe indicar el orden de realización en cada paso y no puede tener ambigüedad).
-Definido (si se sigue dos veces, obtiene el mismo resultado cada vez)
-Finito (tiene fin; un número determinado de pasos).
-Debe ser Sencillo, Legible.
-Modular.
-Eficiente y Efectivo.
-Se ha de desarrollar en el menor tiempo posible.
-Correcto.
-Todo Algoritmo debe tener cero ó más entradas.
-Debe tener al menos una salida y ésta debe ser tangible.
*Elementos de los algoritmos:
-Variables, constantes y expresiones
-Estructuras de control
*secuencial:
+ Operación de asignación.
+ Operación de entrada.
+ Operación de salida.
*condicional.
*repetitiva.
Datos:
Es la unidad básica de información que puede definirse con precisión. Son la materia prima que al ser procesada dan lugar a la información.
Los datos son símbolos que describen condiciones, hechos, situaciones o valores. los datos se caracterizan por no contener ninguna información.
Tipos de datos:
-Datos significativos: para ser significativos los datos deben constar de símbolos reconocibles, estar completos y expresar una idea no ambigua.
Los símbolos de los datos son reconocibles cuando pueden ser correctamente interpretados. Muchos tipos diferentes de símbolos comprensibles se usan para transmitir datos.
-Datos pertinentes: decimos que tenemos datos pertinentes (relevantes) cuando pueden ser utilizados para responder a preguntas propuestas.
Disponemos de un considerable número de hechos en nuestro entorno. Solo los hechos relacionados con las necesidades de información son pertinentes. Así la organización selecciona hechos entre sucesos y entidades particulares para satisfacer sus necesidades de información.
*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.

Operadores AritméticosLos 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.
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 más interno se evalúa primero. Dentro de una misma expresión los operadores se evalúan en el siguiente orden:
^ Exponenciación
*, /, mod Multiplicación, división, modulo.
+, - Suma y resta.
Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha. Ejemplos:
4 + 2 * 5 = 14

23 * 2 / 5 = 9.2
3 + 5 * (10 - (2 + 4)) = 23

2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98
Operadores Relacionales Se utilizan para establecer una relación entre dos valores. Luego compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relacionales comparan valores del mismo tipo (numéricos o cadenas). Estos tienen el mismo nivel de prioridad en su evaluación. Los operadores relaciónales tiene menor prioridad que los aritméticos. Tipos de operadores Relacionales
> 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 <> 5 < 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. Tipos de operadores Lógicos And Y Or O Not Negación Ejemplo: Para los siguientes ejemplos T significa verdadero y F falso.
Operador Not Operador Not
Operando

Resultado
T

F
F

T
Operador And 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
Prioridad de los Operadores Lógicos
Not
And
Or
Prioridad de los Operadores en General
( )
^
*, /, Mod, Not
+, -, And
>, <, > =, < =, < >, =, Or
Ejemplos: Sea: a = 10 b = 12 c = 13 d =10
ALGORITMO CUALITATIVO: Son aquellos que resolver un problema no ejecuta operaciones matemática en el desarrollo de algoritmo.
ALGORITMO CUANTITATIVO: Son aquellos algoritmos que ejecutan operaciones numéricas durante su ejecución.
Refinamiento de Algoritmos:
Una vez definidos los procesos estos deben ser refinados en términos de cómo realizar la tarea en cuestión, se deben definir las instrucciones o secuencia de pasos para lograr el objetivo del proceso en particular, se deben detallar los pasos, esto implica definir el comportamiento del proceso, es una síntesis, proceso creativo, es definir como lo hace, conlleva a una visión hacia dentro del proceso. Este método es también conocido como "Refinamiento por Pasos" (RPP) o "Stepwise" por otros autores.
El diseño de un buen algoritmo involucra la utilización de ambos métodos combinados.
El diseño de algoritmos también hace uso de ciertas Herramientas que permiten graficar o traducir el algoritmo a un lenguaje más universal. Estas son clasificadas como:
Diagramas de Flujo: (flowchart) es un diagrama que utiliza símbolos dentro de las cuales se escriben las instrucciones y están unidas por flechas que indican el flujo del proceso. Las flechas se conocen como "Líneas de Flujo". Su flujo es secuencial de acuerdo a las líneas y conectores. Sus figuras mas utilizadas son:
Ovalo: Principio y fin Paralelogramo: Indica una operación de entrada o salida
Rectángulo: operación de cálculo o asignación
Rombo : Estructura selectiva simple
Hexágono: estructura de control repetitiva
Circulo: conector entre procesos o partes
Flechas: indica el flujo o sentido de la información
Pseudocodigo o seudolenguaje:
La codificación en pseudolenguaje es una técnica que permite que el control de la lógica de un programa este limitado por un número mínimo de estructuras de control. Cada estructura de control tiene una sola entrada y una sola salida, por lo tanto soporta el refinamiento funcional usado en el diseño descendente.
Cada estructura de control ejecuta una única operación y se puede combinar para anidar con otras estructuras de control, limitando las interacciones entre los componentes del sistema.
El pseudolenguaje se basa en la noción de instrucción, la cual se considera como sinónimo de programa, es decir, cualquier instrucción puede ser un programa o un conjunto de proposiciones. El pseudolenguaje se basa en las siguientes reglas:
1. Cualquier instrucción de un lenguaje tal como de declaración, asignación, entrada, salida o llamado y retorno de subrutina es una instrucción del pseudolenguaje.
2. Las estructuras de control son las siguientes:
Estructura de Secuencia: Si P1, P2, P3,...,Pn son instrucciones del pseudolenguaje. se tiene la figura 2.10 (a).
Estructura de Ciclos: Si E es una expresión lógica y P es cualquier instrucción. se tiene la figura 2.10 (b).
Estructura Condicional: Si E es una expresión lógica y P1 y P2 son dos proposiciones. se tiene la figura 2.10(c).
a)

c)






b)




Figura 2.10 Estructuras de control en diagramas de flujo y el pseudolenguaje equivalente.(a) Secuencia. (b) Ciclos. (c) Condicional.
Con el fin de mejorar la legibilidad, para cada algoritmo se deben incluir las variables que utiliza, su uso; para las variables que entran el rango de entrada (precondición) y para las variables de salida el rango de salida (poscondición).