Aprendiendo C (6ta Parte)
2007-11-17 11:43:10-06
Software
Comencemos con un ejemplo mas o menos sencillo:
#include<stdio.h>
#include<ctype.h>/*biblioteca que proporciona la funcion tolower*/
int main()/*inicio funcion principal*/
{
int A1[][3]={{1,2,3},{0,9,8},{5,6,4}};
int A2[][3]={{9,10,31415},{217,3000,2},{}};
int i,j,n,m;
char c;
printf("\n\nMenu\nMostrar arreglo A1 y A2->a\n");
printf("Crear y mostrar nuevo arreglo->b\n\n");
scanf("%c", &c);
c=tolower(c);/*cambiamos a minusculas*/
switch(c)
{
case 'a':
printf("A1:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",A1[i][j]);
printf("\n");
}
printf("\n\nA2:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d2 1º",A2[i][j]);
printf("\n");
}
break;
case 'b':
{
printf("Introduce 2 numeros enteros");
scanf("%d %d", &m, &n);
int B[m][n];
printf("Introduce %d elementos\n",m*n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&B[i][j]);
printf("El arreglo que introduciste es:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d ",B[i][j]);
printf("\n");
}
}
break;
default:
printf("Entrada no valida\n");
break;
}
return 0;
}//fin funcion principal
Entre las cosas nuevas que encontraremos en este programa están los arreglos bidimencionales, tememos la declaración y asignación de valor de A1 y A2, para denotar cada fila se usa un par de llaves "{}", observa que A2 tienen el ultimo grupo de llaves vacío, el compilador les asignara el valor 0 a todos los componentes de esa fila, así cuando desees un arreglo con todos sus valores 0 puedes declarlo como Arreglo[tamaño]={0}; darle valor al primer elemento es necesario.
Los arreglos bidimencionales son muy utiles para representar tablas, grafos, matrices, etc. y son una facilidad de la programacion, al igual que los arreglos de una dimensión, son estructuras de datos que tienen un mismo tipo y que estan ordenados en posiciones contiguas de memoria,en la declaracion de A1 y A2 nota que solo declare el numero de filas (3), esto es porque C require sabes cuantas posiciones debe recorrer antes de aumentar una fila, pues todos los datos estan "alineados" en memoria.
Tenemos una estructura de control nueva switch(), Esta toma el valor de su argumento que puede ser un entero o un char y busca entre los casos (case) para ejecutar una acción, normalmente existe una expresión default que se realiza en caso de que la entrada no coincida con ningún caso. esta expresión default es opcional. tambien es de notarse que cada caso termina con "break", esto sale de switch y continua ejecutando la instruccion despues de la llave del cierre de switch. en el ultimo caso o caso default al final de switch no es necesario poner el break,pero es mejor ponerlo por claridad. la estructura basica es :
switch(Variable entera o char)
{
case var1:
instruciones
break
case var2:
instruciones
break::
case var3:
instruciones
break:
......
default:
instruciones
break:
}
Tambien tenemos el uso de la función tolower() de la biblioteca estandar ctype.h, esta funcion tomauncaracter y lo convierte a minuscula si es mayuscula, de lo contrario devuelve el mismo caracter. existe su contrario que va de minusculas a mayusculas, esta función se llama toupper() y se utiliza de la misma manera.
Existen muchas funciones en diversas bibliotecas que son parte del estandar ASCI,aun no se como presentare dichas funciones, de momento usare algunas y explicare su uso y biblioteca que contiene su "prototipo". En la literatura técnica primero se enseñan las funciones y luego los arreglos, supongo que con fines pedagogicos. veremos funciones en la siguiente entrada.
Hoy vimos:
1.-Declaración de arreglos Bidimencionales.
2.-Recorrido de arreglos bidimencionales.
3.-Instrucción switch..case..default
4.-Casos especiales de uso de switch.
5.-Función tolower y toupper.
Dudas en los comentarios.
Nota: El programa presentado esta escrito de una manera "poco practica", esto con fines de hacer versiones mejoradas de el.
#include<stdio.h>
#include<ctype.h>/*biblioteca que proporciona la funcion tolower*/
int main()/*inicio funcion principal*/
{
int A1[][3]={{1,2,3},{0,9,8},{5,6,4}};
int A2[][3]={{9,10,31415},{217,3000,2},{}};
int i,j,n,m;
char c;
printf("\n\nMenu\nMostrar arreglo A1 y A2->a\n");
printf("Crear y mostrar nuevo arreglo->b\n\n");
scanf("%c", &c);
c=tolower(c);/*cambiamos a minusculas*/
switch(c)
{
case 'a':
printf("A1:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",A1[i][j]);
printf("\n");
}
printf("\n\nA2:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d2 1º",A2[i][j]);
printf("\n");
}
break;
case 'b':
{
printf("Introduce 2 numeros enteros");
scanf("%d %d", &m, &n);
int B[m][n];
printf("Introduce %d elementos\n",m*n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&B[i][j]);
printf("El arreglo que introduciste es:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d ",B[i][j]);
printf("\n");
}
}
break;
default:
printf("Entrada no valida\n");
break;
}
return 0;
}//fin funcion principal
Entre las cosas nuevas que encontraremos en este programa están los arreglos bidimencionales, tememos la declaración y asignación de valor de A1 y A2, para denotar cada fila se usa un par de llaves "{}", observa que A2 tienen el ultimo grupo de llaves vacío, el compilador les asignara el valor 0 a todos los componentes de esa fila, así cuando desees un arreglo con todos sus valores 0 puedes declarlo como Arreglo[tamaño]={0}; darle valor al primer elemento es necesario.
Los arreglos bidimencionales son muy utiles para representar tablas, grafos, matrices, etc. y son una facilidad de la programacion, al igual que los arreglos de una dimensión, son estructuras de datos que tienen un mismo tipo y que estan ordenados en posiciones contiguas de memoria,en la declaracion de A1 y A2 nota que solo declare el numero de filas (3), esto es porque C require sabes cuantas posiciones debe recorrer antes de aumentar una fila, pues todos los datos estan "alineados" en memoria.
Tenemos una estructura de control nueva switch(), Esta toma el valor de su argumento que puede ser un entero o un char y busca entre los casos (case) para ejecutar una acción, normalmente existe una expresión default que se realiza en caso de que la entrada no coincida con ningún caso. esta expresión default es opcional. tambien es de notarse que cada caso termina con "break", esto sale de switch y continua ejecutando la instruccion despues de la llave del cierre de switch. en el ultimo caso o caso default al final de switch no es necesario poner el break,pero es mejor ponerlo por claridad. la estructura basica es :
switch(Variable entera o char)
{
case var1:
instruciones
break
case var2:
instruciones
break::
case var3:
instruciones
break:
......
default:
instruciones
break:
}
Tambien tenemos el uso de la función tolower() de la biblioteca estandar ctype.h, esta funcion tomauncaracter y lo convierte a minuscula si es mayuscula, de lo contrario devuelve el mismo caracter. existe su contrario que va de minusculas a mayusculas, esta función se llama toupper() y se utiliza de la misma manera.
Existen muchas funciones en diversas bibliotecas que son parte del estandar ASCI,aun no se como presentare dichas funciones, de momento usare algunas y explicare su uso y biblioteca que contiene su "prototipo". En la literatura técnica primero se enseñan las funciones y luego los arreglos, supongo que con fines pedagogicos. veremos funciones en la siguiente entrada.
Hoy vimos:
1.-Declaración de arreglos Bidimencionales.
2.-Recorrido de arreglos bidimencionales.
3.-Instrucción switch..case..default
4.-Casos especiales de uso de switch.
5.-Función tolower y toupper.
Dudas en los comentarios.
Nota: El programa presentado esta escrito de una manera "poco practica", esto con fines de hacer versiones mejoradas de el.
Permalink: http://www.mononeurona.org/users/entry/vendaval/954
Comentblogs:1.-
alucard_thot wrote:
Creo que tienes pequeños detallitos en ortografÃa.
* dimencionales -> dimensionales.
* tomauncaracter -> toma un caracter
* utiles -> útiles
* practica -> práctica
:P creo que hay más, pero nada más le pasé una vez el ojo encima.
En cuanto a las declaraciones en medio del código, como la matriz B, se supone que no todos los compiladores que implementan el ANSI C lo soportan, me parece que eso está soportado pero en el estándar de C++.
Saludos.
2007-11-18 10:36:10-06
Creo que tienes pequeños detallitos en ortografÃa.
* dimencionales -> dimensionales.
* tomauncaracter -> toma un caracter
* utiles -> útiles
* practica -> práctica
:P creo que hay más, pero nada más le pasé una vez el ojo encima.
En cuanto a las declaraciones en medio del código, como la matriz B, se supone que no todos los compiladores que implementan el ANSI C lo soportan, me parece que eso está soportado pero en el estándar de C++.
Saludos.
2007-11-18 10:36:10-06
2.-
el buen George wrote:
Sé que este no es un foro, ni me duda, la cual plantearé en unos momentos, no tiene nada que ver con el tema me disculpo por ello, me preguntaba que tan mal o bueno es el procesador VIA C7 1.5 Ghz. tengo una vieja pc, tiene seis años a cuestas, Pentium III a 1 Ghz y 440 en ram y una modesta gráfica Nvidia, leà por aquà acerca del procesador VIA C7 y sus beneficios al ahorrar energÃa y me preguntaba, dada mi precaria situación económica, si es conveniente hacerse con un kit de actualización de éste fabricante? y si este procesador puede equipararse a algún procesador celeron o sempron, leà también en algún lado que el VIA C7 puede compararse con un procesador Pentium, cosa que no me creo… ´Saludos.
2007-11-21 12:00:23-06
Sé que este no es un foro, ni me duda, la cual plantearé en unos momentos, no tiene nada que ver con el tema me disculpo por ello, me preguntaba que tan mal o bueno es el procesador VIA C7 1.5 Ghz. tengo una vieja pc, tiene seis años a cuestas, Pentium III a 1 Ghz y 440 en ram y una modesta gráfica Nvidia, leà por aquà acerca del procesador VIA C7 y sus beneficios al ahorrar energÃa y me preguntaba, dada mi precaria situación económica, si es conveniente hacerse con un kit de actualización de éste fabricante? y si este procesador puede equipararse a algún procesador celeron o sempron, leà también en algún lado que el VIA C7 puede compararse con un procesador Pentium, cosa que no me creo… ´Saludos.
2007-11-21 12:00:23-06
3.-
vendaval wrote:
@Thot. perdon prometo arreglarlo pronto.
@El Buen George: Un procesador VIA C7 con todo lo que tiene es muy superiror a un viejo pentium 1,2 me atrevo a decir 3. la tecnologias es:
1.-Mas nueva.
2.-Mas ahorrador de energÃa.
3.-Seguridad y criptografia por hardware.
Gracias por preguntar, para eso estamos.
2007-11-21 14:07:53-06
@Thot. perdon prometo arreglarlo pronto.
@El Buen George: Un procesador VIA C7 con todo lo que tiene es muy superiror a un viejo pentium 1,2 me atrevo a decir 3. la tecnologias es:
1.-Mas nueva.
2.-Mas ahorrador de energÃa.
3.-Seguridad y criptografia por hardware.
Gracias por preguntar, para eso estamos.
2007-11-21 14:07:53-06
4.-
el buen George wrote:
Mmmm... siguiendo con mis dudas, que me recomendarÃas un sempron, un celeron o un VIA C7 1.5 Ghz, éste último escalable, tengo entendido hasta 1.8 ghz., vamos, yo soy un usuario que no necesita un equipo poderoso como los de doble núcleo, basta con que la ofimática, las pelis, el chat e inter anden fluidamente... por un precio razonable, es mucho pedir? un abrazo.
2007-11-21 17:56:50-06
Mmmm... siguiendo con mis dudas, que me recomendarÃas un sempron, un celeron o un VIA C7 1.5 Ghz, éste último escalable, tengo entendido hasta 1.8 ghz., vamos, yo soy un usuario que no necesita un equipo poderoso como los de doble núcleo, basta con que la ofimática, las pelis, el chat e inter anden fluidamente... por un precio razonable, es mucho pedir? un abrazo.
2007-11-21 17:56:50-06
5.-
el buen George wrote:
Por cierto donde leà (no recuerdo el foro) que el c7 era comparable con un pentium, intuyo que se referian a un PIV de los primeros y obviamente cuando preguntaba si eran equiparables a un sempron o un celeron, lo digo porque tengo entendido que éstos últimos no son procesadores muy eficientes... que digamos...
2007-11-21 18:02:40-06
Por cierto donde leà (no recuerdo el foro) que el c7 era comparable con un pentium, intuyo que se referian a un PIV de los primeros y obviamente cuando preguntaba si eran equiparables a un sempron o un celeron, lo digo porque tengo entendido que éstos últimos no son procesadores muy eficientes... que digamos...
2007-11-21 18:02:40-06










