PDF de programación - Introducción a C

Imágen de pdf Introducción a C

Introducción a Cgráfica de visualizaciones

Publicado el 18 de Abril del 2019
649 visualizaciones desde el 18 de Abril del 2019
78,0 KB
25 paginas
Creado hace 16a (20/02/2008)
Introducción a C

Grupo de Sistemas y Comunicaciones

[email protected]

Febrero 2008

C

1

C

Características:

Programación imperativa estructurada.

Relativamente de “bajo nivel”.

Lenguaje simple, la funcionalidad está en las bibliotecas.

Utilización natural de las funciones primitivas del sistema.

Básicamente maneja números, caracteres y direcciones de memo-
ria.

No tiene tipado fuerte.

c2008 GSyC

Introducción a C

Elprogramamássencillo

2

El programa más sencillo

/* Esto es un comentario */

#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[]) {
printf("Hello, world!\n");
exit(EXIT_SUCCESS);

}

c2008 GSyC

Introducción a C

Elprogramamássencillo(cont.)

3

Compilación de un programa en C

Compilador más habitual: gcc

Uso: gcc [opciones] fichero-fuente

-c

Solo compila (no enlaza)
Nombre del fichero de salida

-o fichero
-Wall -Wshadow Activa avisos

-g

Activa información de depuración

$ gcc -g -Wall -c hello.c
$ gcc -o hello hello.o
$ ./hello
Hello, world!
$ _

c2008 GSyC

Introducción a C

Elprogramamássencillo(cont.)

4

Compilación de un programa con módulos

En general, un programa se compone de varios ficheros fuente:
• entrada.c

• calculo.c

• salida.c

Primero hay que compilar primero cada uno de los ficheros:

$ gcc -g -Wall -c entrada.c
$ gcc -g -Wall -c calculo.c
$ gcc -g -Wall -c salida.c

Y luego enlazarlos para generar el ejecutable:

$ gcc -o programa entrada.o calculo.o salida.o

Si todo ha ido bien, podemos ejecutarlo:

$ ./programa

c2008 GSyC

Introducción a C

Elprogramamássencillo(cont.)

5

Directivas de preprocesador

#include <stdio.h>
#include <stdlib.h>

Necesarias para utilizar funciones en el programa, como printf()
y exit().

Hay que mirar la página de manual de cada función que vayamos
a usar, para saber qué líneas “#include <...>” tenemos
que poner.

Las más habituales son: “<stdio.h>”, “<stdlib.h>”, “<string.h>”,
“<unistd.h>”, “<fcntl.h>”. . .

c2008 GSyC

Introducción a C

Elprogramamássencillo(cont.)

6

Uso del manual

Para buscar una función en el manual:

$ man N título
Busca “título” en la sección “N” del manual.

Hay varias secciones distintas; las que nos interesan aquí son:
• 1. Comandos de usuario
• 2. Llamadas al sistema
• 3. Funciones de librería

Para obtener información acerca de una sección en concreto:

$ man N intro

Para buscar páginas de manual que traten de una palabra en
concreto:

$ apropos palabra

c2008 GSyC

Introducción a C

Elprogramamássencillo(cont.)

7

Punto de entrada en el programa

