Está en la página 1de 29

UNIDAD II Elementos bsicos de un lenguaje de programacin (control y arreglos)

2.1 Estructuras de control. Las estructuras de control tambin conocidas como ciclos, bucles, estructuras iterativas o repetitivas, son bsicas para la elaboracin de programas, ya que el repetir una tarea varias veces a una gran velocidad, precisin y fiabilidad es una de las caractersticas de las computadoras que aumentan considerablemente su potencia. C soporta tres tipos de estructuras de control: Ciclo while Ciclo do_while Ciclo for 2.1.1 Teora de ciclos. Un ciclo es cualquier construccin de programa que repite una sentencia o secuencia de sentencias un nmero de veces. Las sentencias o grupo de sentencias que se repiten en un bloque se denominan cuerpo del bucle y cada repeticin del cuerpo del ciclo se llama iteracin del ciclo.

2.1.2 Contadores, acumuladores. Contadores: En los procesos repetitivos se necesita normalmente contar los sucesos o acciones internos del ciclo, como pueden ser: registro o elementos en un archivo y nmero de iteraciones a realizar por el ciclo. Para realizar esta tarea se utilizan los contadores, cuya construccin es una de las tcnicas corrientes en la realizacin de cualquier programa. Un contador es un campo de la memoria que est destinado a contener los diferentes valores que se van incrementando o decrementando en cada iteracin. El campo contendr las sucesivas sumas parciales que se van realizando en la ejecucin de las sucesivas repeticiones. El incremento en las sumas parciales es siempre constante, pudiendo ser positivo o negativo, es decir el contador se ir incrementando o decrementando. El contador se representar en un programa por medio de una variable.

En las instrucciones de preparacin del ciclo se realiza la inicializacin del contador o contadores. La inicializacin de un contador consiste en poner el valor inicial de la variable que representa al contador. Ejemplos: Contador =0 Contador = 4

Por consiguiente, el contador se representar por una instruccin de asignacin del tipo:

Contador = Contador + 1

Contador = Contador 1

Siendo 1 el incremento del contador.

Acumuladores: Un acumulador es un campo o zona de memoria cuya misin es almacenar cantidades variables resultantes de sumas sucesivas. Realiza la funcin de un contador con la diferencia que el incremento o decremento de cada suma es variable en lugar de constante como en el caso del contador. Se representa por S=S+N donde N es una variable y no constante. Al igual que al contador a un acumulador se le inicializa.

2.1.3 Ciclos controlados por contadores, centinelas. Ciclos controlados por centinelas.
Por lo general no se conoce con exactitud cuantos elementos de datos se procesarn antes de comenzar su ejecucin. Esto se produce bien porque hay muchos datos a contar normalmente o porque el nmero de datos a procesar depende de cmo prosigue el proceso de clculo.

Un medio para manejar esta situacin es instruir al usuario a introducir un nico dato definido y especificado denominado valor centinela como ltimo dato. La condicin del ciclo comprueba cada dato y termina cuando se lee el valor centinela. El valor centinela se debe seleccionar con mucho cuidado y debe ser un valor que no pueda producirse como dato. En realidad el centinela es un valor que sirve para terminar el proceso de ciclo.

Ejemplo:

//En el siguiente fragmento el centinela ser 1 const centinela =-1; printf(Introduzca la primer calificacin ); scanf(%d,&calif); while(calif!=centinela) { suma+=calif; printf(Introduzca la siguiente calificacin ); scanf(%d,&calif); } En este caso el ciclo se repetir mientras la calificacin sea diferente de 1, es decir mientras sea diferente del centinela.

Ciclos controlado por contador. Estos ciclos como su nombre lo indica son controlador por un contador, es decir en este tipo de ciclos se conoce el nmero de veces que este se repetir desde el inicio del

ciclo. El ciclo que de forma natural es controlado por un contador es el ciclo for, en el caso de los ciclos while como ya se pudo ver se controlan de diferentes maneras una de ellas es por medio de un contador. Ejemplo: El siguiente fragmento muestra un ciclo while que controlado por un contador se repetira 10 veces. int Contador =1; while(Contador<=10) { printf(%d, , Contador); Contador++; }

