Curso C
Repaso – cosas básicas
Concepto programa
¿Qué es un programa?
◦ Secuencia ordenada de instrucciones con
el fin de realizar una tarea
Lenguaje ensamblador vs lenguaje alto
nivel
◦ Ensamblador : Más cercano a lenguaje
maquina; nemotecnico; requiere
conocimiento de la arquitectura;
◦ Alto nivel: cercano a lenguaje humano;
no requiere conocimiento arquitectura
Compilador e Interprete
Compilador
◦ Analiza el código escrito y genera
instrucciones en lenguaje maquina
(programa objeto).
◦ Posteriormente Linkado enlaza librerías
y otros programas objeto y genera .exe
Interprete
◦ Analiza y ejecuta un programa sentencia
a sentencia; no genera ejecutable
◦ Menos eficiente, pero muy versátil
Java
C# (pseudo interpretado)
Bloques de un programa
1- Directivas pre-procesador
◦ Includes, defines, pragmas,…
2- Bloque del programador
◦ Comentario inicial indicando:
Nombre programa
autor
Descripcion
Variables globales y explicacion
Definicion de funciones
3- Funcion Principal (main)
4- Resto funciones
Tipos de datos: variables
variable
◦ TipoDato identificador[,identificador,…];
Constantes
◦ Valores numéricos
23484 de tipo int
253u indica unsigned
746L indica long
583UL indica usigned long
◦ Octales y hexadecimales
011 valor octal, equivale a 9 en
base 10
0xA hexadecimal
◦ Científica: .874e-2 double= .00874
◦ caracteres
◦ const int mivar=5 enum dia{lunes=1,martes}
Tipos de Datos
Tipo Tamaño (bytes)
Depende de
Linux/Intel i686.
compilador, S.O,
char 1 arquitectura. Int,
int / long int, 4 long double
unsigned int
float 4
double 8
short int 2
long double 12
Tipos de datos: almacenamiento
Modo de almacenamiento de variables:
◦ auto-> defecto para variables declaradas
en bloques {} -> son locales
◦ extern-> variables globales. Son visibles
en un fichero. Para hacerlas visibles en
otros, declararlas en otros como extern.
Inicializacion por defecto a 0
◦ static-> conservan su valor entre
distintas ejecuciones dentro de un
bloque
◦ register-> recomendación a compilador
almacenar dicha variable en registro
CPU.
Tipos de datos: conversion
Implicitas
◦ Por ejemplo sumar variables distinto tipo
(int + float), int se convierte a float para
poder sumarse.
◦ Asignar a variable resultado operaciones
double x= i*j+1 donde i,j son int
Explicitas (casting)
◦ K= (int) 1.7 + (int) masa;
◦ Suele usarse en los valores de retorno
de las funciones.
◦ Importante en operaciones como
division.
Operadores
Aritmeticos
◦ +, - , *, /, %
Asignacion
◦ =, +=, -=, *=, /=
Ejemplo: distancia+=1 -> distancia=distancia +1;
Incrementales
◦ ++, --
Relacionales
◦ ==, <=,>=,<,>,!=
Lógicos
◦ &&, || , !
Para evaluar expresiones
Operadores
Operadores bits
◦ & (and),| (or),^ (xor), ~ (c1),
>>(desplz. Dcha), << (desplz. Izda)
Eficiencia multiplicar, dividir
Operadores
Otros
◦ sizeof
◦ [], ()
◦.
◦ ->
◦ & (variables)
◦ * (variables)
Operadores: precedencia
Control Flujo Ejecucion
Operador condicional
◦ Expresion1? Expresion2: expresion3
if (expresion){} else {}
switch
goto (salta a una etiqueta) Sólo usar en
programas bajo nivel
Control Flujo Ejecucion
Bucles
◦ for
Flexible: podemos obviar algunas
secciones, varias inicializaciones,
incrementos, condiciones (separadas por
comas)
◦ while
Mientras condicion cierta -> ejecuta
Control Flujo Ejecucion
Bucles
◦ do..while
Se ejecuta al menos una vez
break -> interrumpe ejecucion bucle y
salta a siguiente instrucción fuera.
continue-> fuerza siguiente iteracion
bucle
Entrada/salida
printf -> imprime en la unidad de
salida el texto, constantes y variables
que se indiquen.
◦ int printf(“cadena control”, argumento1,
argumento2,…);
Ejemplo:
◦ int i=5; float masa=3.2;
printf(“resultado nº: %d, masa= %f \n”,i,masa);
Entrada/salida
printf (modificadores)
%c imprime un carácter con el código ASCII dado (con 66 imprime
B, por ejemplo).
%s una cadena
%d un decimal
%u un decimal negativo o positivo sin signo
%o un integral en octal
%x un integral en hexadecimal
%e un número con punto flotante en notación científica
%f un número con punto flotante en notación decimal
%g puede ser %e ó %f, lo que decida printf que es lo mejor
%X lo mismo que %x pero con mayúsculas
%E como %e pero con 'E' mayúscula
%G lo mismo que %E cuando se usa notación científica
%p un "pointer"; imprime la locación en memoria de una variable
en hexadecimal
%n imprime la cantidad de caracteres desplegados hasta el
momento
Entrada/salida
printf (modificadores)
%c imprime un carácter con el código ASCII dado (con 66 imprime
B, por ejemplo).
%s una cadena
%d un decimal
%u un decimal negativo o positivo sin signo
%o un integral en octal
%x un integral en hexadecimal
%e un número con punto flotante en notación científica
%f un número con punto flotante en notación decimal
%g puede ser %e ó %f, lo que decida printf que es lo mejor
%X lo mismo que %x pero con mayúsculas
%E como %e pero con 'E' mayúscula
%G lo mismo que %E cuando se usa notación científica
%p un "pointer"; imprime la locación en memoria de una variable
en hexadecimal
%n imprime la cantidad de caracteres desplegados hasta el
momento
Entrada/salida
printf (formato)
Entrada/salida
printf (formato)
Entrada/salida
gotoxy (int x, int y)
◦ Posiciona el cursor en la pantalla.
Posicion 1,1 es la esquina superior
izquierda.
clrscr
◦ Limpia/borra la pantalla
◦ Ojo, estas dos sentencias solo para
consola DOS
Entrada/salida
scanf
◦ Funciona de forma similar que printf,
pero para entrada de datos desde
teclado
int scanf(“%x1, %x2”, &arg1, &arg2);
Donde %x1y%x2 son modificadores del
tipo %d,%f,%s, etc
Entrada/salida
putchar/getchar
◦ Permiten escribir o leer un solo carácter
◦ Ej. putchar(‘a’);
c= getchar()