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
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.1FUNCIONESINTERNAS:
Las funciones predefinidas, también llamadas estándar,
son las que el propio lenguaje pone a disposición del programador. Se lasllama 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
CREADASPOR EL USUARIO:
Estasfuncionesson lasque diseñael programadoraparacalcular un valordentro desus el programalasmismacuentaconlos principios de declaraciónqueestá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.2COMPONENTES
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.3INVOCACIÓ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 ALCANCEDE 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 :
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:
vSecuencia
vInstrucción condicional.
vIteració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.Estosprocesono debeser enseñado como si fuerados programacionesque actúanindependiente, sinocomo una
solaa la hora de elaborarun 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 unsistemadecomunicaciónque 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ónorientado 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.