Ciclos controlados por indicadores (Banderas) En lenguajes como Pascal, que tienen el tipo bool, se utiliza una variable booleana con frecuencia como indicadores o banderas de estado para controlar la ejecucin de un ciclo. El valor del indicador se inicializa (normalmente a false ) antes de la entrada al ciclo y se redefine (normalmente a verdadero true ) cuando un suceso especfico ocurre dentro del ciclo. En C no existe el tipo bolean, por lo que se utiliza como bandera una variable que puede tomar dos valores, 0 o 1. Un ciclo controlado por bandera se ejecuta hasta que se produce un proceso anticipado y se cambia el valor del indicador. Ejemplo. Se desea leer diversos datos tipo carcter introducidos por teclado mediante un ciclo while y se debe terminar el ciclo cuando se lea un dato tipo dgito (0-9). La variable bandera, digito_leido se utiliza como un indicador que representa cuando un dgito se ha producido por teclado.

Variable bandera Digito_leido

Significado Su valor es falso (cero) antes de entrar en el ciclo y mientras el dato ledo sea un carcter y esverdadeo cuando el cuando el dato ledo es un dgito.

El problema que se desea resolver es la lectura de datos carcter y la lectura debe detenerse cuando el dato ledo sea numrico (un dgito de 0 a 9). Por consiguiente, antes de que el ciclo se ejecute y se lean los datos de entrada, la variable digito_leido se inicializa en falso (cero). Cuando se ejecuta el ciclo, ste debe continuar ejecutndose mientras el dato ledo sea un carcter y en consecuencia la variabale digito_leido tiene de valor falso y se debe detener el ciclo cuando el dato ledo sea un dgito y en este caso el valor de la variable dgito_leido debe cambiar a verdadero (uno). En consecuencia la condicin del ciclo debe ser !digito_leido ya que esta condicin es verdadera cuando digito_leido es falso. El ciclo quedara as: digito_leido=0; while(!digito_leido) { printf(Introduzca un carcter: ); scanf(%c,&car); digito_leido=((0<=car)&&(car<=9)); ... }

2.2 Tipos de ciclos 2.2.1 for

En C, el ciclo proporciona potencia y flexibilidad. Su formato General es el siguiente:

for ( inicializacin;prueba condicional;incremento) sentencia;

La seccin de inicializacin es usada para asignar un valor inicial a la variable que controla el ciclo. La seccin de inicializacin es ejecutada una sola vez. Antes del que ciclo empiece. La seccin de prueba condicional del ciclo compara la variable de control contra un valor cada vez que el ciclo se repita. Si la prueba evala cierto (TRUE), el ciclo se repite. Si es falso (FALSE), el ciclo se detiene, y la ejecucin del programa continua con la siguiente lnea de cdigo que le sigue al ciclo. La prueba condicional es ejecutada al comienzo de cada iteracin. La seccin de incremento del ciclo for es ejecutada al final de cada iteracin. Esto es, La seccin de incremento se ejecuta despus de que el bloque de sentencias es ejecutado, pero antes de la prueba condicional. El propsito de la seccin de incrementos es aumentar (o disminuir) la variable de control del ciclo en cierta cantidad. El ciclo for en C es ms poderoso y flexible que el de otros lenguajes. Las secciones : inicializacin, prueba condicional e incremento no estn limitadas a dichas actividades. El for de C no pone lmites en el tipo de expresiones que ocurren ah dentro. Por ejemplo, no se tiene que usar la seccin de inicializacin para asignar un valor inicial a la variable de control de ciclo. Ms an, no hay necesidad de utilizar una variable de control de ciclo cuando la prueba condicional se emplea de otra manera para terminar el ciclo. Finalmente, la seccin de incremento es slo una expresin que es evaluada cada vez que el ciclo itera (se repite). En ocasiones no se necesita incrementar ninguna variable. Otras de las flexibilidades del for en C es que pueden estar vacas algunas de las secciones anteriores, o tener varias expresiones en cada seccin. Por ejemplo:

