[Curso] Introducción a la programación en C (V)

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

[Curso] Introducción a la programación en C (V)

Mensaje por m0skit0 »

<< Anterior Siguiente >>

"Debo confesar que nací a una edad muy temprana" (Groucho Marx)

Más operaciones con variables

Seguimos con más ejemplos de operaciones con variables:

Código: Seleccionar todo

// Incluímos el fichero stdio.h
#include <stdio.h>

// Función principal
int main(int argc, char *argv[])
{
  // Podemos poner las variables del mismo tipo seguidas
  float edad_pedrito, edad_josito, media1, media2, media3;
 
  edad_pedrito = 5;
  edad_josito = 12;

  // Calculamos varias supuestas medias...
  media1 = edad_pedrito + edad_josito / 2;
  media2 = (edad_pedrito + edad_josito) / 2;
  media3 = edad_pedrito + (edad_josito / 2);
  printf("Medias 1, 2 y 3: %f %f %f\n", media1, media2, media3);
  printf("Edad de Pedro: %f\n", edad_pedrito);
  printf("Edad de Jose: %f\n", edad_josito);

  getch();
  return 0;
}


Lo primero que seguramente notaréis en este código es el uso de los comentarios. Los comentarios son líneas que no se procesan por el compilador, con lo que podemos escribir lo que queramos, generalmente explicaciones sobre qué estamos haciendo en el código. Esto es muy útil no sólo para que otros programadores entiendan mejor nuestro código, sino también para nosotros mismos, ya que a veces resulta arduo seguir un código incluso hecho por nosotros mismos.

Los comentarios se indican con //. Esto hará que todo el texto desde // hasta el final de línea sea considerado como comentario.

Lo demás debería de ser de sobra entendible con los comentarios y lo que ya hemos visto. Ahora la pregunta es: ¿cuál de las tres medias es la correcta?

Ahora otro ejemplo más (recordad que copiarlo a mano es más conveniente para recordar que usar copiar-pegar :ko: ):

Código: Seleccionar todo

// Incluímos el fichero stdio.h y unistd.h
#include <stdio.h>
// Para Linux:
#include <unistd.h>
// Para Windows (comentar la línea anterior y descomentar la siguiente):
// #include <windows.h>

// Función principal
int main(int argc, char *argv[])
{
  int contador = 0;

  // Escribir el número en pantalla
  printf("%d... ", contador);
  // Actualizar la consola (para que aparezca el anterior printf() inmediatamente
  fflush(0);
  // Sumar 1 a la variable contador
  contador++;
  // Parar 1 segundo
  sleep(1);

  // Repetimos lo mismo... vamos incrementando "contador" de uno en uno
  printf("%d... ", contador);
  fflush(0);
  contador++;
  sleep(1);

  printf("%d... ", contador);
  fflush(0);
  contador++;
  sleep(1);
 
  printf("%d... ", contador);
  fflush(0);
  contador++;
  sleep(1);

  printf("%d... ", contador);
  fflush(0);
  contador++;
  sleep(1);

  // Justo aquí escribe un 5...
  printf("%d... ", contador);
  fflush(0);
  // ... así que empezamos a restar ;)
  contador--;
  sleep(1);

  // Y lo mismo que antes, pero restando ("contador" ahora va disminuyendo)
  printf("%d... ", contador);
  fflush(0);
  contador--;
  sleep(1);

  printf("%d... ", contador);
  fflush(0);
  contador--;
  sleep(1);

  printf("%d... ", contador);
  fflush(0);
  contador--;
  sleep(1);

  printf("%d... ", contador);
  fflush(0);
  contador--;
  sleep(1);

  printf("%d... ", contador);
  fflush(0);
  contador--;
  sleep(1);

  printf("BOOOOOOM!\n");
  fflush(0);
  sleep(1);
  return 0;
}


¿Mola, no? ;)

Entrada de datos

Hasta ahora, nuestros programas han sido poco interactivos... Veamos cómo podemos indicarles qué valores tienen las variables, en vez de usar valores predeteminados en el código (a partir de ahora sólo pondré la versión Linux):

Código: Seleccionar todo

// Incluímos el fichero stdio.h y unistd.h
#include <stdio.h>
#include <unistd.h>

// Función principal
int main(int argc, char *argv[])
{
  // Una frase de 80 caracteres máximo
  char nombre[80];
  int edad;
 
  printf("Por favor, introduzca su nombre: ");
  // Leemos el nombre
  // Indicamos igual que en printf() %s por ser una cadena de caracteres y la variable a la que asignar lo tecleado precedida de un &
  scanf("%s", &nombre);
  printf("Ahora su edad: ");
  // Leemos la edad, de igual manera que el nombre, pero con un entero (int), por tanto usamos %d ;)
  scanf("%d", &edad);

  printf("Te llamas %s y tienes %d años... ¡Qué viejo eres!\n", nombre, edad);
  system("read foo");
  return 0;
}


Ahora podréis comprobar que las variables nombre y edad toman los valores que introducimos desde el teclado. Fijaos que scanf() es bastante parecida a printf(), sólo que es para una entrada de datos (el usuario introduce datos) en vez de salida de datos (el programa muestra los datos al usuario). Recordad siempre usar & en scanf(). Más tarde entenderéis el uso del operador &.

Ah bueno, otro ejercicio sencillo: escribir un programa que reciba dos edades, calcule la suma, multiplicación y media de las edades.

En el siguiente capítulo veremos el control del flujo de ejecución. ¡Hasta la próxima colegas!

EL PDF de esta lección para descargar (gracias a Kracker :oki: ):
leccion V_C.rar


