Índice
1. Vocabulario de C
2. Sintaxis de C (I)
3. Sintaxis de C (II)
4. Funciones y métodos
5. Librerías
6. Ejercicios
7. Dirección de memoria y punteros
8. Ejercicios
9. Arrays y cadenas de caracteres
Ir a menú principal
Aprende a programar desde cero. No hace falta que tengas ningún conocimiento de programación. Aunque si deberías saber manejar lo básico de un sistema operativo como Windows o GNU/Linux (Crear carpetas, archivos de texto plano e instalar programas). Espero que este tutorial sirva a mucha gente para saciar su deseo de aprender a programar. ¡Buena suerte!
Mostrando entradas con la etiqueta c. Mostrar todas las entradas
Mostrando entradas con la etiqueta c. Mostrar todas las entradas
domingo, 28 de octubre de 2012
7. Dirección de memoria y punteros en C
Dirección de memoria
Las variables hacen referencia a una parcela de la memoria (celda) que ha sido reservada.
A estas celdas, se les asigna una dirección de memoria. Se usan variables porque es mas fácil recordar un nombre que un número.
La dirección de memoria es un número binario, que es lo que entiende la computadora. Por facilidad, se suele expresar en hexadecimal.
Una variable hace referencia a una dirección de memoria y, una dirección de memoria hace referencia a una celda.
Las variables facilitan el uso de la memoria. Con ellas no hay que preocuparse de las direcciones. Sin embargo, hay casos en los que se necesita usar las direcciones de memoria.
Punteros
Un puntero es una variable especial.
Cuando se asigna un dato en una variable (precio_pan = 1;), el lenguaje se encarga de ir a la dirección de memoria y almacenarlo en esa celda. Por lo que la gestión de la memoria, se hace de forma automática.
Al declarar variables con el mismo nombre en distintos bloques de código, cada una hace referencia a una dirección de memoria distinta. Por eso los datos que almacenan no se corresponden y, cuando introducimos en una función (o método) unos datos sólo llega el valor, no las variables.
Para trabajar con la misma celda y poder cambiar su valor, se debe introducir en la función la dirección de memoria a la que hace referencia una variable, en vez de el dato.
Para poder usar esa dirección de memoria se necesita una variable especial que almacena direcciones de memoria, llamadas punteros (apuntan a una dirección de memoria). Son variables y tienen tipos de datos (int, char, float). La diferencia es que su valor es una dirección de memoria.
Para obtener la dirección de memoria a la que hace referencia una variable, se usa el operador referencia '&' (puntero = &precio_pan;). Para declarar un puntero, se antepone el carácter '*' (int *puntero;). Un puntero tiene tipo de dato y sólo puede apuntar a una celda que tenga su tipo de dato. Además, para acceder al valor desde el puntero, también se usa el operador '*' (*puntero = 1;).
En la librería 'stdio.h' también hay funciones de entrada. La mas utilizada para leer desde el teclado es scanf.
Permite obtener el dato que ha introducido el usuario por teclado y lo introduce en una variable (o en varias variables).
Normalmente sólo se lee un dato por cada función scanf. La cadena de formato es similar a la cadena de formato de la función printf. Si se quiere leer un número entero, %i; decimal, %f; carácter, %c. Es un error común olvidar el carácter '&' antes de la variable, lo que provoca un error de asignación de tipo.
Al pedir un dato al usuario, es conveniente indicarle con un mensaje de texto qué debe introducir.
< Página anterior - Siguiente página (En proceso) >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
Las variables hacen referencia a una parcela de la memoria (celda) que ha sido reservada.
A estas celdas, se les asigna una dirección de memoria. Se usan variables porque es mas fácil recordar un nombre que un número.
La dirección de memoria es un número binario, que es lo que entiende la computadora. Por facilidad, se suele expresar en hexadecimal.
Una variable hace referencia a una dirección de memoria y, una dirección de memoria hace referencia a una celda.
Las variables facilitan el uso de la memoria. Con ellas no hay que preocuparse de las direcciones. Sin embargo, hay casos en los que se necesita usar las direcciones de memoria.
Punteros
Un puntero es una variable especial.
Cuando se asigna un dato en una variable (precio_pan = 1;), el lenguaje se encarga de ir a la dirección de memoria y almacenarlo en esa celda. Por lo que la gestión de la memoria, se hace de forma automática.
Al declarar variables con el mismo nombre en distintos bloques de código, cada una hace referencia a una dirección de memoria distinta. Por eso los datos que almacenan no se corresponden y, cuando introducimos en una función (o método) unos datos sólo llega el valor, no las variables.
Para trabajar con la misma celda y poder cambiar su valor, se debe introducir en la función la dirección de memoria a la que hace referencia una variable, en vez de el dato.
Para poder usar esa dirección de memoria se necesita una variable especial que almacena direcciones de memoria, llamadas punteros (apuntan a una dirección de memoria). Son variables y tienen tipos de datos (int, char, float). La diferencia es que su valor es una dirección de memoria.
Para obtener la dirección de memoria a la que hace referencia una variable, se usa el operador referencia '&' (puntero = &precio_pan;). Para declarar un puntero, se antepone el carácter '*' (int *puntero;). Un puntero tiene tipo de dato y sólo puede apuntar a una celda que tenga su tipo de dato. Además, para acceder al valor desde el puntero, también se usa el operador '*' (*puntero = 1;).
Para poder manipular la misma celda de memoria dentro de varias funciones, se usan punteros:int precio_pan = 0; int *puntero; puntero = &precio_pan; precio_pan++; *puntero++;Nota: Al final, el valor que contiene la variable 'precio_pan' es 2.
void suma(int numero1, int numero2, int *puntero) {
*puntero = numero1 + numero2;
}
int main(int argc, char *argv[]) {
int resultado;
suma( 2, 2, &resultado );
return 1;
}
Nota: Para cambiar el valor de la variable 'resultado' (ámbito main) dentro del método suma, se envía a la función su dirección de memoria. Ésta se almacena en un puntero y, haciendo uso del operador apuntar '*' sobre la variable 'puntero' (*puntero) se puede cambiar el valor de la variable 'resultado' dentro de la función suma.
- Vídeos explicativos
- Si quieres programar en Gnu/Linux. (Próximamente)
- Si quieres programar en Windows. (Próximamente)
En la librería 'stdio.h' también hay funciones de entrada. La mas utilizada para leer desde el teclado es scanf.
Permite obtener el dato que ha introducido el usuario por teclado y lo introduce en una variable (o en varias variables).
Esta función recibe como mínimo 2 argumentos, una cadena de formato (texto estático, entre comillas dobles) y la dirección de memoria de una variable en la que almacenar el dato. Si se quieren leer 3 datos, la función debe recibir 4 argumentos: la cadena de formato y 3 direcciones de memoria.int edad; scanf( "%i", &edad );
Normalmente sólo se lee un dato por cada función scanf. La cadena de formato es similar a la cadena de formato de la función printf. Si se quiere leer un número entero, %i; decimal, %f; carácter, %c. Es un error común olvidar el carácter '&' antes de la variable, lo que provoca un error de asignación de tipo.
Al pedir un dato al usuario, es conveniente indicarle con un mensaje de texto qué debe introducir.
float peso; printf( "Introduce tu peso en kg: " ); scanf( "%f", &peso );
- Vídeos explicativos
- Si quieres programar en Gnu/Linux. (Próximamente)
- Si quieres programar en Windows. (Próximamente)
< Página anterior - Siguiente página (En proceso) >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
miércoles, 5 de octubre de 2011
6. Ejercicios de lenguaje C (I)
Ejercicios de lenguaje C
Se plantean ejercicios con su solución propuesta para realizar. Es responsabilidad del lector hacer un uso didáctico de los ejercicios. Esto quiere decir que si copias la solución sin mas, no aprenderás el concepto que trata el ejercicio.
Además, las soluciones propuestas no son las únicas soluciones válidas. La solución mostrada es simplemente la que se considera mas didáctica. Por lo que el lector puede encontrar otra solución. De hecho, encontrar otra solución sería ideal para demostrar que ha comprendido el concepto.
Ejercicio 1: Muestra un texto estático.
Solución:
Ejercicio 2: Muestra dos líneas de texto estático.
Solución:
Ejercicio 3: Muestra el valor de una variable.
Solución:
No hace falta mostrar el texto estático. Pero, si no lo hacemos, sólo aparecerá en pantalla el número. Queda mejor si le añadimos un texto que nos indique lo que estamos mostrando.
Aunque se utilicen dos funciones printf, no se dibujan dos líneas. Para dibujarlo en dos líneas, deberíamos indicarle la secuencia de escape '\n'.
Ejercicio 4: Escribe un programa que muestre el tamaño en bytes (1 byte son 8 bits) de las variables de tipo char, int y float.
Solución:
sizeof es la única función que viene por defecto en el lenguaje C. No hace falta incluir ninguna librería.
Ejercicio 5: Escribe un programa que muestre la suma de dos números que estén almacenados en variables.
Solución:
Solución:
Se puede usar como argumento de la función una operación (o incluso otra función) y, el resultado de ésta será el valor que se envíe a la función.
Ejercicio 7: Escribe un programa que compruebe y muestre si dos números almacenados en variables son iguales.
Solución:
Solución:
Los números pares son múltiplos de 2. Si dividimos entre 2 un número par, el resto es 0. Si dividimos entre 2 un número impar, el resto es distinto de 0.
En C, el operador para calcular el cociente de la división es '/' y el operador para calcular el resto de la división es '%' (Válido para operaciones entre enteros (int). Si divides números enteros, el cociente es entero. Si necesitas el cociente con decimales, usa tipo float).
Ejercicio 9: Escribe un programa que muestre los números pares que hay entre el 2 y el 10.
Solución:
El bucle for empieza con el número 2 y, se repite mientras 'numero' sea menor o igual que 10 (termina con el número 10), contando de 1 en 1.
Si el número es par, lo muestra.
Ejercicio 10: Escribe un programa que calcule y muestre la suma de los 100 primeros números naturales.
Solución:
Solución:
Solución:
Solución:
Solución:
Solución:
Solución:
Solución:
Solución:
0+100, 1+99, 2+98, ... 50+50.
Solución:
Solución:
Solución:
< Página anterior - Siguiente página >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
Se plantean ejercicios con su solución propuesta para realizar. Es responsabilidad del lector hacer un uso didáctico de los ejercicios. Esto quiere decir que si copias la solución sin mas, no aprenderás el concepto que trata el ejercicio.
Además, las soluciones propuestas no son las únicas soluciones válidas. La solución mostrada es simplemente la que se considera mas didáctica. Por lo que el lector puede encontrar otra solución. De hecho, encontrar otra solución sería ideal para demostrar que ha comprendido el concepto.
Ejercicio 1: Muestra un texto estático.
Solución:
#include <stdio.h>
int main (int argc, int *argv[]) {
printf("Este texto es fijo.");
return 1;
}
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
Ejercicio 2: Muestra dos líneas de texto estático.
Solución:
#include <stdio.h>
int main (int argc, int *argv[]) {
printf("Primera linea.");
printf("\n");
printf("Segunda linea");
printf("\n");
return 1;
}
Nota: La computadora no sabe cuando acaba una línea y empieza otra. Debemos indicarle que empiece una nueva línea con la secuencia de escape '\n'.Ejercicio 3: Muestra el valor de una variable.
Solución:
#include <stdio.h>
int main (int argc, int *argv[]) {
int numero = 5;
printf("Valor de la variable: ");
printf("%i", numero);
printf("\n");
return 1;
}
Notas:No hace falta mostrar el texto estático. Pero, si no lo hacemos, sólo aparecerá en pantalla el número. Queda mejor si le añadimos un texto que nos indique lo que estamos mostrando.
Aunque se utilicen dos funciones printf, no se dibujan dos líneas. Para dibujarlo en dos líneas, deberíamos indicarle la secuencia de escape '\n'.
Ejercicio 4: Escribe un programa que muestre el tamaño en bytes (1 byte son 8 bits) de las variables de tipo char, int y float.
Solución:
#include <stdio.h>
int main(int argc, int *argv[]) {
int caracter = sizeof(char), entero = sizeof(int), decimal = sizeof(float);
printf( "Espacio en bytes: \n" );
printf( "char -> %i bytes. \n", caracter );
printf( "int -> %i bytes. \n", entero );
printf( "float -> %i bytes.\n", decimal );
return 1;
}
Notas:sizeof es la única función que viene por defecto en el lenguaje C. No hace falta incluir ninguna librería.
Ejercicio 5: Escribe un programa que muestre la suma de dos números que estén almacenados en variables.
Solución:
#include <stdio.h>
int main (int argc, int *argv[]) {
int x = 9, y = 5, resultado;
resultado = x + y;
printf( "Suma: %i + %i = %i \n", x, y, resultado );
return 1;
}
Ejercicio 6: Escribe un programa que muestre la diferencia, producto y división de dos números que estén almacenados en variables.
Solución:
#include <stdio.h>
int main (int argc, int *argv[]) {
int a = 6, b = 2;
printf( "Operaciones: \n" );
printf( "%i - %i = %i \n", a, b, a - b );
printf( "%i * %i = %i \n", a, b, a * b );
printf( "%i / %i = %i \n", a, b, a / b );
return 1;
}
Notas:Se puede usar como argumento de la función una operación (o incluso otra función) y, el resultado de ésta será el valor que se envíe a la función.
Ejercicio 7: Escribe un programa que compruebe y muestre si dos números almacenados en variables son iguales.
Solución:
#include <stdio.h>
int main (int argc, int *argv[]) {
int x = 2, y = 3;
if( x == y ) {
printf( "%i es igual a %i. \n", x, y );
} else {
printf( "%i es distinto a %i. \n", x, y );
}
return 1;
}
Ejercicio 8: Escribe un programa que compruebe y muestre si un número almacenado en una variable es par o impar.
Solución:
#include <stdio.h>
int main (int argc, int *argv[]) {
int x = 6;
if( x % 2 == 0 ) {
printf( "%i es par. \n", x );
} else {
printf( "%i es impar. \n", x );
}
return 1;
}
Notas:Los números pares son múltiplos de 2. Si dividimos entre 2 un número par, el resto es 0. Si dividimos entre 2 un número impar, el resto es distinto de 0.
En C, el operador para calcular el cociente de la división es '/' y el operador para calcular el resto de la división es '%' (Válido para operaciones entre enteros (int). Si divides números enteros, el cociente es entero. Si necesitas el cociente con decimales, usa tipo float).
Ejercicio 9: Escribe un programa que muestre los números pares que hay entre el 2 y el 10.
Solución:
#include <stdio.h>
int main (int argc, int *argv[]) {
int numero;
printf( "Pares entre 2 y 10: \n" );
for( numero = 2; numero <= 10; numero++ ) {
if( numero % 2 == 0 ) {
printf( "%i \n", numero );
}
}
return 1;
}
Notas:El bucle for empieza con el número 2 y, se repite mientras 'numero' sea menor o igual que 10 (termina con el número 10), contando de 1 en 1.
Si el número es par, lo muestra.
Ejercicio 10: Escribe un programa que calcule y muestre la suma de los 100 primeros números naturales.
Solución:
Ejercicio 11: Escribe un programa que calcule y muestre la suma de los números pares que hay entre 1 y 100 y, también la suma de los números impares que hay entre 1 y 100.#include <stdio.h> int main (int argc, int *argv[]) { int sumador = 0, numero; for( numero = 1; numero <= 100; numero++ ) { sumador = sumador + numero; } printf( "Total: %i \n", sumador ); return 1; }
Nota: Cuando se usa una variable para realizar sobre ella operaciones de suma, se le llama 'sumador o acumulador'. Esta operación es muy común y puede realizarse con menos caracteres usando el operador asignación-suma (+=) -> 'sumador += numero;'. Además, hay que recordar inicializar la variable a 0 antes de realizar la operación, ya que el valor que tienen por defecto las variables en C es el valor que dejó en la celda el último programa que usó esa celda.
Solución:
#include <stdio.h>
int main( int argc, int *argv[] ) {
int numero, pares=0, impares=0;
for( numero = 1; numero <= 100; numero++ ) {
if ( numero % 2 == 0 ) {
pares += numero;
} else {
impares += numero;
}
}
printf( "Pares: %i \n", pares );
printf( "Impares: %i \n", impares );
return 1;
}
Ejercicio 12: Escribe un programa que muestre la tabla de multiplicar del 1 al 9, de los diez primeros números naturales.Solución:
#include <stdio.h>
int main( int argc, int *argv[] ) {
int numero, multiplicando;
for( numero = 1; numero <= 10; numero++ ) {
for( multiplicando = 1; multiplicando <= 9; multiplicando++ ) {
printf( "%i * %i = %i \n", numero, multiplicando, numero * multiplicando );
}
printf( "\n" );
}
return 1;
}
Ejercicio 13: Escribe un programa que calcule y muestre la suma de los múltiplos de 5 que hay entre 1 y 100 y, cuántos múltiplos de 5 hay entre 1 y 100.Solución:
Ejercicio 14: Escribe un programa que calcule la ecuación 'y = x^3 + 8*x^2 + 3*x' usando como valores de x los múltiplos de 3 entre el 9 y el 60. El carácter '^' indica potencia (elevado a), pero ese operador no existe en C.#include <stdio.h> int main( int argc, int *argv[] ) { int sumador = 0, contador=0, numero; for( numero = 5; numero <= 100; numero += 5 ) { sumador += numero; contador++; } printf( "Hay %i multiplos. \n", contador ); printf( "Su suma es: %i \n", sumador ); return 1; }
Nota: En vez de contar de uno en uno y comprobar si es múltiplo de 5 (numero % 5 ==0) se cuenta de 5 en 5, que es mas eficiente.
Cuando una variable se incremente de uno en uno para contar, se le llama contador. Y es común usar para ello el operador pre-incremento (++contador) o post-incremento (contador++).
Solución:
Ejercicio 15: Escribe un programa que muestre un número decimal sólo con dos decimales. Por defecto, se muestran 6 decimales.#include <stdio.h> int main( int argc, int *argv[] ) { int x, y; printf( "y = x^3 + 8*x^2 + 3*x \n\n" ); for( x = 9; x <= 60; x += 3) { y = x*x*x + 8*x*x + 3*x; printf("%i = %i^3 + 8*%i^2 + 3*%i \n", y, x, x, x); } return 1; }
Nota: El bucle for recorre los múltiplos de 3 entre 9 y 60. La operación potencia se descompone en producto.
Solución:
Ejercicio 16: Escribe un programa que dibuje un rectángulo con '*'. El rectángulo debe tener 12 caracteres de ancho y 6 caracteres de alto.#include <stdio.h> int main( int argc, int *argv[] ) { printf( "%.2f \n", 0.123456 ); return 1; }
Nota: La función printf permite indicar cuántos decimales mostrar. Se indica entre los caracteres '%f' con un punto seguido del número de decimales (.2).
Solución:
#include <stdio.h>
int main( int argc, int *argv[] ) {
printf("************\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("************\n");
return 1;
}
Ejercicio 17: Escribe un programa que dibuje un rectángulo con '*'. Debe poder dibujarlo para cualquier ancho y alto.Solución:
Ejercicio 18: Escribe un programa que muestre los caracteres y su valor ASCII de los primeros 255 caracteres de la tabla ASCII.#include <stdio.h> int main( int argc, int *argv[] ) { int ancho = 6, alto = 4, i, j; // Lado superior. for( i = 1; i <= ancho; i++ ) { printf("*"); } printf("\n"); // Relleno. for( j = 2; j < alto; j++ ) { printf("*"); for( i = 2; i < ancho; i++ ) { printf(" "); } printf("*\n"); } // Lado inferior. for( i = 1; i <= ancho; i++ ) { printf("*"); } printf("\n"); return 1; }
Nota: Se suelen usar i, j y k para los índices de bucles for (Normalmente no se superan 3 for anidados, uno dentro del otro).
Para poder incluir anotaciones junto al código fuente, se puede usar doble barra '//' para indicar que esa línea es un comentario. El compilador ignora esas líneas permitiendo incluir explicaciones que faciliten el entendimiento del código fuente.
Para dibujar el rectángulo se emplean dos tipos de líneas: Los lados superior e inferior (completo de '*') y, el resto (a los lados '*' con relleno de espacios en blanco). Primero se usa un bucle for para dibujar tantos '*' como diga la variable ancho. Después se necesitan dos bucles anidados: Uno recorre el alto (obviando los lados superior e inferior) y, el otro recorre el ancho (obviando los '*' laterales). Al final, se emplea otro bucle for que dibuja tantos '*' como diga la variable ancho.
Solución:
Ejercicio 19: Escribe un programa que muestre las parejas de números naturales cuya suma es 100. Éstos números están comprendidos entre el 0 y el 100:#include <stdio.h> int main( int argc, int *argv[] ) { int i; for( i = 0; i < 255; i++ ) { printf( "%i | %c \n", i, i ); } return 1; }
Nota: Si al ejecutar este ejemplo tu PC reproduce un sonido, es porque uno de los caracteres ASCII, que se llama 'BELL', le indica al PC que emita un pitido. Además, muchos de los caracteres son no imprimibles, por lo que mostrarán caracteres extraños.
Se ha usado un bucle for para recorrer desde el carácter número 0 hasta el carácter número 254. La función printf no sabe de qué tipo es la variable que le envías. Esto permite indicarle que interprete como carácter el valor entero. De esta forma, se puede mostrar la relación del código ASCII con su carácter. De hecho, el tipo de dato char en realidad almacena el código ASCII, que es lo que entiende el PC.
0+100, 1+99, 2+98, ... 50+50.
Solución:
Ejercicio 20: Escribe un programa que muestre los números pares divisibles entre tres que hay entre cero y cincuenta.#include <stdio.h> int main( int argc, int *argv[] ) { int i, j; for( i = 0, j = 100; i < 50; i++, j-- ) { printf( "%i+%i, ", i, j ); } printf( "%i+%i. \n", i, j ); return 1; }
Nora: En un bucle for se pueden inicializar varias variables y realizar incrementos (o decrementos) sobre ellas. En este caso se ha usado una variable 'i' para recorrer los números menores que 50 desde 0 y, 'j' para recorrer los números mayores que 50 desde 100.
Solución:
Ejercicio 21: Escribe un programa que muestre todas las letras minúsculas (alfabeto inglés).#include <stdio.h> int main( int argc, int *argv[] ) { int i; for( i = 0; i <= 50; i++ ) { if( (i % 2 == 0) && (i % 3 == 0) ) { printf("%i \n", i); } } return 1; }
Nota: Se pueden indicar varias condiciones usando el operador AND (&&). Esto es válido para las sentencias if, for, while...
Solución:
#include <stdio.h> int main( int argc, int *argv[] ) { char letra; for( letra = 'a'; letra <= 'z'; letra++ ) { printf( "%c ", letra ); } printf( "\n" ); return 1; }
Nota: Los caracteres se indican entre comillas simples. Para el PC no es lo mismo el caracter 'a' que la cadena de texto "a". El PC entiende los caracteres como su código ASCII, es decir, como un número. Esto permite que se pueda trabajar con ellos como un número entero. Debido a que todos los caracteres en minúscula están seguidos en la tabla ASCII, se puede emplear un bucle for de 1 en 1.
< Página anterior - Siguiente página >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
martes, 4 de octubre de 2011
5. Librerías en C
¿Qué son las librerías?
Son ficheros que contienen funciones y métodos que ya han sido creados por otros programadores. Nos agilizan en la creación de programas, pues no empezamos desde cero.
Contamos con muchas funciones agrupadas en distintas librerías según su utilidad. Las mas utilizadas son funciones matemáticas (librería math.h), y las de entrada y salida (stdio.h).
Las funciones de entrada y salida, nos permiten introducir datos por teclado y dibujar datos en la pantalla.
Entre las funciones matemáticas se encuentran potencia y raíz cuadrada. Son operaciones que el procesador no las tiene como instrucciones, y por lo tanto, hay que hacer un algoritmo que mediante bucles y operaciones básicas pueda obtener lo que queremos.
¿Cómo usar una librería?
Para usar una librería, hay que indicar su nombre de fichero. Se indican en las primeras líneas del código fuente de nuestro programa. Y se usa la etiqueta #include <nombre>.
Por ejemplo, la librería de entrada y salida se llama 'stdio.h'. Y para indicar que queremos incluirla en nuestro programa escribimos en la primera línea:
Para dibujar en pantalla los datos, usamos funciones de salida. La mas usada es printf (contracción de print function).
Esta función dibuja en la consola de comandos (Para poder dibujar ventanas, botones y textos con estilo hacen falta otras librerías, que son complejas. Las interfaces gráficas suelen hacerse con otras tecnologías).
Nos permite dibujar textos estáticos o, dibujar un dato que esté almacenado en una variable. También se pueden mezclar los textos estáticos con los datos de variables, pero no es necesario u obligatorio. El texto fijo se escribe entre comillas dobles.
Dibujar un texto fijo:
Para dibujar el valor de una variable hay que especificar el tipo de dato. Se especifica entre comillas dobles, con el símbolo '%' seguido de la primera letra del tipo de dato. Para int es %i, para char es %c y para float es %f. Y separado por coma se indica el nombre de la variable.
Además, los caracteres que puede dibujar esta función son del teclado inglés (ASCII). Si le indicamos que dibuje una vocal con tilde (camión) no será capaz de dibujarla, y dibujará caracteres sin sentido en lugar de la 'ó'.
< Página anterior - Siguiente página >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
Son ficheros que contienen funciones y métodos que ya han sido creados por otros programadores. Nos agilizan en la creación de programas, pues no empezamos desde cero.
Contamos con muchas funciones agrupadas en distintas librerías según su utilidad. Las mas utilizadas son funciones matemáticas (librería math.h), y las de entrada y salida (stdio.h).
Las funciones de entrada y salida, nos permiten introducir datos por teclado y dibujar datos en la pantalla.
Entre las funciones matemáticas se encuentran potencia y raíz cuadrada. Son operaciones que el procesador no las tiene como instrucciones, y por lo tanto, hay que hacer un algoritmo que mediante bucles y operaciones básicas pueda obtener lo que queremos.
¿Cómo usar una librería?
Para usar una librería, hay que indicar su nombre de fichero. Se indican en las primeras líneas del código fuente de nuestro programa. Y se usa la etiqueta #include <nombre>.
Por ejemplo, la librería de entrada y salida se llama 'stdio.h'. Y para indicar que queremos incluirla en nuestro programa escribimos en la primera línea:
#include <stdio.h>
int main(int argc, char *argv[]) {
return 1;
}
Dibujar en pantallaPara dibujar en pantalla los datos, usamos funciones de salida. La mas usada es printf (contracción de print function).
Esta función dibuja en la consola de comandos (Para poder dibujar ventanas, botones y textos con estilo hacen falta otras librerías, que son complejas. Las interfaces gráficas suelen hacerse con otras tecnologías).
Nos permite dibujar textos estáticos o, dibujar un dato que esté almacenado en una variable. También se pueden mezclar los textos estáticos con los datos de variables, pero no es necesario u obligatorio. El texto fijo se escribe entre comillas dobles.
Dibujar un texto fijo:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Texto fijo de mi programa");
return 1;
}
Dibujar el valor de una variable:
#include <stdio.h>
int main(int argc, char *argv[]) {
int numero = 5;
printf("%i", numero);
return 1;
}
Notas:Para dibujar el valor de una variable hay que especificar el tipo de dato. Se especifica entre comillas dobles, con el símbolo '%' seguido de la primera letra del tipo de dato. Para int es %i, para char es %c y para float es %f. Y separado por coma se indica el nombre de la variable.
Además, los caracteres que puede dibujar esta función son del teclado inglés (ASCII). Si le indicamos que dibuje una vocal con tilde (camión) no será capaz de dibujarla, y dibujará caracteres sin sentido en lugar de la 'ó'.
< Página anterior - Siguiente página >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
miércoles, 21 de septiembre de 2011
4. Funciones y métodos en C
Funciones
Es un concepto que se refiere a un bloque de código con nombre, que recibe datos (uno o varios) y después de hacerles un tratamiento (ejecutar instrucciones) devuelve un único dato. Por ejemplo, si queremos hacer una función que sume dos números enteros, crearíamos un bloque de código que devuelve un entero, de nombre suma, que recibe dos enteros llamados 'numero1' y 'numero2', declara una variable para almacenar el resultado, y después devuelve el dato. En una función es obligatorio añadir la instrucción return.
Métodos
Es un concepto que se refiere a un bloque de código con nombre, que recibe datos (uno o varios) y después de hacerles un tratamiento (ejecutar instrucciones) NO devuelve dato. Si queremos hacer un método que sume dos números enteros, la diferencia con la función es que se usa la palabra void para indicar que no devuelve dato, y no se añade la instrucción return.
Uso
Para ejecutar funciones y métodos se tienen que invocar (llamadas). Éstas llamadas se hacen a través de otros métodos y funciones. Por lo que todo método y función tiene como mínimo un padre, que efectúa la invocación. Por ejemplo, podemos crear la función suma, y un método que invoque a la función suma para calcular el resultado.
Hay una redundancia en el hecho de que todas las funciones y métodos tengan como mínimo un padre. Debe de haber uno de ellos que se ejecute primero. Entonces se ha propuesto una función como principal en C. Esta función recibe el nombre de main. Cuando ejecutamos nuestro programa, el sistema operativo busca la función main, y la ejecuta. A partir de ahí, las llamadas que hagamos dentro de la función main y las instrucciones que escribamos es cosa nuestra. Para indicar la función main, debemos escribirla con una sintaxis concreta. Hay varios tipos, pero lo mejor es escribir siempre la mas completa, que nos servirá para cualquier tipo de programa. El segundo dato que se le pasa a la función main '*argv[]' es un puntero a un array (aún no se ha explicado).
Si tenemos varias funciones (o métodos) y en ellas declaramos variables con el mismo nombre, no hacen referencia a la misma parcela en la memoria. Porque cada función (o método) es independiente de otro. Aunque una función (o método) invoque a otra, no sabe lo que ésta hace internamente. El invocador sólo debe saber qué tipo de dato devuelve (para guardar el resultado en una variable del mismo tipo), el nombre de la función (o método), cuántos datos hay que introducirle a la función (o método), y de qué tipos de dato son.
< Página anterior - Siguiente página >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
Es un concepto que se refiere a un bloque de código con nombre, que recibe datos (uno o varios) y después de hacerles un tratamiento (ejecutar instrucciones) devuelve un único dato. Por ejemplo, si queremos hacer una función que sume dos números enteros, crearíamos un bloque de código que devuelve un entero, de nombre suma, que recibe dos enteros llamados 'numero1' y 'numero2', declara una variable para almacenar el resultado, y después devuelve el dato. En una función es obligatorio añadir la instrucción return.
int suma(int numero1, int numero2) { int resultado; resultado = numero1 + numero2;return resultado; }
Métodos
Es un concepto que se refiere a un bloque de código con nombre, que recibe datos (uno o varios) y después de hacerles un tratamiento (ejecutar instrucciones) NO devuelve dato. Si queremos hacer un método que sume dos números enteros, la diferencia con la función es que se usa la palabra void para indicar que no devuelve dato, y no se añade la instrucción return.
void suma(int numero1, int numero2) {
int resultado;
resultado = numero1 + numero2;
}
Uso
Para ejecutar funciones y métodos se tienen que invocar (llamadas). Éstas llamadas se hacen a través de otros métodos y funciones. Por lo que todo método y función tiene como mínimo un padre, que efectúa la invocación. Por ejemplo, podemos crear la función suma, y un método que invoque a la función suma para calcular el resultado.
int suma(int numero1, int numero2) {
int resultado;
resultado = numero1 + numero2;
return resultado;
}
void metodo(int numero1, int numero2) {
int resultado;
resultado = suma(numero1, numero2);
}
Función mainHay una redundancia en el hecho de que todas las funciones y métodos tengan como mínimo un padre. Debe de haber uno de ellos que se ejecute primero. Entonces se ha propuesto una función como principal en C. Esta función recibe el nombre de main. Cuando ejecutamos nuestro programa, el sistema operativo busca la función main, y la ejecuta. A partir de ahí, las llamadas que hagamos dentro de la función main y las instrucciones que escribamos es cosa nuestra. Para indicar la función main, debemos escribirla con una sintaxis concreta. Hay varios tipos, pero lo mejor es escribir siempre la mas completa, que nos servirá para cualquier tipo de programa. El segundo dato que se le pasa a la función main '*argv[]' es un puntero a un array (aún no se ha explicado).
int main(int argc, char *argv[]) {
int resultado;
resultado = 1 + 2;
return 1;
}
Nota: El valor a devolver por la función main no tiene relevancia, sólo permite que el sistema operativo sepa que el programa se ha terminado de ejecutar hasta la última instrucción (return siempre debe ser la última sentencia, ya que aborta la ejecución del programa). Los programadores suelen elegir el número 0 o el 1.
Ámbito de variablesSi tenemos varias funciones (o métodos) y en ellas declaramos variables con el mismo nombre, no hacen referencia a la misma parcela en la memoria. Porque cada función (o método) es independiente de otro. Aunque una función (o método) invoque a otra, no sabe lo que ésta hace internamente. El invocador sólo debe saber qué tipo de dato devuelve (para guardar el resultado en una variable del mismo tipo), el nombre de la función (o método), cuántos datos hay que introducirle a la función (o método), y de qué tipos de dato son.
int suma(int numero1, int numero2) {
int resultado;
resultado = numero1 + numero2;
return resultado;
}
void metodo(int a, int b) {
int resultado;
resultado = suma(a, b);
}
Nota: En el método se puede ver como los datos que hay en las variables 'a' y 'b' se introducen en la función suma. Sin embargo en la función las variables donde recibe los datos se llaman 'numero1' y 'numero2'. Hay que tener en cuenta que lo que se introduce en la función son los valores que contienen las variables. Y cuando se reciben, se almacenan en variables que pertenecen a la función, y no al método que la ha invocado. Aunque tengan el mismo nombre, son variables distintas. Una variable pertenece al bloque de código en el que se declara. Esto se llama ámbito de variable. Por ejemplo, la variable 'numero1' tiene su ámbito en la función suma solamente.
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
< Página anterior - Siguiente página >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
3. Sintaxis de C (II)
Sintaxis de palabras clave
< Página anterior - Siguiente página >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
- break Cuando el procesador se encuentra con esta sentencia, aborta la ejecución del bloque de código en el que se encuentra. Está restringida por las técnicas de programación. Sólo se permite su uso con la palabra reservada switch. Donde separa cada conjunto de instrucciones.
- case Sentencia miembro de switch. Se encarga de separar cada conjunto de instrucciones.
- default Sentencia miembro de switch. Es la equivalente a la instrucción else. Se encarga de separar el último conjunto de instrucciones que se ejecuta cuando ninguna de las anteriores condiciones es verdadera.
- switch Para las estructuras selectivas podríamos usar siempre la sentencia if. Pero en algunos casos, en los que todas las condiciones son referidas a la misma variable y de igualdad, facilita la escritura. Es una instrucción para elegir qué conjunto de instrucciones se van a ejecutar según la condición. La sentencia sólo dispone de un bloque de código separado por varios conjuntos de instrucciones. Mientras la sentencia if selecciona entre bloques de código a ejecutar, la sentencia switch selecciona entre conjuntos de instrucciones. Las instrucciones se agrupan en conjuntos que comienzan por case y terminan con break.
int precio_pan;
precio_pan = 3;
switch(precio_pan) {
case 1:
1+1;
break;
case 2:
2+2;
break;
default
2-2;
break;
}
Nota: Si 'precio_pan' vale 1, se ejecuta el primer conjunto de instrucciones. Si vale 2, se ejecuta el segundo, y así sucesivamente. Si no concuerda con ninguno de los valores de case, se ejecuta el conjunto default.
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
- do Es una sentencia de bucle, que va acompañada de la sentencia while. La diferencia, es que la sentencia while se coloca después del bloque de código. Al estar la condición al final, el bloque se ejecutará siempre una vez como mínimo.
int repeticiones;
repeticiones = 0;
do {
2+2;
repeticiones--;
} while (repeticiones > 0);
Nota: Aunque 'repeticiones' vale 0 antes del bloque de código, se ejecuta una vez, ya que la condición se evalúa después de la primera ejecución del bloque.
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
- for Es una sentencia de bucle. Cuando los bucles se deben repetir un número de veces determinado, el cuál podemos conocer, facilita su escritura. Entre paréntesis se incluyen tres partes, separadas por ';'. La primera parte indica el valor de inicio de la variable que va a indicar el número de veces que se repetirá. La segunda parte indica la condición que pondríamos en while. Y en la tercera parte se coloca la modificación de la variable, que situaríamos como última línea del bloque de código de while.
int repeticiones;
for (repeticiones = 3; repeticiones > 0; repeticiones--) {
2+2;
};
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
- enum Se considera un tipo de dato (dato enumerado). Su utilidad consiste en acotar los valores que puede tener una variable. Por ejemplo, si quisiéramos representar los estados sólido, líquido y gaseoso y que no podamos añadir ningún valor mas, podemos hacerlo con este tipo de dato. La palabra clave enum no declara una variable como int, char o float. Lo que hace es crear un tipo de dato. Y con ese tipo de dato, al que le hemos dado un nombre, declaramos una variable de tipo enumerado, que puede tomar sólo los valores que le hayamos indicado.
enum estado {
solido, liquido, gaseoso
};
enum estado agua;
agua = solido;
if (agua == solido) {
agua = liquido;
}
if (agua == liquido) {
agua = gaseoso;
}
if (agua == gaseoso) {
2+2;
}
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
- struct Al igual que enum, esta palabra reservada crea un tipo de dato, pero no una variable. Su utilidad es agrupar variables que tienen relación entre sí. Por ejemplo, si queremos almacenar datos sobre una persona, como su peso y su edad, necesitamos dos variables de distinto tipo. La palabra struc permite crear una estructura que agrupe las dos variables.
struct tipo_persona {
float peso;
int edad;
};
struct tipo_persona persona;
persona.peso = 70.4;
persona.edad = 27;
if (persona.edad >= 18) {
2+2;
}
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
< Página anterior - Siguiente página >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
martes, 20 de septiembre de 2011
2. Sintaxis de C (I)
¿Qué necesitas para programar en C?
Toda instrucción debe finalizar con el carácter ';'.
Para introducir un valor en una variable se utiliza el operador '='. Ejemplo: nombre_variable = valor;
Los tipos de datos enteros se representan con su número. Ejemplo: 1.
Los tipos de datos letra se representan entre comillas simples. Ejemplo: '1'.
Los tipos de datos decimales se representan separando la parte decimal con un punto. Ejemplo: 1.0.
Nota: Ten en cuenta que para los humanos en los tres casos (1, '1', 1.0) son el mismo dato pero representados de distinta forma. La computadora no lo entiende. Para ella dos tipos de datos distintos no pueden representar lo mismo.
Nombres de variables
Hay restricciones para elegir nombres de variables. No deben coincidir con las palabras clave del lenguaje y deben estar compuestas de "una o más letras ASCII, dígitos numéricos (que en ningún caso deben aparecer como primer carácter) y barras bajas" 1.
Sintaxis de palabras clave
Las palabras clave auto, const, extern, long, register, signed, short, static, unsigned y volatile hacen referencia al ámbito, acceso y opciones especiales de las variables. No las explicaré porque en mi opinión resultarían una complicación innecesaria.
Las palabras clave goto y continue están prohibidas por las técnicas de programación (programación estructurada), por lo que no las explicaré.
Las palabras clave typedef y union tienen relación con struct, pero pueden obviarse sin perder funcionalidad, por lo que no las explicaré.
< Página anterior - Siguiente página >
Referencias
1. http://es.wikipedia.org/wiki/Identificador
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
- Editor de texto plano. Para escribir el código fuente.
- Compilador de C. Para traducir el código fuente y transformar el archivo de texto en un archivo ejecutable.
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
Toda instrucción debe finalizar con el carácter ';'.
Para introducir un valor en una variable se utiliza el operador '='. Ejemplo: nombre_variable = valor;
Los tipos de datos enteros se representan con su número. Ejemplo: 1.
Los tipos de datos letra se representan entre comillas simples. Ejemplo: '1'.
Los tipos de datos decimales se representan separando la parte decimal con un punto. Ejemplo: 1.0.
Nota: Ten en cuenta que para los humanos en los tres casos (1, '1', 1.0) son el mismo dato pero representados de distinta forma. La computadora no lo entiende. Para ella dos tipos de datos distintos no pueden representar lo mismo.
Nombres de variables
Hay restricciones para elegir nombres de variables. No deben coincidir con las palabras clave del lenguaje y deben estar compuestas de "una o más letras ASCII, dígitos numéricos (que en ningún caso deben aparecer como primer carácter) y barras bajas" 1.
Sintaxis de palabras clave
Las palabras clave auto, const, extern, long, register, signed, short, static, unsigned y volatile hacen referencia al ámbito, acceso y opciones especiales de las variables. No las explicaré porque en mi opinión resultarían una complicación innecesaria.
Las palabras clave goto y continue están prohibidas por las técnicas de programación (programación estructurada), por lo que no las explicaré.
Las palabras clave typedef y union tienen relación con struct, pero pueden obviarse sin perder funcionalidad, por lo que no las explicaré.
- int Reserva espacio en memoria de tipo integer (Número entero). Es obligatorio acompañarlo de un nombre de variable.
int precio_pan; precio_pan = 1;
- char Reserva espacio en memoria de tipo character (letra, carácter). Es obligatorio acompañarlo de un nombre de variable.
char precio_pan; precio_pan = '1';
- float Reserva espacio en memoria de tipo floating point (Números decimales en coma flotante). Es obligatorio acompañarlo de un nombre de variable.
float precio_pan; precio_pan = 1.0;
- double Reserva espacio en memoria de tipo double precision floating point (Números decimales en coma flotante con doble presición). Permite almacerar números con mas dígitos decimales. Es obligatorio acompañarlo de un nombre de variable.
double precio_pan; precio_pan = 1.0;
- sizeof Para preguntar cuanto espacio ocupa en memoria un tipo de dato o una variable (da igual si está vacía, el espacio que ocupa una variable es el espacio reservado en memoria). El elemento sobre el que le preguntemos, lo debemos colocar entre paréntesis. El resultado se perderá si no lo guardamos en una variable.
int precio_pan; int espacio_en_memoria1; int espacio_en_memoria2; espacio_en_memoria1 = sizeof(int); espacio_en_memoria2 = sizeof(precio_pan);
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
- Bloques de código, void, return Un bloque de código puede contener otros. Puede tener nombre o ser anónimo. Pueden recibir datos (Varios y de distinto tipo) de un bloque y devolverle un valor (pero sólo uno). Las instrucciones se escriben en los bloques de código. Los bloques de código van entre llaves. void se utiliza cuando el bloque no recibe datos y/o no devuelve datos.
Ejemplo de bloque anónimo: { int suma; suma = 2 + 2; }Nota: No tiene sentido por sí solo. Debe de estar junto a las instrucciones for, if, while.
Ejemplo de bloque con nombre: int dos_mas_dos(void) { int suma; suma = 2 + 2; return suma; }Nota: Las reglas para elegir nombre de bloque son las mismas que para las variables. El primer int significa que devuelve un dato de tipo entero. La palabra void indica ningún dato. Al colocarlo entre paréntesis indica que no recibe ningún dato. La palabra return indica el dato a devolver.
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
- if, else Mediante una condición, que puede ser verdadera o falsa, permite la selección de un bloque de código entre varios. Cada bloque tendrá una condición, que si es verdadera permitirá que se ejecute. Si queremos que se ejecute un bloque cuando no se haya dado ninguna de las condiciones anteriores, se usa la instrucción else. No es obligatorio usar else.
Ejemplo sin 'else':
int precio_pan;
precio_pan = 1;
if (precio_pan > 1) {
2+2;
}
Ejemplo con 'else':
int precio_botella_leche;
precio_botella_leche = 1;
if (precio_botella_leche == 1) {
2+2;
} else {
2-2;
}
Nota: Recuerda que para expresar igualdad en una condición se usa el operador '==' ya que el '=' se usa para asignación. La instrucción else en este ejemplo sería verdadera cuando 'precio_botella_leche' fuese distinto de 1.
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
- while Mediante una condición, que puede ser verdadera o falsa, permite la ejecución recursiva de un bloque de código completo. Mientras la condición sea verdadera, se volverá a ejecutar el bloque de código asignado. Si la condición siempre es verdadera, el bloque de código se ejecuta indefinidamente y provoca un error de lógica del programa. Es muy importante asegurarse de que la condición no va a ser verdadera siempre.
int repeticiones;
repeticiones = 2;
while(repeticiones > 0) {
2+2;
repeticiones = repeticiones - 1;
}
Nota: Debemos cambiar el valor de la variable 'repeticiones' dentro del bucle para evitar que la condición sea siempre verdadera. Al reducirlo en una unidad por cada repetición, conseguimos que se repita el número exacto de veces que queramos.
- Vídeos explicativos
- Si quieres programar en Gnu/Linux.
- Si quieres programar en Windows.
< Página anterior - Siguiente página >
Referencias
1. http://es.wikipedia.org/wiki/Identificador
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
martes, 13 de septiembre de 2011
1. Vocabulario de C
Vocabulario
El vocabulario del lenguaje C está formado por un conjunto de 32 palabras clave (en idioma inglés), y una serie de operadores.
Las palabras clave son:
Tipos de datos
Cuando reservamos memoria para un dato, tenemos que especificar el tipo de dato. Y los tipos de datos que nos permite C son números enteros (int), números decimales (float) y letras (char).
Reservar memoria
Para poder usar la memoria, debemos reservar parcelas. Cuando le ordenamos a la computadora que reserve memoria y le asignamos un nombre, se llama declaración de variables.
< Página anterior - Siguiente página >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
El vocabulario del lenguaje C está formado por un conjunto de 32 palabras clave (en idioma inglés), y una serie de operadores.
Las palabras clave son:
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
Tipos de datos
Cuando reservamos memoria para un dato, tenemos que especificar el tipo de dato. Y los tipos de datos que nos permite C son números enteros (int), números decimales (float) y letras (char).
Reservar memoria
Para poder usar la memoria, debemos reservar parcelas. Cuando le ordenamos a la computadora que reserve memoria y le asignamos un nombre, se llama declaración de variables.
< Página anterior - Siguiente página >
Espíritu programador by sergiolindo@gmail.com is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
Suscribirse a:
Entradas (Atom)