x=1; for (;x<=10;x++)

for (x=1;x<=10;x++) printf("su valor es %4d",x);

printf("su valor es %4d",x); En el ciclo for tanto la variable de control como las que se utilizan para la condicin pueden ser del tipo entera o caracter, ya que la variable tipo carcter tiene una valor entero (cdigo ASCII). Ejemplos con el ciclo for: El siguiente programa imprime los nmeros del 1 al 20 elevados al cuadrado: #include <stdio.h> main() { int num; for(num=1;num<=20;num++) printf(%8d %8d\n,num, num*num); } El siguiente programa lee los nmeros de 1 hasta N y los imprime al cuadrado: #include <stdio.h> main() { int num,N; printf(Cuantos numeros quieres imprimir); scanf(%d,&N); for(num=1;num<=N;num++) printf(%8d %8d\n,num, num*num); }

2.2.2 do()-while Tiene la forma : do { sentencias } while(expresin); El ciclo do_while repite una sentencia o varias sentencias mientras la expresin es cierta. Se detiene cuando la expresin de convierte falsa. El ciclo do_while siempre se ejecuta al menos una vez, dado que la expresin controladora del ciclo se checa al final de cada iteracin.

Sentencia
Expresin

Ejemplo: La siguiente seccin de programa pide una serie de nmeros, determinado para cada uno si son pares o impares, este terminar cuando se teclee un * . do { printf(Teclea un nmero ); scanf(%,&num); if(num%2==0) printf(Nmero par ); else

printf(Nmero impar ); printf(Teclee * para terminar ); scanf(%c,&centinela); }while(centinela !=*);

2.2.3 while()

Un ciclo while tiene una condicin del ciclo (una expresin lgica) que controla la secuencia de repeticin. La posicin de esta condicin del ciclo es delante del cuerpo de este y significa que un ciclo while es un ciclopretest de modo que cuando se ejecuta el mismo, se evala la condicin antes de que se ejecute el cuerpo del ciclo. En la siguiente figura se representa el diagrama de flujo del ciclo.

Expresin Sentencia

El diagrama indica que la ejecucin de la sentencia o sentencias expresadas se repiten mientras que la condicin sea verdadera, en el momento que esta es falsa termina. Tambin indica que la condicin se evala antes de que se ejecute el cuerpo del ciclo y si desde un principio la condicin es falsa este no se ejecuta. Es decir que un ciclo while puede ejecutarse 0 o ms veces.

Sintaxis: 1.- while (condicin_ciclo) sentencia;

2.- while (condicin_ciclo ) { sentencia 1; sentencia 2; . . . sentencia n; } cuerpo del ciclo

El comportamiento o funcionamiento de una sentencia (ciclo) while es:

1. Se evalua la condicin_ciclo 2. Si es verdadera (distinto de cero ): a. La sentencia especificada, denominada cuerpo del ciclo, se ejecuta. b. Vuelve el control al paso 1. 3. En caso contrario: a. El control se transfiere a la sentencia siguiente al ciclo.

Ejemplo 1.

/* Cuenta hasta 10 */ int x=0; while (x<10) printf(X = %d,x++);

Ejemplo 2.

/* Visualiza n asteriscos */

contador = 0; while (contador < n) { printf (*); contador++; }

La variable que representa la condicin del ciclo se denomina tambin variable de control del bucle debido a que su valor determina si el cuerpo del ciclo se repite. La variable de control del ciclo debe ser: 1) inicializada, 2) comprobada, y 3) actualizada para que el cuerpo del ciclo se ejecute adecuadamente. Cada etapa se resume as: 1. Inicializacin. Contador se establece a un valor inicial (se inicializa a cero, aunque podra ser otro su valor) antes de que se alcance la sentencia while.

2.

Prueba/condicin. Se comprueba el valor de contador antes de que comience la repeticin de cada ciclo (denominada iteracin o pasada).

