PDF de programación - Seminario de C - Sesión 1

Imágen de pdf Seminario de C - Sesión 1

Seminario de C - Sesión 1gráfica de visualizaciones

Publicado el 30 de Agosto del 2017
479 visualizaciones desde el 30 de Agosto del 2017
211,9 KB
7 paginas
Creado hace 19a (06/10/2004)
Algoritmos y Estructuras de Datos

Ingeniería en Informática, Curso 2º, Año 2004/2005



SEMINARIO DE C

Sesión 1

Contenidos:

1. Características generales de C
2. Edición y compilación de un programa C
3. Variables y tipos de datos básicos
4. Operadores
5. Sentencias de control de flujo
Ejercicios



Algoritmos y Estructuras de Datos, 2004/2005
Seminario de C – Sesión 1

2/7

1. Características generales de C



• C es un lenguaje estructurado de nivel alto, medio-bajo (débilmente tipado, con
punteros, goto), de tamaño reducido pero con una gran potencia y expresividad.


• Tipos de datos elementales: enteros (int, long, short), caracteres (char),
reales (float, double), enumerados (enum) y compuestos: arrays, registros
(struct) y uniones (union).

• No hay distinción entre funciones y procedimientos. Tienen la forma:



<tipo_devuelto> <nombre_operacion> (<parámetros>)
{

}



<codigo>

Si no devuelve nada o no hay parámetros, se pone void. No se pueden anidar.

• Sentencias de control de flujo:

iteración (for, while, do-while),

condicionales (if, if-else), selección de casos (switch).

• Expresiones y sentencias. Cualquier expresión en C puede ser una sentencia.
La asignación es una expresión, se expresa mediante el símbolo “=” (para la
comparación usar “==”). Por ejemplo “a= 4+(b=0);”. Las sentencias acaban
en “;”.

• Declaración de variables:


<tipo_variable> <nombre_variable> [, <nombre_variable>];


Las variables pueden ser globales (declaradas fuera de un procedimiento o
función) o locales (declaradas al principio del código de un procedimiento).

• Se distingue entre mayúsculas y minúsculas en el nombre de variables,
funciones, procedimientos y palabras clave. Todas las palabras clave van en
minúsculas.


• Escribir por pantalla: printf()



/* Esto es un comentario */


printf ("Hola mundo");
printf("%d", expresión_entero);
printf("%c", expresión_caracter);
printf("%f", expresión_real);
printf("Un entero: %d y un real: %f", entero, real);
printf("Dos caracteres: %c%c, con fin de línea.\n", car1, car2);



Algoritmos y Estructuras de Datos, 2004/2005
Seminario de C – Sesión 1


3/7

2. Edición y compilación de un programa C

• Un programa C está compuesto por un conjunto de funciones. Debe existir una
función llamada main, que es la que será invocada cuando se ejecute el
programa.

• El programa puede estar en uno o varios ficheros, con extensión: .c



• Ejemplos de programas C:


main () {} /* Programa que no hace absolutamente nada */


nada.c

/* Este hace un poco más... */
#include <stdio.h> /* Librería que contiene printf */

main (void)
{
printf("Hola mundo");
}

hola.c

#include <stdio.h> /* A veces se puede omitir... */

int main(int num_argumentos) /* Cuenta el num. de argumentos */
{
printf("%d argumentos\n", num_argumentos);
return 0;
}

argum.c



• Entrar en la máquina:

o Lilo: linux
o
o password:

login: aedXX

• Cambiar el password de la cuenta: yppasswd

• Crear y editar el fichero .c. Usar “joe”, “jed” o “rhide”.

• Compilar con gcc. Ejemplos:

>> gcc nada.c

>> gcc hola.c -o hola

>> gcc -o argum.exe argum.c



El ejecutable es “a.out”
El ejecutable es “hola”
El ejecutable es “argum.exe”



• Ejecutar los programas compilados:

>> hola
>> ./hola
>> ./argum.exe
>> ./argum.exe uno dos tres

Si no funciona es que el directorio actual no está en el PATH

Algoritmos y Estructuras de Datos, 2004/2005
Seminario de C – Sesión 1


3. Variables y tipos de datos básicos.

4/7



Tipo

Nombre Bits* Descripción

Carácter

char

8

Representa un carácter ASCII,
aunque se puede usar como un

número entre -128 y +127.

Entero

int

32

Entero de 32 bits, con signo.

Real

float

32

Número real en punto flotante.

Real
doble

double

64

Número real en punto flotante, con

doble precisión.

Ejemplo
char c1, c2;
c1= 'a';
c2= 'A' + 5;
printf("%c ", c2);
printf("%d ", c1);
int i1= 0;
i1= 288;
i1= 032; /*Octal*/
i1= 0xf0;/*Hexad*/
printf("%c", i1);
float f1= 0.0;
f1= 3.142;
f1= 3e-12;
printf("%f", f1);
printf("%g", f1);
printf("%5f", f1);
double d1;
d1= 4.3e-3;
printf("%f", d1);
printf("%4.3f",d1);

• Variantes: signed/unsigned, short/long

defecto, equivale a char).

