Está en la página 1de 26

INDICE

Introduccin .... 2 Estructuras de control y funciones..3


Constantes, variables y sentencias...4 Funciones,prototipo de una funcin.15 Paso de parmetros entre funciones ..16

Arreglos unidimensionales y bidimensionales..20


Delaracion y utilizacin de arreglos (java).21

Conclucion...25 Bibliografa26

INTRODUCCIN
La presente investigacin que realizaremos tiene una gran importancia en cuanto se refiere a lo frente ala introduccin de la programacin y estaremos hablando en gran parte a estructuras sus componentes y arreglos en java el cual se utilizan para almacenar un conjunto de variables que sean del mismo tipo de datos y todas estn bajo un mismo orden. podremos observar como la programacin es tan esencial en la vida cotidiana ya que en la actualidad toso es por programacin lgica.la codificacin tambin es de gran importancia en esta investigacin gracias a ella podemos transformar de la formulacin de u mensaje de texto atreves de reglas o normas de un cdigo o lenguajes predeterminado. Con la realizacin de este trabajo se espera obtener una investigacin eficaz que sirva de base o punto de apoyo para la realizacin de un buen aprendizaje logstico.

ESTRUCTURAS DE CONTROL Y FUNCIONES


Definiendo una Estructuras de control
En lenguajes de programacin, las estructuras de control permiten modificar el flujo de ejecucin de las instrucciones de un programa Con las estructuras de control se puede: De acuerdo a una condicin, ejecutar un grupo u otro de sentencias (If-Then-Else) De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias (Select-Case) Ejecutar un grupo de sentencias mientras se cumpla una condicin (Do-While) Ejecutar un grupo de sentencias hasta que se cumpla una condicin (Do-Until) Ejecutar un grupo de sentencias un nmero determinado de veces (For-Next) Todas las estructuras de control tienen un nico punto de entrada y un nico punto de salida. Las estructuras de control se puede clasificar en : secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la programacin se rija por los principios de la programacin estructurada. Los lenguajes de programacin modernos tienen estructuras de control similares. Bsicamente lo que vara entre las estructuras de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura. Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos guardados.

Definiendo una funcion


Una funcin es un conjunto de lneas de cdigo que realizan una tarea especfica y puede retornar un valor. Las funciones pueden tomar parmetros que modifiquen su funcionamiento. Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comnmente utilizadas durante un programa y de esta manera reducir la cantidad de cdigo. Cuando una funcin es invocada se le pasa el control a la misma, una vez que esta finaliz con su tarea el control es devuelto al punto desde el cual la funcin fue llamada.

Costantes, variables y sentencias


CONSTANTES Una constante es un dato cuyo valor no puede cambiar durante la ejecucin del programa. Recibe un valor en el momento de la compilacin y este permanece inalterado durante todo el programa. Como ya se ha comentado en el tema sobre las partes de un programa, las constantes se declaran en una seccin que comienza con la palabra reservada const. Despus de declarar una constante ya puedes usarla en el cuerpo principal del programa. Tienen varios usos: ser miembro en una expresion, en una comparacin, asignar su valor a una variable, etc. En el siguiente ejemplo se contemplan varios casos:

const Min = 0; Max = 100; Sep = 10; var i : integer; begin i := Min; while i < Max do begin writeln(i); i := i + Sep end end. En este ejemplo se declaran tres constantes (Min, Max y Sep). En la primera lnea del cuerpo del programa se asigna una constante a una variable. En la siguiente, se usa una constante en una comparacin. Y en la cuarta, la constante Sep interviene en una expresin que se asigna a una variable. El resultado de ejecutar este programa sera una impresin en pantalla de los nmeros: 0, 10, 20, 30, 40, 50, 60, 70, 80 y 90.

Se puede hacer una divisin de las constantes en tres clases: constantes literales (sin nombre) constantes declaradas (con nombre) constantes expresin

Constantes literales Son valores de cualquier tipo que se utilizan directamente, no se declaran ya que no tienen nombre. En el siguiente ejemplo tienes un par de constantes literales (el 3, el 4, y el 3.1416): VolumenEsfera := 4/3 * 3.1416 * Radio * Radio * Radio; Constantes Tambin llamadas constantes con nombre, son las que seccin const asignndoles un valor directamente. Por ejemplo:

se

declaradas declaran en la

const Pi = 3.141592; (* Min = 0; (* Max = 99; (* Saludo = 'Hola'; (* cadena caract. *)

valor

real entero entero

*) *) *)

