[PPA 02] Introducción a C

Sesión para el 5 de Julio de 2011 del curso de programación para audio que se está dictando en el Subterrakeo. Haga click aquí para info de horarios, cómo llegar o para suscribirse a la lista de correos.


Introducción a C

Lo mas básico

Este programa ilustra los conceptos de variables, funciones, tipos de variables, casting (conversión de tipos) y condicionales:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <stdio.h$gt; // Incluye librerías de entrada/salida

// Definición de una función llamada multipliquePorDos. Recibe un parametro de tipo float
// y devuelve otro float.
float multipliquePorDos(float num){
    float m = 2*num;
    return m;
}

// Recibe un numero por stdin y lo devuelve.
int pregunteUnNumero(){
    int i;
    printf("\n\nEntre un numero entero... \n");
    scanf("%i",&i);
    return i;
}

int main() // La función principal
{
//=======================================//
// Creación y asignación de variables. //
//=======================================//
int a = 2; // Crea una variable de tipo entero (int) que se llama "a" y le asigna un valor de 2.
printf("El valor de a es: %i \n", a); // Imprime el valor de a al std out.

char b; // Crea una variable de tipo caracter (char) que se llama "j".
b = 'j'; // Asigna el valor "j" a la variable "b".
printf("El valor de b es: %c \n", b);

float pi = 3.141516;
printf("PI: %f \n",pi);

//===================================//
// Algunos operadores aritméticos: //
//===================================//
float dosPi = 2 * pi; // multiplicación
float resultado = (1.0 + 3.2) / 2.0;
printf("El resultado: %f \n",resultado);

//=================================//
// Casting (conversión de tipos) //
//=================================//
int piEntero = (int)pi;
printf("PI: %i \n",piEntero);

// La mayoría de veces el casting sucede implicitamente
int division = 3.2 / 2.0;
printf("La division: %i \n",division);

float otraDivision = 3 / 2; // !!!
printf("La otra division: %f \n",otraDivision); // !!!

//==============//
// funciones: //
//==============//
// Llame a la función multipliquePorDos pasándole un 3 y almacene
// lo que devuelva la función en la variable "multi":
float multi = multipliquePorDos(3);
printf("Multi: %f \n", multi);

//==================//
// Condicionales: //
//==================//
int unNumero = pregunteUnNumero();

if(unNumero > 4){
    printf("El numero es mayor que 4.\n");
}
else{
    printf("El numero es menor o igual que 4 y es el ");
}

switch(unNumero){
    case(1):
        printf("uno.\n");
    break;

    case(2):
        printf("dos.\n");
    break;

    case(3):
        printf("tres.\n");
    break;

    case(4):
        printf("cuatro.\n");
    break;
}

return 0; // La función devuelve 0 (OK)
}

Aquí va una lista de algunos tipos de datos:

Tipo Bits Rango
short int 16 -16,384 a +16,383
unsigned short int 16 0 a +32,767
int 32 -2,147,483,648 a +2,147,483,647
unsigned int 32 0 a +4,294,967,295
unsigned char 8 0 a +255
float 32 1E-36 a 1E+36
double 64 1E-303 a 1E+303

Loops

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>

int main()
{

    int nota, i;

    printf("Entre la escala (Un numero de 0 a 11: 0 es Do, 1 es Do#, etc): ");
    scanf("%d",&nota);

    // Asegurese que nota no sea negativo.
    while (nota < 0) nota += 12;

    // Construya la escala
    for (i=0; i < 7; i++){
        // Convierta el numero a el nombre de la nota.
        if(nota%12==0) printf("C ");
        else if(nota%12 == 1) printf("Db ");
        else if(nota%12 == 2) printf("D ");
        else if(nota%12 == 3) printf("Eb ");
        else if(nota%12 == 4) printf("E ");
        else if(nota%12 == 5) printf("F ");
        else if(nota%12 == 6) printf("Gb ");
        else if(nota%12 == 7) printf("G ");
        else if(nota%12 == 8) printf("Ab ");
        else if(nota%12 == 9) printf("A ");
        else if(nota%12 == 10) printf("Bb ");
        else printf("B ");

        // Encuentre la siguiente nota, salte un semitono solo despues del tercer paso
        if(i != 2) nota += 2;
        else nota++;
    }
    printf("\n");
    return 0;
}

Ejercicios:

1. Escriba un programa en C que contenga un loop que permita visualizar en que valor una variable de tipo entero se desborda.

6 thoughts on “[PPA 02] Introducción a C

  1. rafa .. hicimos el primer ejercicio :

    // Ejercicio para mostrar el valor en que se desborda una variable de tipo entero

    #include
    #include

    int main()
    {
    int x=2;
    while (x>1)
    x=x+1;
    printf ("Un entero se desborda en : %i \n",x-1);
    }

  2. Pingback: 03. Introducción a C parte 2. Strings, arrays y punteros. | El Software Ha Muerto

  3. Aqui lo mismo en hexadecimal

    #include
    int main()
    {
    int x=2;
    while (x>1)
    x=x+1;
    printf ("Un entero se desborda en : %0x \n",x-1);
    }

  4. Pensiune Cheia

    Wow that was odd. I just wrote an incredibly long comment but after I clicked submit
    my comment didn't show up. Grrrr... well I'm not writing all that over again. Anyways, just wanted to say wonderful blog!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>