<< Anterior Siguiente >>
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Imagen

Avatar de Usuario
dark_sasuke
Moderador Global
Moderador Global
Mensajes: 3379
Registrado: 03 Sep 2009, 02:13
Twitter: D4rkyt0

Re: [Curso] Introducción a la programación en C (V)

Mensaje por dark_sasuke »

mire profe esto es lo que he logrado hacer yo

Spoiler:

Código: Seleccionar todo

//incluimos dos librerias

#include <stdio.h>

#include <unistd.h>



//funcion principal

int main(int argc, char *argv[])



{



//variables

 char nombre;

 int numero1;

 int numero2;



printf("por favor introduzca su nombre : ");

//leemos el nombre


scanf("%s",nombre);

printf("por favor introduzca la primera cifra : ");

//leemos la primera cifra


scanf("%d", &numero1);

printf("por favor introduzca la segunda cifra : ");

//leemos la segunda cifra

scanf("%d", &numero2);



printf("hola %s\n", nombre);

printf("la suma de tus cifras es : %d\n", numero1 + numero2);

printf("presiona enter para terminar...\n");



system("read foo");

return 0;



al compilar no da ningun error...pero al utilizar el programar...ingrso el nombre y despues dice fallo de segmentacion

edito: logre solucionar el problema es que en el comando scanf al escribir la variable me faltaba el & antes de la varibale

el nuevo codigo

Código: Seleccionar todo

//incluimos dos librerias

#include <stdio.h>

#include <unistd.h>



//funcion principal

int main(int argc, char *argv[])



{



//variables

 char nombre;

 int numero1;

 int numero2;



printf("por favor introduzca su nombre : ");

//leemos el nombre


scanf("%s", &nombre);

printf("por favor introduzca la primera cifra : ");

//leemos la primera cifra


scanf("%d", &numero1);

printf("por favor introduzca la segunda cifra : ");

//leemos la segunda cifra

scanf("%d", &numero2);



printf("hola %s\n", &nombre);

printf("la suma de tus cifras es : %d\n", numero1 + numero2);

printf("presiona enter para terminar...\n");



system("read foo");

return 0;



aunque hace las funciones que deberia....al presionar enter sige apareciendo fallo de segmentacion
Imagen

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

Re: [Curso] Introducción a la programación en C (V)

Mensaje por arisma »

Mierda creia que iba a tener tiempo para mirartelo ahora, pero no. A ver si dentro de un rato.

Pero lo que si te adelanto es que tu variable nombre no es valida. Míralo y compara que verás que te falta algo.

Avatar de Usuario
dark_sasuke
Moderador Global
Moderador Global
Mensajes: 3379
Registrado: 03 Sep 2009, 02:13
Twitter: D4rkyt0

Re: [Curso] Introducción a la programación en C (V)

Mensaje por dark_sasuke »

gracias arisma... pues

estaba asi

Código: Seleccionar todo

char nombre;


ahora esta asi

Código: Seleccionar todo

char nombre[80];


ya no me da el fallo de segmentacion :)
Imagen

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

Re: [Curso] Introducción a la programación en C (V)

Mensaje por arisma »

De nada.

Recuerda que con char, declaras un caracter, como 'a'. Sin embargo al poner [80] declaras un array de caracteres de tamaño 80.(0..79).

Recuerda que por otro lado en C, las cadenas terminan en caracter nulo(\0), lo digo para que le dejes hueco.

Por ejemplo si declaras->

Código: Seleccionar todo

char nombre[] = "Sir Arisma";
//Recuerda que son 10 caracteres más el caracter nulo, total 11


Pero todo a su tiempo ;)

Por otro lado,

Spoiler:

Código: Seleccionar todo

#include <stdio.h>

int main()
{
    int priEdad, secEdad;
   
    printf("Introduce la primera edad: ");
    scanf("%d", &priEdad);
    printf("\nIntroduce la segunda edad: ");
    scanf("%d", &secEdad);
    printf("\n\nAhora los resultados->\n");
    printf("Suma de edades: %d\n", priEdad + secEdad);
    printf("Multiplicación: %d\n", priEdad * secEdad);
    float media = (priEdad + secEdad) /2;
    printf("Media de edades: %.2f\n", media);
    return 0;   
}
Última edición por arisma el 12 Oct 2009, 22:28, editado 1 vez en total.

Avatar de Usuario
dark_sasuke
Moderador Global
Moderador Global
Mensajes: 3379
Registrado: 03 Sep 2009, 02:13
Twitter: D4rkyt0

Re: [Curso] Introducción a la programación en C (V)

Mensaje por dark_sasuke »

gracias :)
Imagen

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (V)

Mensaje por m0skit0 »

Creo que llego tarde. Buena explicación, arisma ;)
Imagen

Avatar de Usuario
dark_sasuke
Moderador Global
Moderador Global
Mensajes: 3379
Registrado: 03 Sep 2009, 02:13
Twitter: D4rkyt0

Re: [Curso] Introducción a la programación en C (V)

Mensaje por dark_sasuke »

como se me pudo olvidar.....gracias profe :oki: :oki:
Imagen

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

Re: [Curso] Introducción a la programación en C (V)

Mensaje por arisma »

dark_sasuke escribió:como se me pudo olvidar.....gracias profe :oki: :oki:


No te preocupes, con la practica.

Mientras no me digas lo contrario intentaré ayudar con lo poquito que me acuerdo.

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (V)

Mensaje por m0skit0 »

arisma escribió:Mientras no me digas lo contrario intentaré ayudar con lo poquito que me acuerdo.

Yo desde luego no te voy a decir nada :lol:
Imagen

Responder