Constantes expresin Tambin se declaran en la seccin const, pero a estas no se les asigna un valor directamente, sino que se les asigna una expresin. Esta expresin se evala en tiempo de compilacin y el resultado se le asigna a la constante. Ejemplo: const Min Max Intervalo N = (Max Centro = (Max - Min) div 2; = = = Min) div 0; 100; 10; Intervalo;

Variables def: Una variable es un nombre asociado a un elemento de datos que est situado en posiciones contiguas de la memoria principal, y su valor puede cambiar durante la ejecucin de un programa. Toda variable pertenece a un tipo de dato concreto. En la declaracin de una variable se debe indicar el tipo al que pertenece. As tendremos variables enteras, reales, booleanas, etc. Por otro lado, distinguimos tres partes fundamentales en la vida de una variable: Declaracin Iniciacin Utilizacin

Declaracin de variables Esta es la primera fase en la vida de cualquier variable. La declaracin se realiza en la seccin que comienza con la palabra var. Si quieres ms informacin, puedes ir al apartado que trata sobre la declaracin de variables en el tema Estructura de un programa. Nota: Toda variable que vaya a ser utilizada en Pascal tiene que ser previamente declarada. Iniciacin de variables Esto no es ms que darle un valor inicial a una variable. As como lo primero que se hace con una variable es declararla, lo siguiente tiene que ser iniciarla. Esto se hace para evitar posibles errores en tiempo de ejecucin, pues una variable tiene un valor indeterminado despus de declararla. Principalmente, existen dos maneras de otorgar valores iniciales a variables: Mediante una sentencia de asignacin Mediante uno de los procedimientos de entrada de datos ( read o readln)

Veamos un ejemplo que rene los dos casos: begin ... i:=1; readln(n);

while i < n do begin (* cuerpo del bucle *) i := i + 1 end; ... end.

Utilizacin. Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la parte que presenta un mayor abanico de posibilidades. A continuacin tienes unas cuantas: Incrementar su valor: i := i + 1 Controlar un bucle: for i:=1 to 10 do ... Chequear una condicin: if i<10 then ... Participar en una expresin: n := (Max - Min) div i Y otras que ya irs descubriendo

Sentencias
Las sentencias, tambin llamadas instrucciones,... a) definen la lgica de un programa o subprograma (subrutina), b) manipulan los datos descritos anteriormente para producir el resultado deseado por el usuario del programa, c) por norma general, en TurboPascal estn separadas unas de otras por un punto y coma. Es necesario indicar que las lneas en el cdigo fuente de un programa de TurboPascal 7.0 tienen una longitud mxima de 126 caracteres, as que sentencias de mayor longitud han de dividirse adecuadamente para no sobrepasar esta limitacin. Existen distintos tipos de sentencias en TurboPascal que se van a tratar a continuacin. SENTENCIAS DE ASIGNACIN

Se utilizan para asignar valores, normalmente, a variables y constantes con tipo y a las funciones en su definicin. El operador de asignacin es :=. Almacena un valor determinado en la posicin de memoria asociada al identificador de la variable. Dicho valor ha de ser compatible con el tipo de dato de la variable. Sintaxis: Identificador := Expresion; Identificador es el identificador de la variable y Expresion puede ser una constante, una ariable o una combinacin de constantes, variables y funciones unidos por operadores.El trmino de la derecha ha de tener un valor, y por lo tanto, si es necesario se evala,antes de que la asignacin se ejecute. El trmino de la izquierda slo puede ser un identificador de una variable o de una constante con tipo y no otra clase de constante, identificador o expresin. Para evitar errores de compilacin, es necesario respetar la compatibilidad de tipos entre los dos miembros de la asignacin. Ej.: var I, nulo : integer; r, radio1, radio2, area : real; respuesta : boolean; caracter : char; c : string; begin nulo:=0; { nulo toma el valor de la constante 0 } c:='%%%%%%%'; { c toma el valor %%%%%%% } respuesta:=true; { respuesta toma el valor true } radio1:=radio2; { radio1 toma el valor de radio2 } r:=radio1+radio2; { r toma el valor de la suma } area:=pi*r*r; { area toma el valor de la expresion } respuesta:=X=Y; { toma el valor true si X=Y } caracter:='?'; { caracter toma el valor ? }

Hay sentencias de asignacin especficas con nombre propio: a) Contador es la sentencia de asignacin que tiene la siguiente estructura: Sintaxis: Variable ordinal := Variable ordinal + Constante Por ejemplo: I:=I+1; { se denomina operacin contador } siendo I una variable numrica de un tipo entero. b) Acumulador es la sentencia de asignacin que tiene la siguiente estructura: Sintaxis: Variable := Variable + Suma de variables Por ejemplo: suma:=suma+x; { se llama operacin acumulador } siendo suma y x dos variables numricas de un tipo entero o real.

A modo de ejemplo y dadas las declaraciones de variables realizadas anteriormente, no son vlidas las siguientes asignaciones: 5:=radio1; radio1-radio2:=r; radio=5; I:=3.15; I:=100000; I:='3'; Caracter:='A'+'B'; Caracter='ab'; SENTENCIAS DE LLAMADA A UN PROCEDIMIENTO Sirven para ejecutar un procedimiento utilizando su identificador (seguido de los parmetros entre parntesis si los tiene) como una sentencia simple. Despus de ejecutarse el programa contina con la siguiente sentencia a continuacin. Sintaxis: Identificador_procedimiento(parametros); Ej.: ClrScr; { Procedimiento estandar de TurboPascal para limpiar la pantalla de caracteres } WriteLn(area); { Procedimiento estandar para visualizar datos por pantalla } Si bien las llamadas a los procedimientos tienen sentido como sentencias por s mismas en un programa, no ocurre lo mismo con las llamadas a las funciones, que slo tienen sentido dentro de expresiones que se evalan segn el valor devuelto por la llamada a la funcin. Como se ver ms adelante detenidamente, sta es una de las diferencias entre los procedimientos y las funciones. SENTENCIAS COMPUESTAS Una sentencia compuesta es un conjunto de sentencias comprendidas entre la pareja de palabras reservadas BEGIN (sin punto y coma a continuacin) y END (con punto y coma a continuacin). Como se ha indicado anteriormente, el carcter del punto y coma se utiliza para separar dos sentencias. El cuerpo del programa es una sentencia compuesta en la que a la palabra reservada end, en este caso, le sigue un punto (final) que indica al compilador el trmino del cdigo fuente del programa. Como se ver ms adelante, el cuerpo de una funcin, de un procedimiento o de un programa tambin son sentencias compuestas.. Sintaxis: begin { . . . grupo de sentencias . . . } end; Ej.: begin clrscr; area:=12.3; writeln(area) end; SENTENCIAS DE CONTROL DE LA LGICA Las estructuras o sentencias de control de la lgica de un programa permiten (a) la seleccin o bifurcacin en la ejecucin de sentencias, (b) la repeticin en la ejecucin de sentencias o (c) el salto incondicional dentro de una secuencia de ejecucin de sentencias. Las primeras permiten seleccionar la ejecucin o no de una o varias sentencias dependiendo de una condicin lgica y las segundas permiten ejecutar una sentencia ninguna, una o varias veces (un nmero determinado de ellas o mientras se cumpla una condicin). Fundamentos de programacin - A. Garca-Beltrn, R. Martnez y J.A. Jan 56

Sentencias condicionales o selectivas Dentro de las sentencias selectivas se encuentra la bifurcacin (if-then-else) y la sentencia multiramificada (case-of). 5.5.1.1 If..then..else La sentencia if-then-else es una bifurcacin con dos ramas - la parte ELSE es opcional. En primer lugar, la sentencia evala una condicin o expresin lgica. Despus, ejecuta la sentencia_1 si la condicin o expresin booleana es cierta (True), en caso contrario, si es falsa (False), ejecuta la sentencia_2 si sta existe es opcional Sintaxis: if condicin-expresin lgica then sentencia_1 [else sentencia_2]; Ej.: var a,b:integer; begin write('Introduce un valor para a: '); readln(a); write('Introduce un valor para b: '); readln(b); if a>b then writeln('a es mayor que b') else writeln('a es menor o igual que b'); verdadera falsa sentencia 1 sentencia 2 expresin lgica

Flujograma de la sentencia selectiva Ifthenelse No se debe utilizar punto y coma antes o despus de las palabras reservadas THEN o ELSE en una sentencia IF ya que se genera un error de compilacin (1). Tanto la sentencia1 como la sentencia2 pueden ser sentencias compuestas. Por otro lado, pueden utilizarse sentencias IF anidadas, es decir, una sentencia If dentro de otra sentencia If (eso s, con cuidado). Por ejemplo, con las siguientes sentencias If anidadas se pretende ordenar tres datos numricos: IF (a>=b) and (a>=c) THEN BEGIN Write(a,'>='); IF b>=c THEN WriteLn(b,'>=',c)

ELSE WriteLn(c,'>=',b) END ELSE IF a>=b THEN WriteLn(c,'>=',a,'>=',b) ELSE IF a>=c THEN WriteLn(b,'>=',a,'>=',c) ELSE Datos estructurados 57

IF b>=c THEN WriteLn(b,'>=',c,'>=',a) ELSE WriteLn(c,'>=',b,'>=',a); Case La sentencia case es una bifurcacin multiramificada. Permite elegir una sentencia entre varias alternativas segn el valor de una condicin o expresin selector. Consiste en una expresin de seleccin y un conjunto de sentencias precedidas de una lista de valores posibles de la expresin separados por comas, los valores pueden ser constantes o subrangos. Sigue la siguiente estructura y el flujograma mostrado en la Figura 15: Sintaxis: case condicion_expresion_selector of lista_1: sentencia_1; lista_2: sentencia_2; { mas de lo mismo ... } lista_n: sentencia_n [else sentencia_x] end; La parte [else sentencia_x] es opcional y permite ejecutar una sentencia en el caso de que el valor de la variable selector no se halle en ninguna de las listas de constantes anteriores.

Flujograma de la sentencia selectiva Caseof La expresin selector ha de corresponder a un tipo ordinal determinado (integer, word, char, boolean, enumerado o un subrango de stos). Conforme a esto, no pueden emplearse en las listas de constantes ni valores enteros fuera del intervalo de representacin del tipo integer word (es decir, constantes literales enteras entre -32768 y 65535), ni valores numricos

10

reales. El compilador no genera un error si se encuentran valores repetidos en las listas de constantes, si bien slo se ejecuta la sentencia correspondiente al primer valor indicado. Ej.: var caracter : char; begin readln(caracter); case caracter of 'A'..'Z','a'..'z' : writeln ('Es una letra'); '0'..'9' : writeln ('Es un dgito'); '+','-','*','/' : writeln ('Es un operador') else writeln ('Es un caracter especial') end; Las sentencias que siguen a las listas de constantes pueden ser sentencias compuestas. En este caso se delimitan entre un begin y un end. Fundamentos de programacin - A. GarcaBeltrn, R. Martnez y J.A. Jan 58 Sentencias repetitivas o bucles Las sentencias repetitivas o bucles permiten la repeticin de una sentencia o de un conjunto de sentencias. 5.5.2.1 While..do La sentencia while es un bucle condicional que incluye un test al principio, es decir, ejecuta una sentencia mientras sea cierta una condicin o expresin lgica (condicin de entrada). Con este mecanismo, la sentencia puede no ejecutarse ni una sla vez, si la condicin es falsa nada ms llegar al bucle por primera vez. Por otro lado, es importante asegurarse de que, en algn momento de la ejecucin de la sentencia repetitiva, la condicin va a ser falsa, pues de lo contrario se caera en un bucle infinito. Sintaxis: while condicion_booleana do sentencia; El siguiente ejemplo escribe 9 lneas en la pantalla de texto numerndolas del 1 al 9 Ej.: var i:integer; begin i:=1; while i<10 do begin writeln('Esta es la linea n ',i); i:=i+1 end;

11

Flujograma de la sentencia repetitiva Whiledo Repeat..until La sentencia repeat es un bucle condicional con test al final. Ejecuta una sentencia o sentencias hasta que sea cierta una condicin (condicin de salida). Con este mecanismo, la sentencia siempre se ejecuta al menos una vez. Como en el tipo de bucle anterior es importante asegurarse de que, en algn momento de la ejecucin, la condicin va a ser verdadera, pues de lo contrario se caera en un bucle infinito. Sigue la siguiente estructura y el flujograma mostrado en la Figura 17: Sintaxis: repeat sentencia_1; sentencia_2; { mas sentencias ... } sentencia_n until condicion; El siguiente ejemplo de utilizacin de la sentencia repeat visualiza nueve lneas en la pantalla de texto y es equivalente al anterior ejemplo del bucle while. Ej.: var I:integer; Begin Datos estructurados 59

I:=1; repeat writeln('Esta es la linea n ',I); I:=I+1 until I>9;

12

Flujograma de la sentencia repetitiva Repeatuntil For ... to/downto ... do La sentencia for es un bucle predeterminado que ejecuta una sentencia repetidamente mientras se asigne a la variable de control o contador una progresin de valores. Esta progresin puede ser ascendente (to) o descendente (downto). El flujograma correspondiente a esta sentencia se muestra en la Figura 18 y respeta la siguiente estructura sintctica: Sintaxis: for contador:=valorinicial to/downto valorfinal do sentencia; donde contador es el identificador de una variable ordinal. La variable contador toma el valor inicial especificado y cada vez que se ejecuta el bucle, incrementa o decrementa implcitamente su valor al sucesivo en la progresin correspondiente. El siguiente ejemplo de utilizacin de la sentencia for visualiza nueve lneas en la pantalla de texto y es equivalente a los anteriores ejemplos de los bucles while y repeat. Ej.: var i:integer; begin for i:=1 to 9 do writeln ('Esta es la linea n',i); Otro ejemplo de empleo de la sentencia for permite asignar valores va teclado a cada uno de los elementos de una variable de tipo vector (array[0..9] of real): Ej.: type vector = array[0..9] of real; var a : vector; i : integer; begin for i:=0 to 9 do readln(a[i]); La variable contador, el valor inicial y el valor final han de ser del mismo tipo ordinal o subrango de tipo ordinal. No valen datos de tipo real!. En general, los valores inicial y final sern expresiones (constantes, variables o una combinacin) de este tipo que se evalan al

13

principio de la ejecucin del bucle. Una vez evaluados, los valores inicial y final de la progresin se almacenan en la memoria y quedan fijos hasta el final del bucle. Fundamentos de programacin - A. Garca-Beltrn, R. Martnez y J.A. Jan 60

Flujograma de la sentencia repetitiva For .. todo El valor asignado a la variable de control puede variarse dentro del bucle FOR con la correspondiente modificacin en la progresin de valores que en principio hubiera tomado dicha variable. Por lo que, si el valor de la variable contador se modifica explcitamente dentro de la sentencia o grupo de sentencias que se repiten, ha de hacerse con mucho cuidado. Hacindolo de esta manera, esta caracterstica del bucle FOR puede emplearse para cambiar el ritmo de la progresin. En general, las sentencias repetitivas tambin pueden anidarse unas dentro de otras. En el siguiente ejemplo, se emplean dos sentencias anidadas para asignar valores a todos los elementos de una variable tipo matriz bidimensional: type matriz = array[1..3,1..4] of real; var a : matriz; i,j : integer; begin for i:=1 to 3 do for j:=1 to 4 do begin write('El elemento a[', i,',',j,'] es : '); readln(a[i,j]);

14

end; Sentencia GOTO La sentencia goto permite la implementacin de un salto incondicional en el cdigo. Esta sentencia transfiere la ejecucin del programa hasta otra sentencia prefijada por una marca o etiqueta de referencia. La etiqueta debe ir obligatoriamente en el mismo bloque de sentencias (subrutina o programa principal) que la sentencia goto. Es decir, no es posible saltar fuera de una funcin o un procedimiento. Sintaxis: goto etiqueta; La etiqueta es un identificador o un grupo de 1 a 4 dgitos y debe declararse al comienzo del programa. Ej.: label 100; begin writeln('hola'); goto 100; writeln('voy a ser saltado'); writeln('yo tambien'); 100: writeln('yo si soy ejecutado'); { . . . resto del programa . . . } Datos estructurados 61

El uso de este tipo de sentencia no est recomendado por la filosofa de la programacin estructurada.

FUNCIONES, PROTOTIPOS DE UNA FUNCIN


La forma genrica de definir funciones en C es: tipo-valor-regreso nombre-de-funcin (parmetros) { declaraciones enunciados} El tipo-valor-regreso es el tipo de dato resultado de llamar a la funcin, puede ser un entero, una cadena, un carcter, etc. o tambin puede ser void que indica que esa funcin no devolver ningn valor. El nombre-de-funcin es un identificador o nombre vlido. Por lo general se aconseja poner un nombre corto que especifique lo que hace esa funcin. Luego estn los parmetros: una lista, separada por comas, que especifica los datos que se espera recibir. Si se escribe void se entiende que esa funcin no necesita ningn parmetro. La funcin tiene un cuerpo o bloque, donde estn las declaraciones y los enunciados. En las declaraciones se especifican variables que mbito local, o sea, slo podrn ser usadas dentro de esa funcin. No se deben declarar las variables que llegan por parmetro. No se pueden definir funciones dentro de otra funcin, pero s se puede llamar a una funcin dentro de otra funcin (incluso se puede llamar a s misma, es el caso de las funciones recursivas). Dentro del enunciado de las funciones se debe regresar el control al punto desde donde se invoc a dicha funcin. En el caso de las funciones que no regresen resultados, estas finalizan cuando termina de ejecutarse la ltima lnea de la funcin o cuando se llega al enunciadoreturn. Si la funcin devuelve un resultado, se debe especificar cul siguiendo la siguiente forma: return expresin;

15

Es necesario aclarar que para cada definicin de funcin es necesario un prototipo de funcin. En el prximo captulo explicamos cmo se hacen los prototipos de funciones. Para terminar el tema debemos recordar, como consejo, que la mejor prctica al programares modularizar o sea, crear mltiples funciones simples que trabajarn juntas para crear un programa complejo.

