Presentación de C
Presentación de C
Presentación de C
Programacin 2
Instituto de Computacin, Facultad de Ingeniera,
Universidad de la Repblica, Uruguay
2 de marzo de 2016
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
1 / 34
Objetivos
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
2 / 34
Objetivos
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
2 / 34
Objetivos
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
2 / 34
Objetivos
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
2 / 34
Lenguaje
Lenguaje: C*
Es el lenguaje C, pero sumndole algunas (pocas) cosas de C++
Es ficticio
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
3 / 34
hola.pas:
hola.cpp:
#include <stdio.h>
program Hola;
begin
writeln('Hola, mundo!');
end.
Programacin 2
int main()
{
printf("Hola, mundo!\n");
return 0;
}
Introduccin al lenguaje C
2 de marzo de 2016
4 / 34
hola.pas:
hola.cpp:
#include <stdio.h>
program Hola;
begin
writeln('Hola, mundo!');
end.
int main()
{
printf("Hola, mundo!\n");
return 0;
}
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
4 / 34
Compilacin
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
5 / 34
Compilacin
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
5 / 34
Compilacin
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
5 / 34
Compilacin
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
5 / 34
Compilacin
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
5 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
6 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
6 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
6 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
6 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
6 / 34
Declaracin de variables
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
7 / 34
Declaracin de variables
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
7 / 34
Declaracin de variables
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
7 / 34
Declaracin de variables
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
7 / 34
Comentarios
/* comentario
de
varias
lineas */
int i = 1; /* asigno 1 a i */
char c; // comentario de una linea (C++)
float f;
// otro comentario
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
8 / 34
Expresiones I
Operador de asignacin: =
int a;
int b = 2;
a = 7;
a = b;
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
9 / 34
Expresiones I
Operador de asignacin: =
int a;
int b = 2;
a = 7;
a = b;
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
9 / 34
Expresiones I
Operador de asignacin: =
int a;
int b = 2;
a = 7;
a = b;
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
9 / 34
Expresiones II
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
10 / 34
Expresiones II
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
10 / 34
Expresiones II
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
10 / 34
Expresiones II
equivale a:
(((a+1) < b) && (c == (9*d))) || (e < 7)
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
10 / 34
Expresiones III
Incremento y decremento: ++ y --
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
11 / 34
Expresiones III
Incremento y decremento: ++ y -++a incrementa el valor de a y retorna su valor luego del incremento
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
11 / 34
Expresiones III
Incremento y decremento: ++ y -++a incrementa el valor de a y retorna su valor luego del incremento
a++ incrementa el valor de a y retorna su valor antes del incremento
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
11 / 34
Expresiones III
Incremento y decremento: ++ y -++a incrementa el valor de a y retorna su valor luego del incremento
a++ incrementa el valor de a y retorna su valor antes del incremento
Anlogo para decrementar
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
11 / 34
Expresiones III
Incremento y decremento: ++ y -++a incrementa el valor de a y retorna su valor luego del incremento
a++ incrementa el valor de a y retorna su valor antes del incremento
Anlogo para decrementar
int
int
b =
c =
a = 1;
b, c;
++a;
a++;
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
11 / 34
Expresiones III
Incremento y decremento: ++ y -++a incrementa el valor de a y retorna su valor luego del incremento
a++ incrementa el valor de a y retorna su valor antes del incremento
Anlogo para decrementar
Valores finales:
int
int
b =
c =
a = 1;
b, c;
++a;
a++;
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
11 / 34
Expresiones III
Incremento y decremento: ++ y -++a incrementa el valor de a y retorna su valor luego del incremento
a++ incrementa el valor de a y retorna su valor antes del incremento
Anlogo para decrementar
Valores finales:
int
int
b =
c =
a = 1;
b, c;
++a;
a++;
Programacin 2
a3
Introduccin al lenguaje C
2 de marzo de 2016
11 / 34
Expresiones III
Incremento y decremento: ++ y -++a incrementa el valor de a y retorna su valor luego del incremento
a++ incrementa el valor de a y retorna su valor antes del incremento
Anlogo para decrementar
Valores finales:
int
int
b =
c =
a = 1;
b, c;
++a;
a++;
Programacin 2
a3
b2
Introduccin al lenguaje C
2 de marzo de 2016
11 / 34
Expresiones III
Incremento y decremento: ++ y -++a incrementa el valor de a y retorna su valor luego del incremento
a++ incrementa el valor de a y retorna su valor antes del incremento
Anlogo para decrementar
Valores finales:
int
int
b =
c =
a = 1;
b, c;
++a;
a++;
Programacin 2
a3
b2
c 2
Introduccin al lenguaje C
2 de marzo de 2016
11 / 34
Constantes I
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
12 / 34
Constantes II
O usando const:
#include <stdio.h>
int main() {
const int BASE = 10;
const int ALTURA = 5;
int area = BASE * ALTURA;
printf("Area: %d", area);
return 0;
}
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
13 / 34
Constantes II
O usando const:
#include <stdio.h>
int main() {
const int BASE = 10;
const int ALTURA = 5;
int area = BASE * ALTURA;
printf("Area: %d", area);
return 0;
}
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
13 / 34
Constantes II
O usando const:
#include <stdio.h>
int main() {
const int BASE = 10;
const int ALTURA = 5;
int area = BASE * ALTURA;
printf("Area: %d", area);
return 0;
}
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
13 / 34
Estructuras de control I
Seleccin
Sentencia if:
if (6 <= valor && valor <= 12) {
printf("Aprobado");
cantidad_aprobados++;
} else if (valor >= 3)
printf("Examen");
else if (valor >= 0)
printf("Reprobado");
else
printf("Valor incorrecto");
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
14 / 34
Estructuras de control II
Seleccin
Sentencia switch:
switch (valor) {
case 6: case 7: case 8: case 9: case 10: case 11: case 12:
printf("Aprobado");
cantidad_aprobados++;
break;
case 3: case 4: case 5:
printf("Examen");
break;
case 0: case 1: case 2:
printf("Reprobado");
break;
default:
printf("Valor incorrecto");
}
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
15 / 34
Iteracin
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
16 / 34
Iteracin
Sentencia while:
while (condicion)
cuerpo
int i = 0;
while (i < 10) {
printf("*");
i++;
}
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
16 / 34
Estructuras de control IV
Iteracin
Sentencia for:
for (inicio; condicion; paso)
cuerpo
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
17 / 34
Enumerados: enum
enum mes {enero, febrero, marzo, abril, mayo, junio, julio, agosto, setiembre, octubre, noviembre, diciembre};
mes este_mes = marzo;
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
18 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
19 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
19 / 34
Introduccin al lenguaje C
2 de marzo de 2016
19 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
20 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
20 / 34
Introduccin al lenguaje C
2 de marzo de 2016
20 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
21 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
21 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
21 / 34
Introduccin al lenguaje C
2 de marzo de 2016
21 / 34
Punteros y estructuras
(*puntero_fecha).f_dia = 4;
puntero_fecha->f_dia = 4; // ms fcil
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
22 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
23 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
23 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
23 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
23 / 34
Dinmicos:
int* vector = new int[10];
delete [] vector;
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
23 / 34
Arreglos
Tener en cuenta que ni C ni C++ verifican que el ndice est dentro del
rango permitido. Te deja as acceder a otra direccin de memoria, y a
veces puede dar segmentation fault.
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
24 / 34
Conversin de tipos I
La mayora de las conversiones son implcitas
float vf = 1.6;
int vi = 1 + vf; // vi = 2 (float se trunca)
vi = 1 + vf + vf; // vi = 4 (cast al "ms grande")
vi = vi + true; // vi = 5 (true es 1)
vi = vi + false; // vi = 5 (false es 0)
vi = 'a' + 1; // vi = 98 (valor ASCII)
char vc = 'a' + 1; // vc = 'b'
vf = 1.5 + vi // vf = 99.500000
bool vb = 237; // vb = true (0 es false, otro true)
vf = 3 / 2; // vf = 1.000000
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
25 / 34
Conversin de tipos II
El resultado es 1?
Error comn: haber puesto = en lugar de ==. Aunque el resultado
es 1, si cambiamos por == obtenemos 101.
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
26 / 34
Funciones I
Funciones
int sumar(int a, int b) {
return a + b;
}
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
27 / 34
Funciones II
Procedimientos
void imprimirSuma(int a, int b) {
int suma = a + b;
printf("La suma es: %d\n", suma);
}
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
28 / 34
Funciones III
Las funciones no se puede anidar
En C todos los parmetros se pasan por valor
En C++ (y C*) existe el pasaje por referencia (&)
void sumarEnB(int a, int & b) {
b = a + b;
}
Introduccin al lenguaje C
2 de marzo de 2016
29 / 34
Entrada/Salida I
printf: impresin en salida estndar
printf("hola mundo\n");
printf("-> %d, ", estructura->dato);
printf("( %d, %d)\n", pri, seg);
int
char
float
char*
Introduccin al lenguaje C
2 de marzo de 2016
30 / 34
Entrada/Salida II
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
31 / 34
Entrada/Salida III
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
32 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
33 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
33 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
33 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
33 / 34
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
33 / 34
Ms informacin
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
34 / 34
Ms informacin
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
34 / 34
Ms informacin
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
34 / 34
Ms informacin
Consultar en EVA
Programacin 2
Introduccin al lenguaje C
2 de marzo de 2016
34 / 34