C
Proceso de compilación
Compila → Enlaza → Programa.exe
Algoritmo
Siempre el algoritmo tiene que estar en dentro de:
int main(){
}
Printf(”Hello world”);
Sirve para que el programa escriba en la terminal “Hello world”
Necesitas la librería #include <stdio.h>
Salto de linea
\n
Tabular
\t
Representar variables
printf("%d", a);
imprime decimal y se almacena en a
Que no se cierre una pantalla hasta que pulses una tecla
getchar();
Que se puedan representar ñ y tildes
#include <windows.h>
int main ()
{
SetConsoleCP(1252);
SetConsoleOutputCP(1252);
return 0;
}
Scanf(”%d”,&a)
Scanf("%d",&a)
Dice que será decimal y se almacena en a
Limpiar el buffer
while(getchar() != '\n');
Comprobar que lo que estas metiendo es valido
do{
printf("Escriba su velocidad en Km/h: ");
resul=scanf("%f", &velocidad);
while(getchar() != '\n');
}while (resul != 1 || velocidad > 0);
Punteros
El puntero es una variable que apunta al valor de otra
*
Cuando pones el asterisco haces que la variable sea un puntero
&
En vez de dar la variable da su dirección de memoria
Variables
Hacer variables globales
Declarar la variable fuera de cualquier función o acción
Hacer variables ocultas
Cuando vuelves a crear una variable la cual era global dentro de una acción o función
= …;
Al usar un igual a la d derecha de una variable haces que lo que esté a su derecha sea su nuevo valor
int
Es para usar números enteros , ocupa 4 bytes
No puede empezar con números
Para octal prefijo 0 y hex prefijo 0x
int a;
Para llamarlo: %d o %i
%o para octal y %x para hexadecimal
float
Es para usar números decimales
Un número no es decimal si no tiene 2.0
float a;
Para llamarlo: %f
double
Para llamarlo: %lf o %g para notación científica
IEEE 754 de doble precisión
Short
Hace que la variable sea de 2 bytes
long
Para llamar a un long double %Lf
Los bytes serán 4*n, n es la cantidad de veces que repites el long
string
Es para usar caracteres
Necesitas la librería #include <string.h>
Y con la librería y strcpy(palabra1,palabra2); Copia uno a otro
Hay que tener cuidado pues al declararla tiene una longitud determinada que hay que tener cuidado con no sobrepasarla.
Se llama con %s
char
Se usa entre ‘____’
Para decir cuantos caracteres quieres tienes que poner [x] al final char nombre[10]; , puedes escribir letras y al final te pone 0
char a;
Para llamarlo: %c y %s para cadenas de caracteres
Variables Dinámicas
malloc
calloc
realloc
Liberarlas free(variable);44
Constantes (ejs)
const int N = 10;
const int Distancia = int('a') -int('A');
Cambiar tipo de variable
Hacerla mas compleja se llama Promocionar
int → float → double
Hacerla más sencilla se llama Reducir
double → float → int
Conversión implícita
int a;
int c;
float b;
b=a; //conversión implícita
float a = 2; //conversión implícita
a=3.5; //conversión implícitaConversión explícita
Especificas a que se transforma
int a;
int c;
float b;
b= (int) a; //conversión explícita
a= (int) 3.5; //conversión explícita
float a = 2; //conversión implícitaTipos de Variables
Struct
Es una variable que dentro de ella hay varias, en este caso hemos hecho la variable punto que tiene abscisas y ordenadas, definimos como se va a llamar este tipo de productos y como lo vamos a llamar (con P)
#include <stdio.h>
struct Punto {
float x;
float y;
};
int main() {
struct Punto punto1 = {3.5, 7.2};
printf("Coordenadas del punto: (%.1f, %.1f)\n", punto1.x, punto1.y);
return 0;
}Typedef
#include <stdio.h>
typedef struct Punto{ //pongo aqui punto para poder hacer struct punto;
float x;
float y;
} Punto; //que no se te olvide el final
int main() {
Punto punto1 = {3.5, 7.2};
printf("Coordenadas del punto: (%.1f, %.1f)\n", punto1.x, punto1.y);
return 0;
}Con este lo haces lo mismo pero a la hora de poner la variable no tienes que poner el struct
Variables dinamicas
Como se declaran??
#include <stdlib.h>
int main(){
char *l = malloc(sizeof(char))
}Tablas
Una dimensión
typedef float Vector[NColumnas];
Puedes también crear variables las cuales son Arrays
#include <stdio.h>
int main() {
// Declaración e inicialización de un array de enteros
int numeros[5] = {10, 20, 30, 40, 50};
// Imprimir los valores del array
printf("Los valores del array son:\n");
for (int i = 0; i < 5; i++) {
printf("numeros[%d] = %d\n", i, numeros[i]);
}
return 0;
}Para hacer una llamada a la tabla tienes que poner la columna que deseas entre corchetes y a la izquierda el nombre de la tabla, t[i] , aquí definimos una variable para que elijamos la columna
Multidimensional
typedef int Matriz[NFilas][NColumnas];
Es igual pero para llamar usamos tabla[i][j]
//inicializar la tabla
Tipo_Tabla miTabla = {
{12, 20, 16, 18, 21, 22, 18, 11, 12, 15},
{14, 13, 9, 8, 20, 92, 13, 10, 21, 17},
{15, 20, 26, 28, 21, 23, 28, 31, 26, 25},
{22, 25, 36, 38, 41, 49, 58, 61, 62, 75},
{13, 83, 26, 88, 23, 32, 81, 51, 42, 83},
{11, 02, 16, 48, 31, 95, 58, 41, 33, 22},
{14, 24, 46, 14, 41, 24, 48, 51, 15, 55},
{15, 50, 66, 78, 11, 92, 8, 13, 22, 25},
}; // ponemos cada fila entre llaves y unas llaves para toda la tablaRandomizar una tabla
int main() {
Temperaturas t;
int i,j;
for(i=0;i<NANYO;i++){
for(j=0;j<NDIA;j++){
t[i][j] = rand()%21+20;
cout << t[i][j] << " | ";
}
cout << endl;
}Contar
Operadores
Suma y Resta ( +, - )
Si los números son enteros el resultado será entero, alguno es real será real el resultado.
Multiplicación ( * )
Si los números son enteros el resultado será entero, alguno es real será real el resultado.
DIV ( / )
Devuelve el resultado de la división sin decimales de una división
MOD ( % )
Devuelve el resto de la división
División normal ( / )
Te devuelve números reales
<> = ≤ ≥ ≠
Devuelve booleanos es decir verdadero o falso
Sucesor y Predecesor
Sucesor (+1) i++
Predecesor (-1) i--
Operadores complejos
Redondeo
Hay que poner al principio: #include <cmath>
floor(4.7) = 4.0
Pow (elevar a algo)
Hay que poner al principio: #include <cmath>
Despues pones: pow(base, a_lo_que_elevas);
Sqr (elevar al cuadrado)
Hay que poner al principio: #include <cmath>
Despues pones: sqr(base, a_lo_que_elevas);
Sqrt (raiz cuadrada)
Hay que poner al principio: #include <cmath>
Despues pones: sqrt(base, a_lo_que_elevas);
Análisis de casos
Operadores lógicos
Y = “&&”
Igual = “==”
O = “||”
If
Sirve para que cuando pase algo la maquina haga otra cosa
if (cond) {
S
}Else
Es complementario del if, cuando no se produce el if se reproduce el else
if (cond) {
S
} else {
R
} Switch
El switch sirve para elegir entre muchos casos
No se puede usar operadores lógicos
El default es muy importante pues es lo que hará si no le damos ningún input que requiera para darnos algo en especifico
Si no pones el break se ejecutarán todos los de debajo del caso que tu elijas, es decir si digo “B” me dirá lo que dice del B del C y el dafault
switch (PermisoConducir) {
case 'A':
cout << "Motocicletas y triciclos de motor";
break;
case 'B' :
cout << "Automóviles masa máxima autorizada <= 3500 kg";
break;
case 'C' :
cout << " Automóviles masa máxima autorizada > 3500 kg ";
break;
default :
cout << "No contemplado";
break;
}
Bucles
Si solo tienen una orden no hace falta poner llaves
Break
Se usa para para un bucle
Se puede usar
If (cond) break;
o
Break;
While
Se produce mientras la condición se cumpla, la condición se actualiza al principio, no al final
while (cond) {
S;
}
Do while
Hacer mientras: la comprobación se hace al final
int numero;
do
{
...
} while(numero <= 100); //comprueba al final
for
Esto es realmente un while donde al principio decimos cuanto vale i, despues le decimos que mientras i sea menos o igual que b se siga ejecutando y por ultimo le decimos cuanto va a ir subiedo que va a ser uno por uno
for (i = a; i<=b; i++){
S;
}Esto es lo mismo que:
i=a;
while (i<= b){
S;
i++;
}
Funciones
Hay variables de entrada y uno de salida
Lo que quieres que salga es lo que va después del return
Las funciones pueden devolver solo una variable y no la devuelven de vuelta como tal, simplemente haces que se produzca una operación entonces si quieres guardarte el resultado de una función en una variable tendrás que poner: max = Max2(500,200);
Si ponemos * en la función en vez de que sea solo un nombre y despues al llamarla tambien le ponemos un & al lado de la variable(&) la variable cambia dentro de la funcion y fuera
int sumar(int a, int b) {
return a + b;
}
resultado = sumar(num1, num2);Crear variables que se inicializan una vez
static int cuenta = 0;
Acciones
Se representan con un void "nombre"(variables){… }
Se declara encima de main
Si pones * puedes que hacer que sea de entrada y salida o solo salida. Tiene que llevarlo durante toda la acción
En la variable donde sale tiene que llevar &
void BinDec (int b1, int b2, int b3, int b4, int *dec)
{
*dec = b1*1 + b2*2 + b3*4 + b4*8;
}
BinDec (a1, a2, a1, a2, &decimal1);Si pones void en vez de variables lo que haces es que solo sea un procedimiento y ya
void despejarEntrada(void){
while(getchar() != '\n');
}
despejarEntrada();
Comandos Varios
Rand
primero inicializamos con srand();
Puedes ponen dentro de srand la funcion time para lo que necesitamos la librería #include <time.h>
Quedaría srand(time(NULL));
#include <stdio.h>
#include <windows.h>
#include <time.h>
int main ()
{
SetConsoleCP(1252);
SetConsoleOutputCP(1252);
srand(time(NULL)); //creamos una clave para randomizar
int numeroSecreto;
numeroSecreto=rand()%9+1; //Randomizamos
printf("Tu número secreto es %d\n",numeroSecreto);
printf("Pulse una tecla para contínuar...\n");
getchar();
return 0;
}randomizamos
x=rand()%21+20;