3. Actualizacin. Contador se actualiza (su valor se incrementa en 1, mediante el operador ++) durante cada iteracin.

Si la variable de control no se actualiza el ciclo se ejecutara siempre, este se denominar ciclo infinito, en otras palabras el ciclo infinito ser aquel en el cual su condicin_ciclo nunca sea falsa.

Ejemplo /* Ciclo infinito */

contador = 1; while(contador < 100) { printf (%d, contador); contador--; }

el contador se decrementa en 1 por lo que siempre ser menor a 100 y el ciclo nunca terminar de repetirse.

2.3 Anidaciones.

Al igual que en otras estructuras utilizadas dentro de el lenguaje C, los ciclos tambin se pueden anidar, de tal forma que dentro de un ciclo se incluya uno o ms ciclos como parte del cuerpo de este. Estos ciclos sern ciclos internos al primero, y por consiguiente cada que el ciclo que los contiene se repite estos se evaluar y/o se repetirn. No existe restriccin en lo que respecta a anidar un cilo de un tipo dentro de otro, es decir se puede perfectamente tener un ciclo while dentro de un cilo for o do_while. Ejemplo: El siguiente segmento generar las tablas de multiplicar del 1 al 5 for( x=1;x<=5;x++) for (y=1;y<=10;y++) printf(%d x %d = %d \n, y,x,y*x);

El ciclo que tiene como variable de control y, se encuentra anidado dentro de el ciclo que tiene como variable de control x. Este programa lee las temperaturas de los 365 das del ao cada hora #include <stdio.h> void main(void) { float temp; int dias=1, horas;

while(dias<=365) {

for( horas=1;horas<=24;horas++) { printf(Da la temperatura del da %d en la hora %d ,dias,horas); scanf(%f,&temp); } dias=dias+1; } }

En este caso se encuentra anidado dentro de un ciclo while un ciclo for.

2.4 Introduccin a arreglos.

Un arreglo se define como un grupo de datos homogneos, ordenados y finitos. Homogneos porque todos los datos almacenados en el arreglo deben ser del mismo tipo, ordenados porque se encuentran en posiciones consecutivas de memoria y finitos porque siempre debe de ser una cantidad de elementos predefinidos desde un principio. Por esta ltima razn estos tambin se definen como estructuras estticas. Los arreglos se dividen es arreglos unidimensionales (tambin conocidos como vectores) y multidimensionales dentro de los cuales los que ms manejaremos en el curso sern los de dos dimensiones (tambin conocidos como tablas o matrices). Los datos contenidos en un arreglo pueden ser cualquiera de los tipos de datos que conocemos en C, (char, flota, int, etc ), e incluso tipos de datos creados por el programador como lo seran las estructuras, las cuales se vern un poco ms adelante. Cada uno de los datos contenidos en el arreglo se conoce como elemento del arreglo y la posicin que este guarda en el mismo se maneja como subndice, estos son consecutivos y siempre inician con la posicin 0.

2.5 Arreglos unidimensionales.

Como ya se menciono anteriormente los arreglos unidimensionales tambin se conocen como vectores y como su nombre lo indica son arreglos que tienen un salo dimensin. La representacin que le damos al arreglo es la siguiente:
VECTOR_A 12.2 10.7 7.8 0 1 2 98.2 54.0 3 4

VECTOR DE 5 ELEMENTOS El elemento VECTOR_A[0] contiene 12.2, VECTOR_A[1] contiene 10.7, VECTOR_A[2] contiene 7.8, VECTOR_A[3] contiene 98.2 y VECTOR_A[4] contiene 54.0. Declaracin de arreglos unidimensionales. Tipo de dato Nombre de la variable [ dimensin ]; Donde: Tipo de dato, es cualquier tipo de dato valido en C. Nombre de la variable, el nombre que se le dar al arreglo. Dimensin, el nmero de elementos s que contendr el arreglo.

Por ejemplo: int VECTOR_A [5]; //Declaracin de un arreglo de enteros de 5 elementos.