Prototipos de funciones
Los programas sencillos, como los ejemplo planteados hasta ahora, normalmente no requieren un nivel de estructuracin elevado. Pero cuando estos crecen un poco necesitamos estructurarlos adecuadamente para mantenerlos legibles, facilitar su mantenimiento y reutilizar ciertas porciones de cdigo. El mecanismo C que nos permite esto son las funciones. Con los compiladores, los fabricantes nos proporcionan un conjunto importante de funciones de librera. A veces, nos puede interesar construir nuestras propias libreras. Ya hemos utilizado funciones, pero veamos cmo debemos definirlas. Los prototipos de funciones son una caracterstica clave de la recomendacin ANSI del C. Un prototipo es una declaracin que toma la forma:

tipo nombre ( tipo_parmetro nombre_parmetro ... ); Aqu tenemos varios ejemplos: int fact_i ( int v ); int mayor ( int a, int b ); int cero ( double a ); long raiz ( long valor ); void final_countdown ( void ); int main ( int argc, char **argv );

Observando el prototipo de una funcin podemos decir exactamente qu tipo de parmetros necesita y qu resultado devuelve. Si una funcin tiene como argumento void, quiere decir que no tiene argumentos, al igual que si el resultado es void, no devuelve ningn valor. En la vieja definicin de Kernighan y Ritchie el tipo que devolva una funcin se declaraba nicamente si era distinto de int. Los parmetros eran declarados en el cuerpo de la funcin, en lugar de utilizar la lista de parmetros. Por ejemplo:

mayor ( a, b ) int a; int b; { ... } Las funciones al viejo estilo se compilan correctamente en los compiladores actuales. El cuerpo de la funcin sigue encerrado entre llaves.

16

En un programa que est formado por distintas partes bien diferenciadas es conveniente utilizar mltiples ficheros fuente. Cada fuente agrupa las funciones semejantes, como por ejemplo en un compilador podramos tener un fuente para el anlisis lxico, otro para el sintctico y otro para la generacin de cdigo. Pero en un fuente necesitaremos funciones que se han definido en otro. Para ello, escribiremos un fichero de cabecera ( header), que contendr las declaraciones que podemos necesitar en otros fuente. As, en el fuente que implementa el analizador sintctico pondremos una lnea #include "lexic.h". De esta forma al compilar el mdulo sintctico tendremos todos los prototipos de las funciones del lxico y el compilador podr detectar malas utilizaciones de las funciones all definidas.

Paso de parmetros entre funciones (java)


Paso de parmetros a una funcin Como ya hemos visto, las funciones pueden retornar un valor. Esto se hace mediante la instruccin return, que finaliza la ejecucin de la funcin, devolviendo o no un valor. En una misma funcin podemos tener ms de una instruccin return. La forma de retornar un valor es la siguiente:

return ( valor o expresin );

El valor devuelto por la funcin debe asignarse a una variable. De lo contrario, el valor se perder. En el ejemplo puedes ver lo que ocurre si no guardamos el valor en una variable. Fjate que a la hora de mostrar el resultado de la suma, en elprintf, tambin podemos llamar a la funcin. /* Paso de parmetros. */ #include <stdio.h> int suma(int,int); /* prototipo */ main() /* Realiza una suma */ { int a=10,b=25,t; t=suma(a,b); /* guardamos el valor */ printf("%d=%d",suma(a,b),t); suma(a,b); /* el valor se pierde */ } int suma(int a,int b) { return (a+b); }

17

Ahora veremos lo que se conoce como paso de parmetros. Existen dos formas de enviar parmetros a una funcin: Por valor: cualquier cambio que se realice dentro de la funcin en el argumento enviado, NO afectar al valor original de las variables utilizadas en la llamada. Es como si trabajaramos con una copia, no con el original. No es posible enviar por valor arrays, deberemos hacerlo por referencia. Por referencia: lo que hacemos es enviar a la funcin la direccin de memoria donde se encuentra la variable o dato. Cualquier modificacin SIafectar a las variables utilizadas en la llamada. Trabajamos directamente con el original.

/* Paso por valor. */ #include <stdio.h> void intercambio(int,int); main() /* Intercambio de valores */ { int a=1,b=2; printf("a=%d y b=%d",a,b); intercambio(a,b); /* llamada */ printf("a=%d y b=%d",a,b); } void intercambio (int x,int y) { int aux; aux=x; x=y; y=aux; printf("a=%d y b=%d",x,y); }

Para enviar un valor por referencia se utiliza el smbolo & ( ampersand ) delante de la variable enviada. Esto le indica al compilador que la funcin que se ejecutar tendra que obtener la

