- Numéricos:
- int : Para valores enteros.
- float : Para valores de coma flotante.
- double : Con decimales pero con más cifras de aproximación.
- De texto:
- char [tamaño]: Para string o cadenas de texto.
- Punteros:
- *: Guardan direcciones de memoria.
printf("<cadenaDeTexto>", expr1, expr2,...);
Mostrar cadenas de texto por pantalla. En estas cadenas de texto se pueden introducir valores y en las expresiones se pueden realizar operaciones con variables numéricas.
Usando el caracter % en los string, se puede decidir en que parte de la cadena irán las variables.
- %d: Para números enteros.
- %f: Para números de coma flotante.
- %s: Para strings.
Ejemplo:
char nombre = "Alex";
float altura = 1.77467;
printf("Me llamo %s y mido %.2f \n", nombre, a); // Output: Me llamo Alex y mido 1.77
// Poniendo %.2f, se pueden redondear los float a dos decimales
// \n hace un salto de línea
scanf("tipoVar1 [tipoVar2...]", &var1, [&var2...]);
Permite recibir datos de entrada del teclado, y guardarlos en variables para su posterior uso.
La función scanf() tiene dos partes, una primera parte entre comillas donde se especifica que tipo de caracteres (%s, %f...) se van a introducir, y una segunda parte donde se indica en que variables se van a guardar nuestros datos de entrada.
scanf("%d, %d, %d", &vector1, &vector2, &vector3);
// Guarda en las variables vector1, vector2 y vector3, los números que se introduzcan estarán separados por comas y un espacio (", ")
Con esta función hay que recordar que se pueden limitar el número de caracteres de entrada si es un string usando el %7s, donde se estaría limitando a 10 caracteres.
if (expresion1) {
sentencia1;
} else if (expresion2) {
sentencia2;
} else {
sentencia3;
}
Se utiliza para hacer elecciones dentro de la línea de ejecución del código. Las expresiones comparativas pueden ser ||, &&, ==, !=, <, <=, > y >=. (No existe el ===)
if (edad >= 18) { // Comprueba si tiene más de 18 años
printf("\nEs mayor de edad");
} else if (edad >= 0 && edad < 18) { // Si no tiene más de 18, comprueba si la edad esta en [0, 17]
printf("\nEs menor de edad");
} else { // Si el valor de la edad no cumple ninguna de las condiciones ejecuta la del else
printf("\nHay algo que fuel mal");
}
Existe otra forma de hacer condicionales usando ? :, este tipo de condicionales solo tiene dos opciones una para el verdadero y otra para el falso.
Su sintaxis es la siguiente.
(<condicion>)? <sentencia1> : <sentencia2>;
// Si se cumple la condicion, se ejecutara la sentencia1, si no, se ejecutara la sentencia2.
Y un ejemplo para este tipo de condicional podría ser con la mayoría de edad:
(edad < 18)? printf("Es menor de edad") : printf("Es mayor de edad");
switch(variable) {
case 2:
sentencia;
break;
case 1:
sentecia;
break;
default:
sentencia;
break;
}
Tiene la misma utilidad que el condicional IF, solo que en algunos casos hace que tenga una estructura más simple y más fácil de leer. En el switch se pueden juntar varios case para una misma intruccion.
switch (Nota) { // Entra la nota de un alumno, y segun la que sea, ira a un case u otro
case 10: case 9:
printf("Sobresaliente");
break; // Es muy importante, si no, se pone continua ejecutando en el siguiente case
case 8: case 7:
printf("Notable");
break;
case 6: case 5:
printf("Aprobado");
break;
case 4: case 3: case 2: case 1: // Se pueden poner varios case con la misma instruccion
printf("Suspenso");
break;
default: // Si la variable no coincide con ningun case, la ejecucion ira al default
printf¨("Caso perdido");
break;
}
while (<expresion>) {
<acciones>;
}
Permite ejecutar una misma parte del código múltiples veces, comprobando primero la expresión booleana.
int i = 0;
while (i<10) {
printf("\n %d", i); // Imprimira el valor de i hasta que se deje de cumplir la expresion
i++; // Suma uno a la variable i
}
do {
<acciones>;
} while (<expresion>);
Al igual que el bucle while sirve para ejecutar una misma parte del código múltiples veces, pero con una ligera diferencia, se ejecuta al menos una vez. Después de ejecutarse esta primera vez comprueba, si se sigue cumpliendo continúa el bucle, y si no, continúa con la línea de ejecución del código.
int i = 0;
do { // Se ejecutara al menos una vez
printf("\n %d", i); // Imprimira el valor de i hasta que se deje de cumplir la expresion
i++; // Suma uno a la variable i
} while (i<10);
for (<valorDeInicio>; <valorDeFin; <salto>) {
<acciones>;
}
Es muy útil cuando ya se conoce cuantas iteraciones se dará al bucle. En C99 la variable de inicio se puede declarar en el propio bucle for, y el salto es de cuanto en cuanto se incrementa el valor de inicio para llegar hasta el valor de fin.
for (int i = 0; i <= 0; i++) {
printf("\n %d", i++);
}
En los bucles existen dos sentencias para parar un bucle, break
y continue
ambos tienen la misma función, romper con la ejecución del bucle. Pero con una diferencia, break rompe por completo la ejecución del bucle saliendose del mismo, y continue va justo antes de la llave de cierre del bucle.
Los subprogramas son conjuntos de instrucciones que se reunen en funciones o procedimientos, para segmentar el código y hacerlo más modular, esto hará que sea mucho más fácil depurar, leer o escribir código.
tipoDelRetorno nombreFuncion (<parametros>) {
[<declaracionVariables>]
<sentencias>
}
Hay dos formas de hacerlo, haciendo la propia operación de la media en el return o metiendo el resultado en otra variable y haciendo el return de esa otra variable.
double media (double a, double b){
return (a + b)/2;
}
double media (double a, double b) {
double aux;
aux= (a+b)/2; /*código mas claro*/
return(aux);
}