float VECTOR_B[5]; // Declaracin de un arreglo de flotantes de 5 elementos char VECTOR_C[5][; //Declaracin de un arreglo de caracteres de 5 elementos.

char VECTOR_D[5][10]; //Declaracin de un arreglo de 5 cadenas de caracteres de una longitud de 10 cada una.

Inicializacin de vectores.

Al igual que las variables sin dimensin a los vectores tambin se les puede dar un valor inicial, la forma de hacer esto es : int VECTOR_A [5] = { 1,2,3,4,5 }; float VECTOR_B[5] = { 1.1,2.3,4,5,6.7,9.6}; char VECTOR_C[5][ = { s , d, p, #, 2}; char VECTOR_D[5][10] = { uno, dos, tres, cuatro, cinco}; En caso de que se quisiera inicializar todos los elementos del arreglo a 0 nicamente se pone: int VECTOR [5] ={0};

Acceso a los elementos de un vector:

Nombre de la variable [ posicin ]


OPERACIONES BASICAS DE UN VECTOR

Dentro de las operaciones bsicas que se efectan sobre un vector tenemos las de lectura, escritura, ordenacin y bsqueda. Lectura de los elementos de un vector: scanf(%especificador, & vector[posicin]); lgicamente, si son varios elementos se utilizar un ciclo y posicin ser un contador que se incrementar de acuerdo al nmero de elementos que tenga el arreglo.

EJEMPLO DE LECTURA DE UN VECTOR DE ENTEROS. int Vector[20]; for ( posicion=0;posicion<20;posicion++) scanf(%d,&Vector[posicin]); Escritura de los elementos de un vector:

printf(%especificador,vector[posicin]); lgicamente, si son varios elementos se utilizar un ciclo y posicin ser un contador que se incrementar de acuerdo al nmero de elementos que tenga el arreglo. EJEMPLO DE ESCRITURA DE UN VECTOR DE ENTEROS.

for ( posicion=0;posicion<20;posicion++) printf(%d,Vector[posicin]);

Bsqueda . La operacin de bsqueda es bsica en cualquier estructura de datos, esta se refiere como su nombre lo indica a buscar dentro de un grupo de datos un dato o un conjunto de datos en especial, existen diferentes tipos de bsquedas, la ms sencilla de ellas es la bsqueda lineal, que es la que se explicar a continuacin: BSQUEDA LINEAL. Esta consiste en revisar elementos por elemento el arreglo hasta encontrar el elemento a buscar, cuando este no se repite en el arreglo en el momento que se encuentra la bsqueda se puede abandonar, pero si hay ms de una ocurrencia de el elemento a buscar en el arreglo se sigue revisando el arreglo hasta llegar a la ultima posicin de ste.

EJEMPLO DE UNA BSQUEDA LINEAL CUANDO EL ELEMENTO A BUSCAR SOLO SE ENCUENTRA UNA VEZ EN EL ARREGLO. Int E_buscar, Vector[20], pos=-1, p; printf(Cual es elemento que buscas ); en E_buscar scanf(%d, &E_buscar); for(p=0;p<20;p++) //Recorres el vector desde el primer elemento hasta el ltimo if(Vector[p]==E_buscar) posicin p { pos=p; break; } if (pos==-1) //Si pos resulta ser igual a 1 no se encontro, ya que era el valor inicial y nunca se modifico, es decir no se cumplio la condicin. printf(El elemento no se encontr ); else //Si pos es diferente de 1 si lo encontro y esta en pos //si el E_buscar es igual a lo que esta en el vector en la //Guardas el elemento que buscas

//Guardas el valor de p (la posicion donde se encontr) en pos //Abandonas el ciclo

printf(El elemento se encuentra en la posicin %d, pos); EJEMPLO DE UNA BSQUEDA LINEAL CUANDO EL ELEMENTO A BUSCAR SOLO SE ENCUENTRA MAS DE UNA VEZ EN EL ARREGLO. Int E_buscar, Vector[20], p; printf(Cual es elemento que buscas ); en E_buscar scanf(%d, &E_buscar); for(p=0;p<20;p++) //Recorres el vector desde el primer elemento hasta el ltimo //Guardas el elemento que buscas

if(Vector[p]==E_buscar) //si el E_buscar es igual a lo que esta en el vector en la posicin p se imprime cuantas veces se encuentre. printf(Esta en la posicin %d \n ,p

ORDENACIN

Una de las operaciones bsicas que se aplican en vectores es la ordenacin de estos. La ordenacin consiste en reagrupar ya sea en rden ascendente o descendente los elementos del vector. Existen diferentes mtodos de ordenacin uno de ellos es el mtodo de ordenacin de la burbuja, este es cuando el nmero de elementos a ordenar es de tamao pequeo ya que el mtodo consiste en tomar el primer elemento del vector y compararlo con el resto de los elementos, de tal forma que cada que encuentra un elemento menor al que se esta comparando este se intercambia, al finalizar la primer pasada por los elementos del vector el elemento mayor del vector quedar en la ltima posicin(si la ordenacin es ascendente) , el proceso se repite con todos los dems elementos del vector hasta que ste queda ordenado. Por ejemplo si se tiene el siguiente grupo de nmeros : 23 2 56 1

Estos se quieren ordenar en forma ascendente, Primer pasada

0 1 2 3

23 2 56 1

23 > 2 si hay 0 intercambio 1 2 3

2 23 56 56>1 si intercambio 1

0 1 hay 2 3

2 23 1 56

23 23 >56 no hay 1 intercambio 56 2 1 3

Como se puede apreciar, cuando el elemento que se esta comparando es mayor que el que le sigue este se intercambia, de tal forma que el elemento mayor queda en la ltima posicin. Segunda pasada
0 1 2 3 2 2 > 23 no hay 0 intercambio 23 1 1 56 2 3 2 23 23 >1 si intercambio 1 56 0 hay 1 2 3 2 1 23 56

En esta segunda pasada, ya no se compar con el ltimo elemento, pues este ya esta ordenado. Tercera pasada

0 1 2 3

2 1 23 56

2 > 1 si hay intercambio 0 1 2 3

1 2 23 56

Al finalizar, el vector queda ordenado. Si hacemos el cdigo para este mtodo tomando K para las pasadas , j como subndice para las posiciones y N para el nmero de elementos quedara as:

For(k=1;k<N;k++) For(j=0;j<N-k;j++) If(Vector[j]>Vector[j+1])

{ aux=Vector[j]; Vector[j]=Vector[j+1]; Vector[j+1]=aux; }

2.5.1 Manipulacin de los arreglos de caracteres.

Una cadena de texto es un conjunto de caracteres, tales como <<ABCDEFG>>. C soporta cadenas de texto utilizando un array de caracteres que contenga una secuencia de caracteres: char cadena[ ] = ABCDEFG ; Es importante comprender la diferencia entre array de caracteres y una cadena de caracteres. Las cadenas contienen un carcter nulo al final del array de caracteres. Las cadenas se deben almacenar en arrays de caracteres, pero no todos los arrays de caracteres contienen cadenas. EJEMPLO: Array de caracteres:
A [0] B [1] C [2] D [3] E [4]

Cadena de caracteres:

A [0]

B [1]

C [2]

D [3]

E [4]

\0 [5]

Las cadenas se sealan incluyendo un carcter al final de la cadena: el carcter nulo (\0), cuyo valor en el cdigo ASCII es 0. El medio ms fcil de inicializar un array de caracteres es hacer la inicializacin de la declaracin:

char cadena[ 7 ] = ABCDEFG ; El compilador inserta automticamente un carcter nulo al final de la cadena, de modo que la secuencia real sera:

A [0]

B [1]

C [2]

D [3]

E [4]

F [5]

G [6]

\0 [7]

La asignacin se puede hacer tambin del siguiente modo: cadena[0]=A; cadena[1]=B; cadena[2]=C; cadena[3]=D; cadena[4]=E; cadena[5]=F; cadena[6]=G; cadena[7]=\0;

sin embargo no se puede asignar del siguiente modo: cadena= ABCDEF; Para copiar una constante cadena o copiar una variable de cadena a otra variable de cadena se debe utilizar la funcin de la biblioteca estndar - srtcpy() copiar cadenas - lo cual quedara: strcpy(cadena,ABCDEFG );

EJEMPLO

//El siguiente segmento de programa muestra una cadena de caracteres en forma vertical. char cadena[ ]=Ejemplo de manipulacin de cadenas ; int pos; for(pos=0;cadena[pos];pos++) repite printf(%c\n,cadena[pos]); // Mientras no se llegue al carcter nulo el ciclo se // Imprime cada una de los elementos de la cadena.

Cuando estamos manejando un arreglo de caracteres, este se maneja de la misma forma que los arreglo numricos, que son los que se vern a continuacin.

Funciones para la manipulacin de cadenas #include<string.h>

strlen(s1)

Regresa el numero de bytes (caracteres) en la cadena s1, no incluye el carcter nulo o fin de cadena.

strcmp(s1,s2)

strcpy(s1,s2) strcat(s1,s2)

Compara las cadenas s1 y s2, regresando un valor igual a cero, si ambas cadenas son iguales, mayor a cero, si s1 es mayor que s2 o menor que cero si s1 es menor que s2. Copia el contenido de la cadena s2 en la cadena s1, incluyendo el carcter nulo. Agrega la cadena s2, a el final de la cadena s1, eliminando de s1 el carcter nulo de fin de cadena.

Funciones para la manipulacin de caracteres #include<ctype.h>

isalnum() isalpha() isascii()

Verifica si un carcter es alfanumrico o numrico. Verifica si un carcter es alfabtico. Verifica si un carcter pertenece a los primeros 127 caracteres de la tabla ASCII.

isblank() isdigit() islower() isupper() tolower() toupper()

Verifica si un carcter es un espacio en blanco o tabulador. Verifica si un carcter es numrico. Verifica si un carcter es una letra minscula. Verifica si un carcter es una letra mayscula. Convierte una letra a su correspondiente minscula. Convierte una letra a su correspondiente mayscula.

2.5.3 Operaciones con arreglos numricos.

Ya se vio antes como declarar, inicializar y accesar a los elementos de arreglo unidimensional , ahora se mostrarn operaciones bsicas con arreglos unidimensionales. EJEMPLO /* El siguiente programa lee un vector de 10 elementos y solo imprime los elementos del vector que sean mayores a la media */ #include <stdio.h> main() { int vector[10], suma=0, prom, x; //Llenado del arreglo for(x=0;x<10;x++) { printf(Teclea el elemento de la posicin %d ,x); scanf(%d,&vector[x]); suma+=vector[x]; } prom=suma/10;

//Impresin de los elementos mayores a la media for(x=0;x<10;x++) if(vector[x]>prom) printf(%d es mayor a la media , vector[x]); } En el segundo ciclo al mismo tiempo que estamos viendo como mostrar el contenido de un vector, estamos realizando una bsqueda lineal tomando como base el promedio, hacemos una revisin del vector y en el momento que se cumple la condicin se imprime el contenido del vector, si no existiera esta condicin se mostraran todos los elementos del vector.
2.6 Arreglos bidimensionales.

Como ya se menciono antes, estos tambin se conocen como matrices o tablas, estos son arreglos que tienen 2 dimensiones. La declaracin de estos es similar a los de una sola dimensin pero por lgica estodebern de tener 2 dimensiones. Declaracin: Tipo de dato Nombre de la variable [indice del rengln] [ indicie de la columna]; EJEMPLO: int MATRIZ_A [5][2]; columnas. //Declaracin de un arreglo de enteros de 5 renglones por 2

float MATRIZ_B[5][2]; // Declaracin de un arreglo de flotantes de 5 renglones por 2 columnas. char MATRIZ_C[5][2]; //Declaracin de un arreglo de caracteres de 5 renglones por 2 columnas. char MATRIZ_D[5][10]; //Declaracin de un arreglo de 5 cadenas de caracteres por 2 columnas de una longitud de 10 cada una. La representacin de un arreglo bidimensional es como sigue:

MATRIZ
0 1 2 3 4 0 12 34 5 43 51 1 3 6 56 4 5

Los elementos de MATRIZ son:


MATRIZ[0][0] es igual a 12, MATRIZ[0][1] es igual a 3, MATRIZ[1][0] es igual a 34, MATRIZ[1][1] es igual a 6, MATRIZ[2][0] es igual a 5, MATRIZ [2][1] es igual a 56, MATRIZ [3][0] es igual a 43, MATRIZ [3][1] es igual a 4, MATRIZ [4][0] es igual a 51, MATRIZ[4][1] es igual a 5. Cuando un arreglo bidimensional tiene el mismo nmero de renglones y columnas, se dice que es una matriz cuadrada.

Inicializacin de arreglos bidimensionales. Estos se pueden inicializar al igual que los de una sola dimensin, cuando se declaran. La inicializacin consta de una lista de constantes separadas por comas y encerradas entre llaves, como en el siguiente ejemplo: int MATRIZ[2][3] = { 51,52,53,54,55,56}; o bien ms amigables: int MATRIZ[2][3] = { {51,52,53}, {54,55,56} }; y como ya sabe, los caracteres sern entre apostrofes y las cadenas entre comillas. Acceso a los elementos de los arreglos bidimensionales. Se puede acceder a los elementos del arreglo bidimensional de igual forma que los elementos de una arreglo unidimensional. La diferencia reside en que los elementos bidimensionales deben especificarse los ndices de la fila y la columna.

El formato general es: Nombre de la variable [rengln] [columna] = valor; Valor = Nombre de la variable [rengln] [columna]; EJEMPLO: MATRIZ[0][0] = 34; VALOR = MATRIZ[1][2]; Lectura y escritura de los elementos de los arreglos bidimensionales. Esta se puede hacer de elemento por elemento, pero esto resultara poco practico, es por eso que por lo general nos auxiliamos de ciclos anidados para esto. Si lo hacemos sin ciclos: int MATRIZ[2][2]; //Lectura: printf(Teclea el valor del elemento [0][0] de la MATRIZ ); scanf(%d, &MATRIZ[0][0]); //Escritura: printf (El elemento [0][0] de la MATRIZ es %d, MATRIZ[0][0]);

Si utilizamos ciclos: int renglon, columna, MATRIZ[2][3]; //Lectura de la matriz for (rengln=0;rengln<2;rengln++) for(columna=0;columna<3;columna++)

{ printf(Teclea el valor del elemento [%d][%d] , rengln,columna); scanf(%d,&MATRIZ[rengln][columna]); } //Escritura de la matriz for (rengln=0;rengln<2;rengln++) for(columna=0;columna<3;columna++) printf(%d es el elemento [%d][%d] MATRIZ[rengln][columna],rengln,columna);
2.7 Arreglos multidimensionales.

de la MATRIZ,

Los arreglos multidimensionales son aquellos que tienen ms de una dimensin, dentro de estos se encuentran los arreglos bidimensionales. La declaracin, inicializacin y acceso es igual a las mencionadas anteriormente en los vectores y matrices, solo que en este caso depender de las dimensiones que se estn manejando. EJEMPLO DE UN ARREGLO DE 3 DIMENSIONES. int x,y,z,ARREGLO[2][3][4]; //Lectura for(x=0;x<2;x++) for(y=0;y<3;y++) for(z=0;z<4;z++) { printf(Teclea el valor del elemento [%d][%d][%d] , x,y,z);

scanf(%d,&ARREGLO[x][y][z]]); }

//Escritura for(x=0;x<2;x++) for(y=0;y<3;y++) for(z=0;z<4;z++) printf(%d es el valor del elemento [%d][%d][%d] ,ARREGLO[x][y][z], x,y,z);

Pgina elaborada por : Ing. Eva Herrera Ramrez Bibliografa: Programacin en C de Luis Joyanes

También podría gustarte