18

direccin de memoria en que se encuentra variable. Vamos a fijarnos en los ejemplos. En el ejemplo anterior podrs comprobar que antes y despus de la llamada, las variables mantienen su valor. Solamente se modifica en la funcin intercambio. En el siguiente ejemplo podrs ver como las variables intercambian su valor tras la llamada de la funcin Las variables con un * son conocidas como punteros, el nico dato en 'C' que puede almacenar una direccin de memoria.

/* Paso por referencia. */ #include <stdio.h> void intercambio(int *,int *); main() /* Intercambio de valores */ { int a=1,b=2; printf("a=%d y b=%d",a,b); intercambio(&a,&b); /* llamada */ printf("a=%d y b=%d",a,b); } void intercambio (int *x,int *y) { int aux; aux=*x; *x=*y; *y=aux; printf("a=%d y b=%d",*x,*y); }

argumento de la funcin main Ya hemos visto que las funciones pueden recibir argumentos. Pues bin, la funcin main no poda ser menos y tambin puede recibir argumentos, en este caso desde el exterior. Los argumentos que puede recibir son: argc: es un contador. Su valor es igual al nmero de argumentos escritos en la lnea de comandos, contando el nombre del programa que es el primer argumento. argv: es un puntero a un array de cadenas de caracteres que contiene los argumentos, uno por

19

cadena. En este ejemplo vamos a ver un pequeo programa que escribir un saludo por pantalla. El programa FUNCION6.EXE.

/* Argumentos de la main. */ #include <stdio.h> main(int argc,char *argv[]) /* argumentos */ { printf("\nCurso de Programacin en C - Copyright (c) 1997-2001, Sergio Pacho\n"); printf("Programa de ejemplo.\n\n"); if (argc<2) { printf("Teclee: funcion6 su_nombre"); exit(1); /* fin */ } printf("Hola %s",argv[1]); }

REGLOS UNIDIMENSIONALES Y BIDIMENCIONALES


Arreglos
Es un conjunto de datos o una estructura de datos homogneos que se encuentran ubicados en forma consecutiva en la memoria RAM ( sirve para almacenar datos en forma tempora) , son una coleccin de variables del mismo tipo que s referencia utilizando un nombre comn. Un arreglo puede definirse como un grupo o una coleccin finita, homognea y ordenada de elementos. Los arreglos pueden ser de los siguientes tipos: De una dimensin. De dos dimensiones. De tres o ms dimensiones

Unidimensionales:
es un tipo de datos estructurado que est formado de una coleccin finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe

20

proporcionar la direccin base del arreglo, la cota superior y la inferior. Ejemplos 1. Disear un algoritmo que ingrese 30 notas aprobados y que me muestre la nota mayor y el promedio de todas (Nota>=10.5 y Nota<=20) Solucin : Inicio nota[30], s, may, p : real i : entero s0 para (i=1; i<=30; i++) repetir Ingresar nota [i] hasta (nota[i]>=10.5) y (nota[i]<=20) s s + nota[i] si (i=1) entonces may nota[i] sino si (nota[i]>may) entonces may nota[i] fin _ si fin _ si fin _ para p s/30 mostrar "PROMEDIO TOTAL ES",p mostrar "LA NOTA MAYOR ES",may Fin

Bidimensionales:
Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito ordenado y homogneo. El acceso a ellos tambin 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 dimensin del arreglo representa las columnas, cada elemento contiene un valor y cada dimensin representa una relacin La representacin en memoria se realiza de dos formas : almacenamiento por columnas o por renglones. Para manejar un arreglo, las operaciones a efectuarse son: Declaracin del arreglo, Creacin del arreglo, Inicializacin de de los elementos del arreglo, y Acceso a los elementos del arreglo. A continuacin describiremos cada una de estas operaciones, en C#.

Declaracin.
La declaracin de un arreglo consiste en establecer las caractersticas del arreglo y sus elementos,

21

por medio de la siguiente sintaxis: [ , ] <> ; Donde: tipo indica el tipo correspondiente a los elementos del arreglo , identificador es el nombre del arreglo, y el par de corchetes y la coma, [ , ], representan las dimensiones del arreglo y encierra dos nmeros enteros, cuyo producto corresponde al nmero de elementos del arreglo. Ejemplos: double [ , ] matriz ; int [ , ] ubicacin ; Rama [ , ] rbol; // Rama es una clase. Observe que, en la declaracin, el espacio entre los corchetes est vaco. Esto se debe a que, durante dicha operacin, no se reserva espacio en la memoria. La creacin de un arreglo bidimensional consiste en reservar espacio en la memoria para todos sus elementos, utilizando la siguiente sintaxis: <> = new [ dim1, dim2 ] ; Donde: new es el operador para gestionar espacio de memoria, en tiempo de ejecucin, dim1 y dim2 son valores enteros que representan las dimensioes del arreglo. El tamao del arreglo es el resultado de multiplicar los valores de las dimensiones y representa el nmero de elementos del arreglo.

