viernes, 30 de octubre de 2015

FUNCIONES Y ESTRUCTURA DE DATOS

ARREGLOS  Y REGISTRO COMO PARÁMETRO



ARREGLO: Es una colección de datos del mismo tipo. Sirve para manejar un número “n” de elementos en común, ya sea de tipos definidos por el Lenguaje,(“int”,”float”,”String”,etc…) así como aquellos definidos por el programador.


Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa.

Un arreglo unidimensional tiene una sola dimensión, También reciben el nombre de vectores en álgebra.

Un arreglo se caracteriza por:

Ø Almacenar los elementos del arreglo en posiciones de memoria continua.
Ø Tener un único nombre de variable que representa a todos los elementos, y éstos a su vez se diferencian por un índice o subíndice.
Ø  Acceso directo o aleatorio a los elementos individuales del arreglo.


Ejercicio de  arreglo en C

Registros
Un registro (record en inglés) es un tipo de datos compuesto de varias variables. Los registros son utilizados para agrupar valores que por su naturaleza deben manejarse juntos. Las variables que forman parte de un registro se llaman campos.
Por ejemplo, una fecha está compuesta de un día, un mes y un año. Por lo tanto, puede ser representada usando un registro con tres campos enteros. De este modo, es posible crear variables de tipo Fecha.
características de  un registro:
Ø Permiten almacenar un grupo de elementos bajo un nombre y un estructura común.
Ø Los elementos (campos) de un registro no tienen que ser homogéneos, de hecho, generalmente son de diferentes tipos.
Ø No están disponibles en todos los lenguajes de programación, razón por la cual muchas veces es necesario simularlo o definirlo.
Ø Cada campo del registro se comporta como una variable simple, de manera que puede ser usado en una expresión de asignación, como parte de otra expresión, en operaciones o como parámetro al invocar una acción o función.



Ejercicio de  registro en C





ACTIVIDAD

FUNCIONES  USANDO  MODELO  HIPO




EJEMPLO DE  CONVERSACIÓN ENTRE  PROGRAMACIÓN ESTRUCTURA Y MODULAR.




ANÁLISIS DE  FUNCIÓN Y ESTRUCTURA DE DATOS.

 cuando  se define  una funcion  en forma simple  es  llamado




viernes, 23 de octubre de 2015

MODULO O FUNCIONES


II.FUNCIÓN

Una función es un subprograma que tiene un valor de retorno, el cual puede ser utilizado dentro de la evaluación de una expresión. El diagrama sintáctico para la declaración de una función es el siguiente:

 Ejemplo:

function Tan( angulo : real) : real;         { Cabecera de función }

     begin

           Tan := sin(angulo)/cos(angulo)           { Bloque }

     end;

 2.1TIPOS DE FUNCIONES
2.1.1FUNCIONES  INTERNAS:

Las funciones predefinidas, también llamadas estándar, son las que el propio lenguaje pone a disposición del programador.    Se las  llama palabra reservadas
Ejemplo:

sin(x:real)
seno de x
cos(x:real)
coseno de x
sqr(x:real)
cuadrado de x
sqrt(x:real)
raíz cuadrada de x
abs(x:real)
valor absoluto de x
ln(x:real)
logaritmo neperiano de x
int(x:real)
parte entera de x
frac(x:real)
parte decimal de x
pred(x:tipo ordinal)
predecesor de x
succ(x:tipo ordinal)
sucesor de x
pi (*no args.*)
valor de la constante pi
odd(x:integer)
si x es o no impar

 2.1.2FUNCIONES CREADAS  POR EL USUARIO:
 Estas  funciones  son las  que diseña  el programadora  para  calcular un valor  dentro de  sus el programa   las  misma  cuenta  con  los principios de declaración  que  están
Función nombre (parámetros): tipo
(Declaración de variables locales)
begin
            <cuerpo de la función>
            Nombre de la función:= valor de la función
End;

2.2  COMPONENTES
2.2.1. Declaración
Declaración de funciones La declaración de una función tiene la siguiente forma:
Ejemplos:
Función Nombre (p1, p2,...): tipo {declaraciones locales y subprogramas}
 begin
<Cuerpo de la función>
 Nombre:= valor de la función
end;
p1, p2,... lista de parámetros formales tipo  de dato del resultado que devuelve la función
Función verifica: boolean;
Función sin parámetros formales}
Función cambia (Var valor_1, valor_2: real): real;
 Función potencia (base, exponente: real): r;

 2.2.3 ARGUMENTO O PARAMETRO
