Clase 4
Menu Principal | VIM | Clase 1 | Clase 2 | Clase 3
Primera Prueba Lunes 8 de Septiembre 2014.
Condicionales y Loops
La mejor forma de aprender a programar es programando. Hagamos dos programas muy simples (reprodúzcalos) y luego practique con los que se le solicitan
Lee dos números e indica cuál de ellos es el mayor
mkdir mayor cd mayor vim main.c
El código espera el ingreso de dos números y luego indica cual de ellos es el mayor.
#include <stdio.h> int main() { float a = 0.0e0; float b = 0.0e0; printf("Ingrese un valor para el primer numero : "); scanf("%f", &a); printf("Ingrese un valor para el segundo numero : "); scanf("%f", &b); /*Las condiciones*/ if (a>b) { printf("El primer numero es mayor.\n"); } else if(a<b) { printf("El segundo numero es mayor.\n"); } else { printf("Los numeros son identicos\n"); } return 0; }
Compile y ejecute el programa con
gcc -o mayor mayor.c ./mayor
Pregunta por un número hasta coincidir
En este ejemplo el programa pregunta por un número hasta que uno ingrese el número 25.
Creamos nuevamente un directorio para nuestro programa
mkdir num cd num vim main.c
El contenido del programa se muestra a continuación
#include <stdio.h> int main() { float a = 0.0e0; while(a!=25) { printf("Ingrese el numero misterioso >>"); scanf("%f", &a); } printf("Lo logro!! dio con el numero misterioso\n"); return 0; }
Compile y ejecute el programa con
gcc -o mist main.c ./mist
Averiguar si un número es par
Para que un número sea par, éste debe ser divisible por 2, es decir la resta o residuo de la división debe ser cero. Para eso utilizaremos el operador %.
Generemos el directorio para nuestro programa
mkdir pares cd pares vim main.c
Editamos el contenido del programa. Se ingresan números hasta que se ingrese el valor 0.
#include <stdio.h> int main() { int x = 0; while(x==0) { printf("Ingresa un numero >> "); scanf("%d",&x); if(x%2==0) { printf("El numero %d es par!\n", x); } else { printf("El numero %d es impar!\n", x); } } printf("Bye-Bye\n"); return 0; }
Compile y corra el programa
gcc -o par main.c ./par
Cree los siguientes programas
(no es necesario que logre realizar todos los que se listan, pero le servirán para practicar durante la semana)
- Escriba un programa que indique si el número es par o impar.
- Desafío : Escriba un programa que indique al ingresar un número si es primo o no.
Una función en C
Vamos a crear dos programa que corresponden a un lanzamiento vertical en la tierra y en la luna, con esa información vamos a graficar tanto la posición como la velocidad para ambos casos.
La idea principal es que los datos de salida los vamos a poner en un archivo para luego graficarlo con gnuplot.
Vamos a generar 1 programa con la capacidad de modificar sólo la aceleración de nuestro sistema (Tierra = -9.8m/s2 y Luna = 1.66m/s2)
Creamos el directorio
mkdir launch cd launch vim main.c
Editamos entonces el contenido del fichero esta vez utilizaremos una función y mostraremos en pantalla una tabla con los datos t, x y v.
#include <stdio.h> float position(float t, float a) { return (a/2)*t*t + 12.25*t; } float velocity(float t, float a) { return a*t + 12.25; } int main() { float t = 0; float a = -9.8; while(position(t,a)>=0) { printf("%f \t %f \t %f \n",t,position(t,a),velocity(t,a)); t=t+0.1; } return 0; }
El código esta diseñado para que la primera corrida sea ejecutada en la Tierra.
Compile y ejecute
gcc -o launch-earth main.c ./launch-earth
Puede enviar todo el contenido que muestra el programa a un archivo de datos facilmente con
./launch-earth > earth.dat
Ahora realice la modificación para ver qué ocurre en la luna, luego de hacerlo, compile y mande el contenido a un nuevo archivo.
gcc -o launch-moon main.c ./launch-moon > moon.dat
ahora grafique ambos archivos con gnuplot.
gnuplot> plot "earth.dat" u 1:2 w lp, "moon.dat" u 1:2 w lp
- Gráfique también para las velocidades.
- Por último utilice un valor más fino para incrementar el tiempo y vea como mejora la precisión en el impacto final. (ej : 0.001)