UTILIZACIO DE ARREGLOS JAVA


En el siguiente cdigo fuente se demuestra el uso de Arreglos con Clases Generadas (Propias) y primitivos, debido a la extensin del ejemplo su descripcin es dividida en dos secciones.

class Clip {}

public class Arreglo {

22

public static void main(String[] args) {

// Arreglos de Objetos Clip[] a; // Referencia Nula Clip[] b = new Clip[5]; Clip[] c = new Clip[4];

// Inicializacin Dinmica con Ciclo for(int i = 0; i < c.length; i++) c[i] = new Clip(); // Inicializacin al Crearse Arreglo Clip[] d = { new Clip(), new Clip(), new Clip() }; // Inicializacin Dinmica a = new Clip[] { new Clip(), new Clip() };

System.out.println("a.length=" + a.length); System.out.println("b.length = " + b.length); // Las referencia dentro del Arreglo // son automticamente inicializadas a "null" for(int i = 0; i < b.length; i++) System.out.println("b[" + i + "]=" + b[i]); System.out.println("c.length = " + c.length); System.out.println("d.length = " + d.length); a = d; System.out.println("a.length = " + a.length); Primeramente se define una Clase denominada Clip la cual simplemente consta de su declaracin, seguido se encuentra la definicin de la Clase principal Arreglo que contiene solo su mtodo principal (main), dentro de este mtodo se define lo siguiente:

23

En la primer seccin son definidas tres referencias en manera de Arreglo para la Clase Clip; la primer declaracin nicamente define la referencia, mientras las siguientes lineas definen dos referencias asignndose un arreglo de 5 y 4 Objetos respectivamente. Posteriormente son inicializados los distintos arreglos; en el primer caso se emplea un ciclo el cual asigna un Objeto a cada valor del arreglo, seguido se genera un nuevo arreglo el cual es inicializado en la misma declaracin, finalmente se lleva acabo la inicializacin de la referencia a En esta ultima seccin son impresos los distintos valores de los respectivos arreglos, en estas declaraciones se hace uso del mtodo interno length, dicho mtodo esta disponible para cualquier tipo de arreglo e indica la longitud del mismo; adems de esto son impresos los valores del arreglo b, los cuales por "default" son asignados un valor de null; adems de lo anterior, un detalle relevante es la asignacin a = d , como fue demostrado en un ejemplo anterior, este tipo de asignacin hace que lareferencia a apunte hacia los Objetos de la referencia d, por lo que el ltimo valor del arreglo(referencia) a equivale a 3.

24

CONCLUSION
Se puedes decir que los arreglos pueden variar segn sus dimensiones. Estos pueden ser unidimensionales y bidimensionales a los primeros se les conoce como vectores y como su nombre lo indica poseen una dimensin o una lista de datos del mismo tipo y los bidimensionales poseen dos dimensiones los cuales se usan para representar datos que pueden verse como una tabla con filas y columnas y se les conoce como matrices. La codificacin es algo tan simple como lo que realizamos a diario cuando transformamos imgenes visuales o entidades conceptuales en palabras oraciones, textos y las comunicamos a aquellos que no rodean. Conocemos ala codificacin como cualquier operacin que implique la asignacin de un valor o smbolo o carcter a un determinado mensaje verbal con el propsito de transmitirlo a otros individuos o entidades que compartan el cdigo.

25

BIBLIOGRAFA
http://www.slideshare.net/megavj/arreglos-unidimensionales-y-bidimensionales http://javabasico.osmosislatina.com/curso/progfinal/arreglos.htm http://www.alegsa.com.ar/Notas/112.php http://recursotec.latinowebs.com/lecciones/c/source/capitulo10-4.htm http://nereida.deioc.ull.es/~pcgull/ihiu01/cdrom/c/contenido/node10.html http://www.alegsa.com.ar/Notas/113.php http://www.it.uc3m.es/labas/course_notes/functions_passing_parameters_es.html http://ocw.upm.es/ciencia-de-la-computacion-e-inteligencia-artificial/fundamentosprogramacion/contenidosteoricos/ocwfundamentosprogramaciontema5.pdf http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Funciones#Funciones http://maxus.fis.usal.es/FICHAS_C.WEB/08xx_PAGS/0802.html

26