Es una variable utilizada para recibir valores de entrada en una rutina o subrutina. Dichos valores, que serán enviados desde la rutina invocante, son llamados argumentos. La subrutina usa los valores asignados a sus parámetros para alterar su comportamiento en tiempo de ejecución. La mayor parte de los lenguajes de programación pueden definir subrutinas que aceptan cero o más argumentos.
Paso por valor
El paso de parámetros por valor consiste en copiar el contenido de la variable que queremos pasar en otra dentro del ámbito local de la subrutina, consiste pues en copiar el contenido de la memoria del argumento que se quiere pasar a otra dirección de memoria, correspondiente al argumento dentro del ámbito de dicha subrutina. Se tendrán dos valores duplicados e independientes, con lo que la modificación de uno no afecta al otro.
Paso por referencia
El paso de parámetros por referencia consiste en proporcionar a la subrutina a la que se le quiere pasar el argumento la dirección de memoria del dato. En este caso se tiene un único valor referenciado (o apuntado) desde dos puntos diferentes, el programa principal y la subrutina a la que se le pasa el argumento, por lo que cualquier acción sobre el parámetro se realiza sobre la misma posición de memoria.
Paso por valor resultado
Es un tipo poco usado en los lenguajes de programación actuales. Se basa en que dentro de la función se trabaja como si los argumentos hubieran sido pasados por valor pero al acabar la función los valores que tengan los argumentos serán copiados a las variables que pertenecían.
2.3 INVOCACIÓN Y RETORNO DE LA FUNCION

Para llamar a una función basta con hacer referencia a su nombre y si la misma requiere de parámetros estos deberán indicarse dentro de paréntesis. Para llamar a una función que no requiera de parámetros se deberá indicar el nombre de la misma seguida de paréntesis vacíos.
Las funciones se invocan de la siguiente manera:
<Nombre función> (parámetros locales);
Parámetros locales es una lista de variables y/o constantes separadas por comas. La existencia de parámetros locales dependerá de que existan parámetros formales en la declaración de la función.

2.4 ÁMBITO O ALCANCE  DE LAS VARIABLES

Las variables se clasifican en LOCALES y GLOBALES. Una variable LOCAL es una variable declarada dentro de un subprograma, y el significado de dicha variable se limita a ese subprograma y a los módulos que éste contiene. Cuando otro subprograma utiliza el mismo nombre de variable, se crea una variable diferente en otra posición de la memoria. Por eso, si un subprograma asigna un valor a una de las variables locales, tal valor no es accesible a los otros subprogramas.
Cuando se desea que otros subprogramas tengan acceso al valor de una variable, ésta debe declararse como GLOBAL, lo cual se logra declarándola en el módulo que abarca a dichos subprogramas.
Para tener la seguridad de que una variable va a tener un alcance GLOBAL, conviene declararla en el módulo principal.

2.5 PASO DE PARÁMETROS


Al invocar a un subprograma se le pueden pasar parámetros, los cuales pueden consistir de valores de variables declaradas en el módulo invocador. El paso de tales parámetros puede hacerse de dos maneras:


         Por valor

         Por referencia

2.5 1PASO POR VALOR


El paso de parámetros por valor consiste en enviar una COPIA del valor de la variable al módulo invocado. De esta manera se asegura que el valor de la variable sólo puede ser modificado por el módulo que la declaró.

Si la palabra Var no aparece delante del parámetro formal en un procedimiento, Turbo Pascal supone que el parámetro formal es un parámetro por valor.

Ejemplo:

Program Suma_por_Valor;


{El siguiente programa realiza la suma de dos números}

Uses Crt;


Var


A, B,C:integer;

procedure suma(A,B,C :integer);

begin

C:= A + B

end;

begin


ClrScr; C:=10; A:=10; B:=10; suma (A, B, C);

WriteLn (A,',', B,',', C); ReadKey; ClrScr end.

El resultado de la ejecución del programa sería: 10, 10,10

2.5.2PASO POR REFERENCIA


En el caso de que se requiera que el valor de una variable sea modificado por el módulo invocado, debe hacerse el paso de parámetro por referencia, por medio del cual el módulo invocado tiene acceso a la dirección en que se guarda el valor a modificar.

Para aclarar los conceptos de paso por valor y paso por referencia, analicemos el programa de suma y Multiplicación de matrices dado en las secciones anteriores. Observamos que las invocaciones a subprogramas son similares en los casos de paso por valor y paso por referencia.

Por ejemplo, las invocaciones a los procedimientos imprimen y suma quedan de la siguiente manera:

imprime('C',mat_c,ren_a,col_b); suma(mat_a,mat_b,mat_c,ren_a, col_a); y sus respectivas declaraciones son :

procedure imprime(nmat:char;mat_f:mat;ren_f,col_f:integer); procedure suma(mat_f_a,mat_f_b:mat;Var mat_f_c:mat;ren_f,col_f:integer);


Vemos que en la declaración del procedimiento suma existe la parte: Var mat_f_c: mat la cual significa lo siguiente:

"La variable mat_f_c contiene la dirección de la variable correspondiente en la invocación (mat_c), y es de tipo mat”