int
main(int argc, char *argv[]) {

Función con un nombre especial, “main”,

Esta función devuelve un valor de tipo entero, y recibe dos
parámetros.

Siempre se declara de esa manera.

Estas líneas forman la cabecera; el cuerpo (contenido) es lo
que hay entre las llaves { ... }

c2008 GSyC

Introducción a C

Elprogramamássencillo(cont.)

8

Sentencias

Una sentencia es típicamente una expresión o una llamada a una
función, terminada por el carácter “;”.

printf("Hello, world!\n");

Llamada a la función “printf()”, que imprime un texto por
pantalla, con un parámetro, “"Hello, world!\n"”

exit(EXIT_SUCCESS);

Llamada a la función “exit()”, que termina el programa, con
el parámetro “EXIT_SUCCESS”

c2008 GSyC

Introducción a C

Tiposdedatosfundamentales

9

Tipos de datos fundamentales

Nombre Descripción

Ejemplo

Tipos enteros

char

int

Carácter

Entero

97, ’a’

32769

Tipos reales

float

Precisión simple

3.1416

double

Precisión doble

3.141592653589

Otros

void

Conjunto vacío

c2008 GSyC

Introducción a C

Declaracióndeunavariable

10

Declaración de una variable

tipo indentificador[, identificador]... ;

int contador;

int
main(int argc, char *argv[]){

int dia, mes;
char c, d;

/* ... */

}

c2008 GSyC

Introducción a C

Declaracióndeunavariable(cont.)

11

Uso de una variable

int contador = 1;

int
main(int argc, char *argv[]){

int dia = 27, mes = 2;
char c, d;

c = 97;
d = ’Z’;
/* ... */
printf("Estamos en el dia %d\n", dia);

}

c2008 GSyC

Introducción a C

Declaracióndeunavariable(cont.)

12

Tamaños de variables y tipos de datos

C no define tamaños de tipos concretos

Se debe usar siempre “sizeof”

“sizeof(tipo)” me da el tamaño de un tipo

“sizeof variable” me da el tamaño de una variable

Si meto un tipo más grande en uno más pequeño, hay proble-
mas.

c2008 GSyC

Introducción a C

Declaracióndeunavariable(cont.)

13

printf()

#include <stdio.h>
printf(formato, arg, arg. . . );

formato es una cadena de caracteres "como esta", que puede
contener:

\n

Fin de línea

%d El siguiente parámetro (lo muestra como un número decimal)

%c El siguiente parámetro (lo muestra como un carácter)

. . .

. . .

Ejemplos:

printf("decimal = %d, caracter = %c\n", 100, 120);
printf("decimal = %d, caracter = %c\n", ’a’, ’z’);

c2008 GSyC

Introducción a C

Funciones

14

Funciones

Definición y declaración

tipo-resultado
nombre-función([parámetros]) {

declaraciones de variables locales;
sentencias;
[return [expresión]];

}

c2008 GSyC

Introducción a C

Funciones(cont.)

15

Paso de parámetros

#include <stdio.h>

void
calcula(int x, int y) {

printf("resultado = %d\n", x * y);

}

int
main(int argc, char *argv[]) {

calcula(35, 47);
return 0;

}

c2008 GSyC

Introducción a C

Operadores

16

Operadores

Operadores aritméticos

+

-

*
/

%

Suma.

Resta.

Multiplicación.

División.

Módulo (resto de la división entera).

( ... ) Agrupación de expresiones.

Las operaciones con enteros dan siempre un resultado entero

c2008 GSyC

Introducción a C

Operadores(cont.)

17

Operadores aritméticos

int
main(int argc, char *argv[]) {

int c, a = 10, b = 3;

c = (a / b) * b; /* 9 */
printf("(%d / %d) * %d = %d\n", a, b, b, c);
exit(EXIT_SUCCESS);

}

c2008 GSyC

Introducción a C

Operadores(cont.)

18

Operadores de asignación

++

Incremento

-- Decremento

=

Asignación simple

+= Suma y asignación

-= Resta y asignación
*= Multiplicación y asignación
/= División y asignación

%= Módulo y asignación

c2008 GSyC

Introducción a C

Operadores(cont.)

19

Operadores de asignación

int
main(int argc, char *argv[]) {
int x = 10, n = 0, i = 0;

/* Incrementa x en 1 */
/* Incrementa x en 1 */

x++;
++x;
printf("%d\n", --n); /* Decrementa y luego asigna */
printf("%d\n", n--); /* Asigna y luego decrementa */
i += 2;
return 0;

/* i = i + 2 */

}

c2008 GSyC

Introducción a C

Operadores(cont.)

20

Operadores de relación

a < b

a > b

“a” menor que “b”

“a” mayor que “b”

a <= b

“a” menor o igual que “b”

a >= b

“a” mayor o igual que “b”

a != b

“a” distinto de “b”

a == b

“a” igual a “b”

Operadores lógicos

a && b AND. Cierto si “a” y “b” son ciertos

a || b OR. Cierto si “a” o “b” son ciertos

!a

NOT. Cierto si “a” es falso, falso si es cierto

c2008 GSyC

Introducción a C

Operadores(cont.)

21

Operadores de relación, operadores lógicos

En C no existe el tipo “booleano”, todas las comparaciones devuelven
un número entero (int);

Falso, un valor igual a 0

Verdadero, cualquier otro valor

Por lo tanto, estos operadores devuelven 0 o un valor distinto de 0
(normalmente 1), dependiendo de si se cumple o no la condición.

printf("Resultado=%d\n", (5>3 && 7<=10));

Esta línea imprime un 1.

c2008 GSyC

Introducción a C

Operadores(cont.)

22

Otros Operadores

&

*
&

(unario) Dirección-de. Da la dirección de su operando

(unario) Indirección. Acceso a un valor, teniendo su dirección

AND de bits

| OR de bits

^

~

XOR de bits

NOT de bits

<< Desplazamiento binario a la izquierda

>> Desplazamiento binario a la derecha

?: Operador ternario

c2008 GSyC

Introducción a C

Operadores(cont.)

23

Precedencia de operadores

() [] -> .

izquierda a derecha

! ++ -- * & ~ (unarios)

derecha a izquierda

* / %
+ -

< <= > >=

== !=

& ^ |

&&

||

izquierda a derecha

izquierda a derecha

izquierda a derecha

izquierda a derecha

izquierda a derecha

izquierda a derecha

izquierda a derecha

= += -= *= /= %= &= . . .

derecha a izquierda

,

izquierda a derecha

c2008 GSyC

Introducción a C

Sentenciasdecontrol:if

24

Sentencias de control: if

if (expresión)

sentencia;

if (expresión) {

sentencia1;
sentencia2;

...

}

Si “expresión” se evalúa como verdadera (esto es, distinta de 0),
se ejecuta la sentencia (o sentencias, en el caso de un bloque
encerrado entre llaves).

c2008 GSyC

Introducción a C

Sentenciasdecontrol:else

25

Sentencias de control: else

Solo se puede usar justo a continuación de un “if”:

if (expresión)

sentencia1;

else

sentencia2;

if (expresión) {

sentencia1;

...

} else {

sentencia2;

...

}

Si “expresión” es verdadera, se ejecuta “sentencia1”. En otro caso,
se ejecuta “sentencia2”.

c2008 GSyC

Introducción a C

Sentenciasdecontrol:else(cont.)

26

else if

int a = 10, b = 20, c = 0, menor;
if (a < b) {

if (a < c) {
menor = a;

}
else {

menor = c;

}

} else if (b < c) {

menor = b;

} else {

menor = c;

}
printf("Menor = %d", menor);

c2008 GSyC

Introducción a C

Sentenciasdecontrol:else(cont.)

27

while

while (expresión) {

sentencias;

}

1. Se evalúa la “expresión”. Si es verdadera (distinta de 0):

Se ejecutan las “sentencias”.
Vuelve al punto 1.

Resumiendo, un “while” es un bucle que se repite siempre que la
condición siga siendo verdadera.

Un bucle infinito se puede conseguir con “while (1)”.

Se puede usar la orden “break” en cualquier momento para salir
del bucle.

c2008 GSyC

Introducción a C

Sentenciasdecontrol:else(cont.)

28

for

for ( inicialización ; condición ; actualización ) {

sentencias;

}

1. Se ejecuta la “inicialización”

2. Se evalúa la “condición”; si es verdadera:

Se ejecutan las “sentencias”
Se ejecuta la “actualización”
Vuelve al punto 2.

Un ejemplo de un bucle que se repite 10 veces, usando la variable
“i” (desde i=0 hasta i=9) sería:
  • Links de descarga
http://lwp-l.com/pdf15754

Comentarios de: Introducción a C (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad