PROCEDIMIENTOS Y FUNCIONES

0 comentarios
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 escensialmente partes separadas de código que ejecutan tareas pequeñas de un programa GRANDE.

PROCEDIMIENTOS

0 comentarios

Un procedimiento es un grupo de sentencias que realizan una tarea concreta. En lugar de reescribir el código completo de esa tarea cada vez que se necesite, únicamente se hace una referencia al procedimiento. Estos pueden recibir o enviar información el programa principal, técnicamente se conoce como PASO DE PARAMETROS, que puede ser POR TRANSFERENCIA o POR VALOR.
SintaxisProcedure NOMBRE_DEL_PROCEDIMIENTO
CONSTANTES
TIPOS
VARIABLES
PROCEDIMIENTOS Y FUNCIONES
BEGIN
{Bloque de instrucciones}END;
Este sencillo programita ilustra la forma de utilizar procedimientos sencillosprogram Procedimientos_sencillos;
procedure Nombre;
begin
Writeln('Este Robot aun no tiene nombre');end;
procedure Direccion;
begin
Writeln('C:\mis documentos\imágenes\caricaturas\');end;
procedure Telefono;
begin
Writeln('0000 sin corriente');end;
begin{Inicio del programa principal}
{Se invocan los diferentes procedimientosDeclarados anteriormente}Nombre;
Dirección;
Telefono;
Readln;
end. {Final del programa principal}
Ahí te va otro ejemplo:program Otro_procedimiento_sencillo;
var Contador : integer;
procedure Escribe_el_titulo;
begin
Writeln('Este es el Título');end;
procedure Escribe_un_mensaje;
beginWriteln('Este es el mensaje y el contador es ',Contador);
end;procedure Escribe_el_final;
begin
Writeln('Este es el mensaje final');end;
Begin {Inicio del programa principal}
Escribe_el_titulo;
for Contador := 1 to 10 do Escribe_un_mensaje;
{Observa detenidamente este ciclo FOR, como tiene una sola instrucción no lleva ni BEGIN ni END}Escribe_el_final;End. {Final del programa principal}

PASO DE PARAMETROS

0 comentarios

Pasar un parámetro significa direccionar el valor de una variable del programa principal al procedimiento hay dos clases:

Paso de parámetros por REFERENCIA
Cuando se pasa una variable a un procedimiento como parámetro por referencia, los cambios que se efectúen sobre dicha variable dentro del procedimiento se mantienen incluso después de que este haya terminado, es decir los cambios afectan al programa principal.

Los cambios producidos POR PARAMETRO POR REFERENCIA son permanentes, pues TURBO PASCAL no pasa al procedimiento el valor de la variable sino la dirección de memoria de esta.

SintaxisPROCEDURE Nombre_procedimiento( VAR variable : tipo de dato)
BEGIN
{Bloque de instrucciones}
END;
Paso de parámetros por VALOR

La diferencia de pasar parámetros por referencia respecto a parámetros por valor radica en que en estos últimos se guarda en memoria una copia temporal de la variable, dentro del procedimiento solo se utiliza la copia, cuando se modifica el valor del parámetro solo afecta al almacenamiento temporal, la variable actual fuera del procedimiento nunca se toca.
SintaxisPROCEDURE Nombre_procedimiento(variable : tipo de dato)
BEGIN
{Bloque de instrucciones}
END;

Ejemplo:

program Ambos_procedimientos;
var Contador : integer;
Indice : integer;
procedure Imprime_Datos(estable : integer);
{Este es un procedimiento de PARAMETRO por VALOR}
begin
Writeln('Esta es la rutina : ',estable);
estable := 12;
end;
procedure Imprime_y_modifica(var cambia : integer);
{Este es un procedimiento de PARAMETRO por REFERENCIA}
begin
Writeln('Esta es el procedimiento de impresión y modificación ', Cambia);
Cambia := 35;
end;
begin (* Programa principal *)
for Contador := 1 to 3 do
begin
Indice := Contador;
Imprime_Datos(indice);
Writeln('Volvemos al procedimiento de impresión, Indice =',Indice);
Imprime_y_modifica(Indice);
Writeln('Volvemos al procedimiento de impresión, Indice =',Indice);
Imprime_datos(indice);
Writeln('Regresamos de nuevo a la impresión de nuevo y el valor del índice es =',Indice);
Writeln; {Imprimimos una linea en blanco}
end;{Final del ciclo for}
readln;{Se hace una espera hasta que se presiona la tecla ENTER}
end. (* Final del programa principal *)
Si deseas ver el resultado de este programa por favor codifícalo en TURBO PASCAL (suena como redundante, pero no falta el que lo meta en lenguaje C, y después ande diciendo que estos ejemplos no funcionan) y saca tus propias conclusiones.

FUNCIONES

0 comentarios
 Las funciones son, al igual que los procedimientos, un conjunto de sentencias que se ejecutan constantemente, la diferencia entre éstas y los procedimientos es que las funciones regresan un valor. La declaración de las funciones se realiza de la siguiente forma: FUNCTION nombre(parámetros) : tipo_de_datos; A continuación se escribe el contenido de la función como una sentencia normal (sencilla o compuesta), normalmente terminando con la igualación de la función al valor que regresará. Ejemplo:
Function Promedio (A, B : Real) : Real; {Promedio De Dos Números Reales}Begin
Promedio := (A + B) / 2;
End;

Uso De Las Funciones

Como Las Funciones Devuelven Un Valor Específico La Forma Más Usual De Utilizarlas Es Por Medio De Asignaciones De Una Variable A La Función. Ejemplo:
Program Funciones;
Var
X, Y, Z : Real;
Function Promedio (A, B : Real) : Real;

{Promedio De Dos Números Reales}
Begin
Promedio := (A + B) / 2;
End;

Begin
{Inicio Del Programa Principal}

{A Continuación Inicializamos Las Variables}
X := 12.78;
Y := 6.38;
Z := Promedio (X, Y);
{Iguala Z Al Valor Devuelto Por La Función Promedio De X, Y}
Writeln('El Promedio De ',X,' Y ',Y,' Es: ',Z); 
{Impresión De La Información}End. {Final Del Programa Principal}




ARREGLOS BIDIMENSIONALES

0 comentarios
Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito ordenado y homogéneo. El acceso a ellos también es en forma directa por medio de un par de índices.
Los arreglos bidimensionales se usan para representar datos que pueden verse como una tabla con filas y columnas. La primera dimensión del arreglo representa las columnas, cada elemento contiene un valor y cada dimensión representa una relación 
La representación en memoria se realiza de dos formas : almacenamiento por columnas o por renglones.
Para determinar el número total de elementos en un arreglo bidimensional usaremos las siguientes fórmulas:
RANGO DE RENGLONES (R1) = Ls1 - (Li1+1)
RANGO DE COLUMNAS (R2) = Ls2 - (Li2+1)
No. TOTAL DE COMPONENTES = R1 * R2

REPRESENTACION EN MEMORIA POR COLUMNAS


x : array [1..5,1..7] of integer
Para calcular la dirección de memoria de un elemento se usan la siguiente formula:
A[i,j] = base (A) + [((j - li2) R1 + (i + li1))*w]
REPRESENTACION EN MEMORIA POR RENGLONES

x : array [1..5,1..7] of integer
Para calcular la dirección de memoria de un elemento se usan la siguiente formula:
A[i,j] = base (A) + [((i - li1) R2 + (j + li2))*w]
donde:
i = Indice del renglón a calcular
j = Indice de la columna a calcular
li1 = Límite inferior de renglones
li2 = Límite inferior de columnas
w = Número de bytes tipo componente

ARREGLOS UNIDIMENSIONALES

0 comentarios
 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. 
Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la dirección base del arreglo, la cota superior y la inferior. 

REPRESENTACION EN MEMORIA
Los arreglos se representan en memoria de la forma siguiente: 
                x : array[1..5] of integer


Para establecer el rango del arreglo (número total de elementos) que componen el arreglo se utiliza la siguiente formula: 
                RANGO = Ls - (Li+1)
donde: 
ls = Límite superior del arreglo 
li = Límite inferior del arreglo 
Para calcular la dirección de memoria de un elemento dentro de un arreglo se usa la siguiente formula: 
                A[i] = base(A) + [(i-li) * w]
donde : 
A = Identificador único del arreglo 
i = Indice del elemento 
li = Límite inferior 
w = Número de bytes tipo componente 
Si el arreglo en el cual estamos trabajando tiene un índice numerativo utilizaremos las siguientes fórmulas: 
                RANGO = ord (ls) - (ord (li)+1)
                A[i] = base (A) + [ord (i) - ord (li) * w]

ARREGLOS - ARRAYS

0 comentarios
En programación, una matriz o vector (llamados en inglés arrays) es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres dimensiones.
Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sería más adecuado utilizar una lista, ya que esta estructura puede cambiar de tamaño fácilmente durante la ejecución de un programa.