Esto significa que el paso del parámetro mat_c se hizo por referencia, y que el procedimiento invocado.

(Suma) puede modificar el valor de mat_c. Ejemplo:

Program Suma_por_Referencia; {El siguiente programa realiza la suma de dos números}

Uses Crt;

Var


A, B, C: integer; procedure suma(A, B: integer;

Var C: integer);

 begin

C:= A + B

end;


begin


ClrScr;


C:=10; A:=10; B:=10;

 Suma(A, B, C);

WriteLn (A,',',B,',',C); ReadKey;

ClrScr end.

El resultado de la ejecución del programa sería: 10, 10,20
ACTIVIDADES

1 . EJEMPLO DE  ARGUMENTO POR  VALOR  Y REFERENCIA




 EJEMPLO  2  DE  ARGUMENTO  POR  VALOR  Y REFERENCIA







 EJEMPLO DE  FUNCIONES  INTERNAS 





viernes, 16 de octubre de 2015

PROGRAMACIÓN ESTRUCTURADA Y MODULAR

     PROGRAMACIÓN ESTRUCTURADA Y PROGRAMACIÓN MODULAR




  Programación Estructurada
La programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando únicamente subrutinas y tres estructuras: secuencia, selección (if y switch) e iteración (bucles for y while).

 Origen
A finales de los años 1970 surgió una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que además estaban escritos de manera que facilitaba su mejor comprensión, no sólo proveyendo ventajas durante la fase de desarrollo, sino también posibilitando una más sencilla modificación posterior.
El teorema del programa estructurado, propuesto por Böhm-Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes:
v  Secuencia
v  Instrucción condicional.
v  Iteración (bucle de instrucciones) con condición al principio.
Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, estas pueden ser construidas mediante las tres básicas citadas.

  Ventajas de la Programación Estructurada
  • Los programas son más fáciles de entender, pueden ser leídos de forma secuencial y no hay necesidad de hacer engorrosos seguimientos en saltos de líneas (GOTO) dentro de los bloques de código para intentar entender la lógica.
  •   La estructura de los programas es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí.
  •  Reducción del esfuerzo en las pruebas y depuración. El seguimiento de los fallos o errores del programa (debugging) se facilita debido a su estructura más sencilla y comprensible, por lo que los errores se pueden detectar y corregir más fácilmente.
  •   Reducción de los costos de mantenimiento. Análogamente a la depuración, durante la fase de mantenimiento, modificar o extender los programas resulta más fácil.
  •   Los programas son más sencillos y más rápidos de confeccionar.
  • Se incrementa el rendimiento de los programadores
Desventajas:
  • Complejidad para adaptarse
  • Mayor cantidad de código.

  Lenguajes
Es posible hacer la programación estructurada en cualquier lenguaje de programación, aunque es preferible usar algo como un lenguaje de programación procedimental. Algunos de los lenguajes utilizados inicialmente para programación estructurada incluyen: ALGOL, Pascal, PL/I y Ada —pero la mayoría de los nuevos lenguajes de programación procedimentales desde entonces han incluido características para fomentar la programación estructurada y a veces deliberadamente omiten características, en un esfuerzo para hacer más difícil la programación no estructurada.

PROGRAMACIÓN MODULAR
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o 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).




 Definición y características de un módulo

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 módulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados contextos, en la práctica se los suele tomar como sinónimos de procedimientos y funciones. Pero no necesaria ni estrictamente un módulo es una función o un procedimiento, ya que el mismo puede contener muchos de ellos.


  Características de un módulo

  Tamaño relativamente pequeño: Esto facilita aislar el impacto que pueda tener la realización de un cambio en el programa, bien para corregir un error, o bien por rediseño del algoritmo correspondiente.
Independencia modular: Cuanto más independientes son los módulos entre sí más fácil y flexiblemente se trabajará con ellos, esto implica que para desarrollar un módulo no es necesario conocer detalles internos de otros módulos. Como consecuencia de la independencia modular un módulo cumplirá:
·         Características de caja negra, es decir abstracción.
·         Aislamiento de los detalles mediante encapsulamiento.
La independencia modular mejora el rendimiento humano, pudiendo realizarse programación en equipo y desarrollar módulos paralelamente. También contribuye a la reutilización de software.


     Ventajas y desventajas de la programación modular

  Ventajas:

·         Un programa modular es más fácil de escribir y depurar (ejecutar, probar y poner a punto). Se puede profundizar en las pruebas parciales de cada módulo mucho más de lo que se hace un programa mayor.
·         Un programa modular es fácil de mantener y modificar.
·         Un programa modular es fácil de controlar. El desglose de un problema en módulos permite encomendar los módulos más complejos a los programadores más experimentados y los más sencillos a los programadores más noveles.
·         Posibilita el uso repetitivo de las rutinas en el mismo o en diferentes programas.


  Desventajas:
·         No se dispone de algoritmos formales de modularidad, por lo que a veces los programadores no tienen claras las ideas de los módulos.
·         La programación modular requiere más memoria y tiempo de ejecución.


Metodología de diseño


METODOLOGÍA DISEÑO ESTRUCTURADA
DEFINICIÓN
Análisis del problema
El propósito del análisis de un problema es ayudar al programador para llegar a una cierta comprensión de la naturaleza del problema
Diseño o Desarrollo de un Algoritmo
Una computadora no tiene la capacidad para solucionar más que cuanto se le proporcionan los sucesivos pasos a realizar. Estos pasos sucesivos que indican las instrucciones a ejecutar por la maquina constituyen, como ya sabemos el algoritmo.
Codificación
Es el algoritmo traspasado a la computadora a través de un lenguaje de programación, debe ser escrito de acuerdo a las reglas gramaticales o sintaxis del mismo.
Compilación  y Ejecución del Programa
Compilación, el lenguaje de programación seleccionado revisa que ya no halla errores en el código fuente. Ejecución, ejecutar el programa después del ser compilado.
Verificación  y Validación
Revisar que el programa de los resultados que el usuario quiere, hay que revisar si hay algún error el cual puede ser de tipo lógico, de semántica o ejecución.
Depuración
Corregir los errores encontrados en la etapa anterior, si hubiese algún error se tiene que regresar hasta la etapa que sea necesaria para que la solución sea la que el usuario requiere
Mantenimiento
Mantenimiento preventivo es que hagamos lo posible por no caer en errores, la actualización si el usuario tiene la necesidad de quitar o poner algo; téngase en cuenta que cuando surge mantenimiento tenemos que volver a hacer todos los pasos anteriores revisando que todas la condiciones sean favorables alrededor del sistema.
Documentación
Corregir los errores encontrados en la etapa anterior, si hubiese algún error se tiene que regresar hasta la etapa que sea necesaria para que la solución sea la que el usuario requiere.



METODOLOGÍA DE DISEÑO MODULAR
DEFINICIÓN
Módulo de  raíz /Principal
Coordina  la realización de todas las funciones  lógicas.
Módulo de entrada
 Función  de captura de datos
Módulo de proceso
 Características  es  porque en el mismo se realiza  un tratamiento  o calculo  general.
Módulo de salida
Se caracteriza  por que  su función consiste  propiamente  en efectuar la salida  de la información  procesada.

Nota:  La programación  estructurada  esta  enfocada al desarrollo del programa final  y la programación modular  es parte del diseño de programación  y determina  si un datos  puede  ser  entrada o salida  de otro proceso.Estos  proceso  no debe  ser enseñado como si fuera  dos programaciones  que actúan  independiente, sino  como una sola  a la hora de elaborar  un programa.





GLOSARIO

PALABRA
DEFINICIÓN
1.MÓDULO
 Es una parte repetitiva, autónoma e intercambiable de un diseño modular.
2.LENGUAJE

Se entiende a un sistema de comunicación que posee una determinada estructura, contenido y uso.


3. GOTO
Es una instrucción propia de los primeros lenguajes de programación BASIC

4. PROGRAMACIÓN
ESTRUCTURADA
La programación  estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando únicamente subrutinas y tres estructuras: secuencia, selección (if y switch) e iteración (bucles for y while).

5. PROGRAMACIÓN  MODULAR
La programación  modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable.

6. DEBUGGING
Es el proceso de encontrar y resolver los errores o defectos que impiden el correcto funcionamiento de los programas informáticos o un sistema.

7. ENTRADA
Es la información producida por el usuario con el propósito del control del programa.

8. PROCESO
Proceso referido a las instrucciones que ejecutará el microprocesador mientras lee un programa determinado.

9. SALIDA
Muestras de  información al  usuario después  de ser procesado  atraves  un programa

10. DISEÑO
Proyectar, coordinar, seleccionar y organizar un conjunto de elementos para producir y crear objetos visuales destinados a comunicar mensajes específicos a grupos determinados.

11. MANTENIMIENTO
El mantenimiento informático, o también llamado soporte informático, consiste en una serie de tareas que son llevadas a cabo por personal interno o por empresas especializadas para mantener en determinados niveles de servicio los sistemas informáticos. 

12. RAÍZ
Es el primer directorio o carpeta en una jerarquía. Contiene todos los subdirectorios de la jerarquía.

13. INTERFAZ
Conexión que se da de manera física y a nivel de utilidad entre dispositivos o sistemas.

14. SUBPROGRAMA
Bloque de sentencias ejecutables que  es parte de  un programa raíz.

15. METODOLOGÍA
 Conjunto o sistema de métodos, principios y reglas que permiten enfrentar de manera sistemática el desarrollo de un programa que resuelve un problema algorítmico.