o De char: unsigned char (número de 0 a 255), signed char (por
o De int: short int (entero corto, se puede poner sólo short), long
int (entero largo, se puede poner sólo long), long long (entero muy
largo), unsigned (equivalente a unsigned int), unsigned long,
etc.

o De double: long double.


• No existe el tipo booleano. En su lugar se usan los enteros, caracteres o

punteros: si vale 0 entonces significa false, cualquier otro valor es true.

int bol= (63>7);
char bol2= (5==2+3) && bol;


• Enumerados: enum



enum dias {lunes, martes, miercoles}; /* Definición del tipo */
enum dias d1= lunes, d2= miercoles; /* Declaración de variables */

enum sexo {hombre= 1, mujer= 2, nsnc= 3}; /* Asignación manual */
enum sexo s1= hombre;
/* Válido, aunque no recomendado */
enum sexo s2= 3;
printf("%d ", s1);
/* Se imprimen como enteros... */



• Probar el tamaño (en bytes) de los distintos tipos: sizeof(tipo)

printf("Tamaño de long long: %d bytes\n", sizeof(long long));


• ¿Cómo escribir un unsigned, un long long o un long double?



Ver man.



*Puede variar según la máquina y el compilador usados.

Algoritmos y Estructuras de Datos, 2004/2005
Seminario de C – Sesión 1

5/7



Tipo

Aritméticos

Relacionales

Booleanos

Operaciones
con bits

Asignación

Incrementales

Size of

Operadores
Suma: +
Resta: -
Multiplicación: *
División: /
Módulo: %
Igual: ==
Distinto: !=
Menor: <
Menos o igual: <=
Mayor: >
Mayor o igual: >=
No lógico: !
Y lógico: &&
O lógico: ||
No nivel bits: ~
Y nivel bits: &
O nivel bits: |
Xor nivel bits: ^
Despl. izq.: <<
Despl. Der.: >>
Asignación: =
Suma con asig.: +=
Resta con asig.: -=
*=, /=, …
Preincremento: ++c
Postincremento: c++
Predecremento: --c
Postdecremento: c--
sizeof(tipo)

Concatenación
de expresiones expr1 , expr2

Condicional

exp1 ? exp2:exp3

4. Operadores

Descripción

Ejemplo

Operadores aritméticos
elementales. Más operaciones
en las librerías matemáticas.

char c= 'A'-'a';
int i= c%4;
long l= 0xff*((double) 1);
double d= (2/3)*3;

Operadores de comparación
entre enteros, caracteres y
reales.

int cond1= (32>=4);
int cond2= (cond1<6);
cond1==cond2;

Operaciones lógicas,
aplicadas sobre enteros,
siendo 0 → false y otro valor
true.
Operaciones lógicas aplicadas
a nivel de bits. En los
desplazamientos: a << c,
significa desplazar c bits el
valor a.
Operaciones de asignación a
una variable. Las de forma:
a+= b, son equivalentes a:
a= a + b
Preincremento: devuelve c y
hace c= c+1
Postincremento: hace
c= c+1 y devuelve c
Devuelve el tamaño (en
bytes) de un tipo de datos.
Sirve para unir varias
expresiones en una misma
línea de código. El resultado
final es el de la derecha.
Expresión condicional. Si
exp1 es true el resultado es
exp2, si no exp3.

int a, b, c;
(!(a && (b || c)))

int a= 0xff, b= 0xf0;
(a & b);
(a | b);
a << 2;

int a, b, c;
a= b= c= 0;
a+= 1;
b+= c+= a;

char c, d= 0;
c= d++;
d= c++;

sizeof(char);
sizeof(double);

int i;
i= (i= 2, i++, i*= 2);

int a, b, max, min;
max= (a>b ? a : b);
min= (a<b ? a : b);



• Precedencia (de más a menos): aritméticos, relacionales, booleanos, asignación

y coma. Ver tablas.


• Conversión de tipos. Puede ser de dos tipos:

o Implícita. Se convierte la expresión al tipo de mayor rango:

long double > double > float > unsigned long > long > unsigned int > int > char

o Explícita. Haciendo un casting: (tipo) expresión



• ¿Cuál es el resultado de las siguientes expresiones?
double d; int i;
d= (double) 1/2;
d= 3.0; d*= 2.0; i= (d==6.0? 2 : 8);

i= 1/2;

d= 1/2;
d= ((double) (i=1))/2; (i= 1, i+= i++, i+= ++i);

i= 0.9/2;

d= 1./2;

Algoritmos y Estructuras de Datos, 2004/2005
Seminario de C – Sesión 1

6/7



5. Sentencias de control de flujo


• Goto: ¡¡¡Prohibido usarlo!!! (Recordar los espaguetis.)
• Condicional: if y if-else. La condición va siempre entre paréntesis.

if (condicion)
sentencia;

if (condicion) {
bloque sentencias
}

if (condición)
sentencia o bloque
else
sentencia o bloque

El else va siempre con el if más próximo.

if (condición)
sentencia o bloque
else if (condicion)
sentencia o bloque
else
sentencia o bloque

• Selección múltiple: switch. Según una expresión (entre paréntesis) salta a un
sitio dentro de una lista de sentencias. Los casos deben ser constantes (ctei).
Puede existir o no un caso por defecto. A partir de un punto, la ejecución es
secuencial (continúa con las sentencias siguientes). Parar con break.

switch (expresión) {
case cte1: sentencias
case cte2: sentencias
...
default: sentencias
}

switch (expresión) {
case cte1: sentencias
break;
case cte2: sentencias
break;

default: sentencias
}



• Iteración:
while y do-while. Repetir mientras las condición sea cierta.

while (condicion)
sentencia;

while (condicion) {
bloque sentencias
}

do
sentencia o bloque
while (condición);


for. Iteración con inicialización, condición e incremento.

Uso
for (exp1; exp2; exp3)
sentencia o bloque

Significado
Ejecuta la expresión de
inicialización exp1. Mientras la
cond
  • Links de descarga
http://lwp-l.com/pdf6663

Comentarios de: Seminario de C - Sesión 1 (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