En estos repositorios dejo algunas prácticas que hice con el latín de los lenguajes de programación. No todo es perfecto, pero en su momento lo hice con mucho cariño.
Los ejercicios y apuntes los tome en clases de Juantxi Rodríguez (juantxiacademiahiperion@gmail.com)
Lista de funciones: [https://es.wikipedia.org/wiki/Anexo:Funciones_de_la_biblioteca_est%C3%A1ndar_de_C](https://es.wikipedia.org/wiki/Anexo:Funciones_de_la_biblioteca_estándar_de_C)
Lista de todas las especificaciones de formato: <https://codeforwin.org/2015/05/list-of-all-format-specifiers-in-c-programming.html>
\* → Puntero. Tipo de dato que almacena una dirección de memoria.
Constantes
` #define NOMBRE valor`
`nombre = valor; `
`int numero1;`
Definición:
` `tipo nombre ;
nombre: No puede empezar por un número. No puede estar reservado
La diferencia principal entre constante y variable es que una constante no se puede modificar una vez se define, mientras que una variable sí.
Especificadores de formato:
`%d` → entero
`%f` → reales
`%c` → 1 carácter
`%s` → cadenas de caracteres
Allá donde veas un `&` se trata de una dirección de memoria.
Asignación `=`
Aritmético `+ - * / %`
Relacionales `== != > < >= <=`
Lógicos `! NOT && AND || OR`
Crear un programa en C que pida al usuario dos números enteros y nos muestre por pantalla su suma, su diferencia, su producto y la división del primero entre el segundo.
He hecho otro programa que compara 3 números e indica el valor mayor [ compara3Numeros.c ], pero no tiene bien la estructura de control. Si pones una letra no da error sino que dice un resultado extraño:
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.004.png"alt="esbozo"><figcaption><b>Captura a esbozos de Juantxi Rodríguez</b></figcaption></figure>
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.005.png"alt="esbozo"><figcaption><b>Captura a esbozos de Juantxi Rodríguez</b></figcaption></figure>
Pedir al usuario dos enteros y sacar por pantalla todos los números pares entre el más pequeño y el más grande.
```
#include<stdio.h>
int main (){
int num1, num2, menor, mayor, i;
printf("\nIntroduce un número donde empieza el conteo de pares: ");
scanf("%d", &num1);
printf("\nIntroduce un número para finalizar el conteo de pares: ");
scanf("%d", &num2);
if(num1<num2){
menor=num1;
mayor=num2;
}else{
menor=num2;
mayor=num1;
}
for(i=menor; i<=mayor; i++){
if (i%2==0){
printf("%d ",i);
}
}
//hacer una cuenta atrás desde un número pedido al usauario
}
```
Programa que pida números al usuario hasta que este introduzca un número impar. Cuando introduzca el par el programa mostrará la media de los números introducidos.
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.006.png"alt="esbozo"><figcaption><b>Captura de la pantalla de Juantxi Rodríguez</b></figcaption></figure>
Ejercicio 1: Programa que pida números al usuario hasta que este introduzca un número que sea primo.
```
#include<stdio.h>
int main (){
// Variables
int numero=0;
int divisores=0;
int primo=0; // primo = 0 no primo = 1
// Solicitar numero entero hasta valor -1
do
{
printf("\nIntroduce un número, si es primo se cerrará el programa: ");
scanf(" %d",&numero);
if(numero!=-1 && numero>0)
{
// el numero es mayor que 0, comprobar si es primo
primo=0;
divisores=2;
while(divisores<numero&&primo!=1)
{
if(numero%divisores==0) primo=1;
divisores++;
}
// Si primo vale 0 es que el numero no es primo
printf("\nEl numero %d no es primo",numero);
printf("\n");
}
// Si primo vale 1 es que el numero es primo y utilizará la condición para salir del bucle
} while(primo==1);
return 0;
}
```
CORRECIÓN:
```
Esprimo=1;
for(i=2;i<numero;i++){
` `if(numero%i==0){
` `esprimo=0;
` `}
}
if(esprimo==1){
` `----es primo ---
}else{
` `---no es primo---
}
```
Ejercicio 2: Programa que pida dos números al usuario. El programa comprobará si esos dos números son números amigos. Dos números amigos son dos números enteros positivos a y b tales que la suma de los divisores propios de uno es igual al otro número y viceversa. Por ejemplo el 220 y el 284 son números amigos ya que sus divisores son:
- De 220 son 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y 110, que suman 284;
- De 284 son 1, 2, 4, 71 y 142, que suman 220.
Hay que tener en cuenta que se trata de divisores propios, es decir, no se tiene en cuenta para la
suma el propio número.
Ejercicio 3: Programa que pida tres números entero al usuario y a continuación muestre un menú como el siguiente:
1. Sumar los dos primeros números.
1. Multiplicar el segundo con el tercero.
1. Mostrar los tres números en orden.
1. Comprobar si el primero es primo.
1. Comprobar si el segundo es un número perfecto (un número perfecto es un número entero positivo tal que es igual a la suma de sus divisores propios positivos. Dicho de otra forma, un número perfecto es aquel que es amigo de sí mismo. Por ejemplo el 28, cuyos divisores son 28 = 1 + 2 + 4 + 7 + 14 es perfecto.
1. Salir.
El programa se repetirá hasta que el usuario pulse la opción de salir. Si el usuario introduce cualquier opción que no sea 1, 2, 3, 4, 5 o 6 se le mostrará un mensaje de “opción no disponible”.
Al comienzo cuando se piden los tres números al usuario el programa se debe asegurar de que el usuario introduce números positivos. En caso de que no meta un número positivo se lo vuelve a pedir.
# **3. Arrays**
estáticas y homogéneas
unidimensionales → vectores
bidimensionales → matrices
tridim….
…
`Tipo nombre [tamaño];`
El tamaño se puede dar con una constante: define
```
#define TAM 10
int vector[TAM]
```
Elemento a elemento.
Cada una de las celdas de memoria tendrá una numeración/índice que empieza por 0. Están indizadas.
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.007.png"alt="esbozo"><figcaption><b>Captura de esbozo de Juantxi Rodríguez</b></figcaption></figure>
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.009.png"alt="esbozo"><figcaption><b>Captura a la pantalla de Juantxi Rodríguez</b></figcaption></figure>
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.010.png"alt="esbozo"><figcaption><b>Captura de bosquejo de Juantxi Rodríguez</b></figcaption></figure>
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.011.png"alt="esbozo"><figcaption><b>Captura de bosquejo de Juantxi Rodríguez</b></figcaption></figure>
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.012.png"alt="esbozo"><figcaption><b>Captura de bosquejo de Juantxi Rodríguez</b></figcaption></figure>
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.020.png"alt="esbozo"><figcaption><b>Captura de bosquejo de Juantxi Rodríguez</b></figcaption></figure>
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.021.png"alt="esbozo"><figcaption><b>Captura de bosquejo de Juantxi Rodríguez</b></figcaption></figure>
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.022.png"alt="esbozo"><figcaption><b>Captura de bosquejo de Juantxi Rodríguez</b></figcaption></figure>
Las funciones sirven para encapsular el código y para reutilizar el código
Propósitos:
- Modularización del código. Encapsular, mejora la visibilidad,
- Reutilización. No repetir la escritura del código, reutilizar el mismo. Cuanto más se programe, menos se tenga que programar.
-
# EJERCICIOS
## **Funciones para el tres en raya**
- Comprobar si gana el jugador 1 → Pueden devolver 0 si no ha ganado o 1 si ha ganado
- Comprobar si gana el jugador 2 → Pueden devolver 0 si no ha ganado o 1 si ha ganado. (Debe recibir como argumento matriz y carácter que defina el jugador)
- Empate
- Mostrar el tablero → `void`
Habría que pasar la matriz como argumento.
Probamos meter como argumento una matriz.
Solo se necesita indicar las columnas de la matriz: void cargar(int m[][COLUMNAS])
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.023.png"alt="esbozo"><figcaption><b>Captura de bosquejo de Juantxi Rodríguez</b></figcaption></figure>
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.024.png"alt="esbozo"><figcaption><b>Captura de bosquejo de Juantxi Rodríguez</b></figcaption></figure>
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.025.png"alt="esbozo"><figcaption><b>Captura de bosquejo de Juantxi Rodríguez</b></figcaption></figure>
<figure><imgsrc="img/Aspose.Words.49c12fff-a89e-4b3d-97ea-e0f742c30e14.026.png"alt="esbozo"><figcaption><b>Captura de bosquejo de Juantxi Rodríguez</b></figcaption></figure>