You are on page 1of 61

Estructura de un

programa en C

Programacin en C
Un programa en C es un conjunto de instrucciones en el
lenguaje muy similar al ingls.
Este lenguaje se define por dos cosas:
Una sintaxis
Conjunto de palabras del lenguaje denominadas
palabras reservadas o identificadores.
El lenguaje C es sencible al contexto, es decir, las letras
minsculas son distintas de las letras maysculas.
Una gramtica
Formas correctas de combinar las palabras para construir
instrucciones.

Programacin en C
Todo programa en C tiene la siguiente estructura:

Un conjunto de declaraciones previas (opcionales)


El inicio del programa
Las instrucciones a ejecutar (cuerpo del programa)
El fin del programa

Todo esto se escribe en un archivo, que se llama cdigo


fuente.

Programacin en C
Declaraciones previas
(opcional)
Inicio
Instrucciones
Fin

Declaraciones previas
Definir el uso de bibliotecas
Archivos escritos por otra persona con
funciones que facilitan aspectos especficos
de la programacin.

Definir el uso de otros archivos


Con otras declaraciones previas

Definir nombres y valores de constantes


Definir variables globales

Declaraciones previas
Sintaxis general
Indica el nombre o valor del elemento. Depende del tipo

#accin valor
Indica que tipo de elemento se esta definiendo
Indica que es una declaracin previa.
Tambin se les llama instrucciones del preprocesador

Declaraciones previas
Ejemplos
#include <math.h>
#include misdeclaraciones.h
#define PI 3.1425
#define IVA 0.18

Define la constante de
tipo real llamada IVA con
el valor 0.18

Indica que se va a utilizar


la biblioteca de funciones
matemticas
Indica que se va a utilizar
un archivo con otras
declaraciones

Define la constante
llamada PI con el valor
3.1415

Declaraciones previas
Cdigo fuente

Cabecera de bibliotecas

Pre procesamiento
Cdigo fuente procesado
Compilacin
Cdigo objeto

Enlace

Bibliotecas

Inicio y termino del programa


Antes de esto, se define el termino
funcin
Una funcin es un conjunto de instrucciones
definidas en un bloque tabulado con nombre
Puede recibir parmetros de entrada
Define una salida
Todo programa en C es una funcin!

Inicio y termino del programa


Definicin de una funcin
Los parmetros de entrada (puede ser una lista)
salida nombre(parmetros)

El nombre de la funcin (debe ser nico)


Se define el tipo de dato que entrega como resultado

Inicio y termino del programa


Para demarcar el inicio del programa, se
define una funcin.
El nombre de esta funcin debe ser main
El inicio del bloque se demarca por el
carcter {
Para finalizar el bloque simplemente se
escribe el carcter }

Inicio y termino del programa


Definicin del cuerpo del programa
#include <math.h>
#include misdeclaraciones.h
#define PI 3.1425
#define IVA 0.18
void main(){
(cuerpo del programa)
}

Inicio y termino del programa


Definicin del cuerpo del programa
Solo se puede definir un cuerpo de programa
Una sola funcin llamada main.

Se puede definir en otro archivo.

Instrucciones
Las instrucciones se escriben en el cuerpo del
programa.
Pueden ser:

Declaraciones de variables
Asignaciones
Estructuras de control
Llamadas a funciones

Por lo general, terminan con un punto y coma (;)


Instruccin_en_lenguaje_C;

Instrucciones
Ejemplo completo
#include <math.h>
#define PI 3.1425
#define IVA 0.18
void main(){
printf(Hola mundo!\n);
printf(Hola mundo!!\n);
printf(Hola mundo!!!\n);
}

Programa en C
Edicin del programa
En Windows se puede usar Notepad o el editor del
lenguaje
En Unix, se usa emacs o vi u otro editor
Guardar el texto en un archivo llamado prueba.c
Compilacin el programa
En Windows, desde MS-DOS
gcc prueba.c
En Unix, desde una consola
gcc prueba.c

Programa en C
Ejecucin del programa
En Windows, escribir a
En Unix, escribir ./a.out

IWI-131 - Tema 2

Declaraciones
Es necesario poder declarar
Constantes
Nombre
Valor
Variables
Nombre
Tipo
Valor inicial
Funciones
Nombre
Parmetros
Salida
Cuerpo

Identificadores
Un identificador es el nombre que identifica una
constantes, variable o funcin.
La eleccin del nombre debe cumplir ciertas
reglas:
Longitud ilimitada
Debe iniciar con una letra o subrayado
No se aceptan smbolos como: .,;+*/?!=&%$#@|(){}[]. etc
Deben ser nicos en su mbito
Diferencian minsculas de maysculas
No puede coincidir con una palabra reservada
(clave) o el nombre de una funcin de
biblioteca.

Variables
Posicin de memoria donde se almacena un
dato.
Se define:
Un nombre para guardar o recuperar su valor
Un tipo restringe los valores que puede
almacenar la variable

Variables
Declaracin de variables
tipo nombre1, nombre 2,

Ejemplos:
int a;
int b,c,d;

Lugares de declaracin:
Dentro de una funcin (variables locales)
Como un parmetro (parmetros formales)
Fuera de las funciones (variables globales)

Variables locales
Se definen dentro de una funcin.
Deben tener un nombre nico dentro de la
funcin.
Solo pueden ser utilizadas dentro de la funcin.
Esto es ampliable a cualquier bloque de cdigo.
Se definen todas juntas al comienzo del bloque.
Se puede especificar un valor inicial.

Variables locales

Fin de la declaracin

int x = 10;
Tipo

Nombre

Inicializacin

Variables locales
void main(){
int x=10,y=20;
printf("x:%d , y:%d\n",x,y);
}

void main(){
int x=10;
int y=20;
printf("x:%d , y:%d\n",x,y);
}

void main(){
int x=10;
printf("x:%d , y:%d\n",x,y);
int y=20;
Error
}

Variables locales
void f(){
printf("x:%d , y:%d\n",x,y);
}
void main(){
int x=10,y=20;
f();
}

Error

Variables locales
void main(){
int x=10,y=20;
{
int x=100;
int y=200;
printf("x:%d , y:%d\n",x,y);
}
printf("x:%d , y:%d\n",x,y);
}
x:100 , y:200
x:10 , y:20

Parmetros formales
Son los datos de entrada de las funciones.
Se comportan exactamente igual que las
funciones locales.
Puede ser una lista de parmetros.
Cada parmetro debe especificar su tipo.

Parmetros formales
void f(int a,int b){
printf("a:%d , b:%d\n",a,b);
}
void main(){
int x=10,y=20;
a:10 , b:20
f(x,y);
}

Variables globales
Se declaran antes del cuerpo del programa.
Se declaran en forma idntica a las variables
locales.
Se pueden acceder desde cualquier parte de
cdigo.
Si una funcin la modifica, todo el resto
tiene acceso al nuevo valor.

Variables globales
int z=100;
void f(int a,int b){
printf("a:%d , b:%d\n",a,b);
printf("z:%d\n",z);
}
void main(){
int x=10,y=20;
printf("z:%d\n",z); z:100
z=1000;
a:10 , b:20
f(x,y);
z:1000
}

Constantes
Constantes sin nombre
Nmeros
Letras
Palabras

Constantes con nombre


Identificadores

Constantes sin nombre


Nmeros:
Notacin entera: (0..9)+
Notacin octal: 0(0..9)+
Notacin hexadecimal: 0x(0..9)+

Ejemplos:
102
0102
0x102

Constantes sin nombre


Caracteres:
(a .. z A .. Z)
Se declaran entre comillas simples
Caracteres especiales:
Tiene un backslash (\) al comienzo
Se ven dos caracteres pero es uno solo
Ejemplos:
a
\n
\t

Constantes sin nombre


Palabras:
Son cadenas de caracteres.
Se declaran entre comillas dobles.
Tratamiento complejo.
Ejemplo:
hola
adios\n

Constantes sin nombre


void main(){
int x=20,y=020,z=0x20;
char c1='a',c2='\t',c3='b';
char* s="hola";
printf("x:%d , y:%d ,
z:%d\n",x,y,z);
printf("%c%c%c\n",c1,c2,c3);
printf("%s\n",s); x:20 , y:16 , z:32
a
b
}
hola

Constantes con nombre


Deben definir un nombre y un valor.
El nombre sigue las reglas de un
identificador.
Su valor no puede cambiar durante el
programa.
Dos formas:
const (modificador de acceso)
#define (instruccin del preprocesador)

Constantes con nombre


const int z=100;
#define w 200
void f(const int
printf("a:%d ,
printf("z:%d ,
}
void main(){
int x=10,y=20;
printf("z:%d ,
z=1000;
w=2000;
f(x,y);
}

a,int b){
b:%d\n",a,b);
w:%d\n",z,w);

w:%d\n",z,w);
z:100 , w:200
a:10 , b:20
z:100 , w:200

Comentarios
Texto que se agrega al cdigo fuente por claridad.
Sirven para explicar:

El funcionamiento de un programa o funcin.


La utilidad de una palabra.
La lgica de un algoritmo.
Obviar cdigo errneo o de prueba

Fundamentales como buena prctica de


programacin.

Comentarios
Dos versiones
De una sola lnea
De varias lneas

Comentarios
/*
nombre funcion: f
Parametros: ninguno
Objetivo: obtener el resultado del calculo
Autor: JPM
*/
void f(){

}
void main(){
//variables principales
int x, y;
//int z=1000;
//Obtener resultado de calculo
f();
}

Comentarios
Los comentarios se eliminan del cdigo
fuente antes de compilar.
Es otra tarea del preprocesador.

Tipos de datos bsicos


Las variables y constantes deben definir un tipo.
Una vez definido el tipo, no se puede cambiar de
opinin.
El tipo define el comportamiento de los
operadores.
Tres grandes grupos:
Numricos
Alfabticos
Enumerados

Tipo de dato nulo


void
Indica nada.
Es un variable sin tipo definido.
Cuando una funcin o programa no retorna
ningn resultado final se dice que devuelve el
tipo void.

Tipos de datos numricos


Por defecto los nmeros se utilizan en base
decimal.
Internamente se trabaja con nmeros en base
binaria.
Dos grandes diferencias:
Enteros
Reales
Es importante definir el espacio necesario para
almacenar un nmero.

Tipos de datos numricos


Entero:

int

Real:

float

Real con doble precisin:

double

Modificadores
Para modificar el tamao de
almacenamiento se utilizan tipos de datos
modificados.
Modificadores:

signed: reserva un bit para el signo.


unsigned: define solo valores positivos.
long: utiliza el mayor tamao disponible.
short: utiliza el menor tamao disponible.

Tipos de datos numricos


int
Tipo de dato entero.
Valores positivos y negativos.
Se almacena en 2 o 4 bytes
short int (16 bits): -32.768 a 32.768
long int (32 bits): -2.147.483.648 a
2.147.483.648
unsigned int (32 bits): 0 a 4.294.967.296
Se puede abreviar como unsigned

Tipos de datos numricos


float
Tipo de dato real.
Precisin simple.
Valores positivos y negativos.
Se almacena en 4 bytes:
37 dgitos para la parte entera
6 dgitos para la parte decimal
No acepta modificadores.

Tipos de datos numricos


double
Tipo de dato real.
Precisin doble.
Valores positivos y negativos.
Se almacena en 8 bytes:
37 dgitos para la parte entera
10 dgitos para la parte decimal
long double (10 bytes)

Tipos de datos numricos


void main(){
int a = -10;
unsigned int b = 10;
float c = 10.1;
double d = 0.000000001;
}

Tipos de datos alfabticos


Cualquier smbolo escrito se puede considerar
alfabtico.
En rigor:
De la a a la z en minsculas.
De la A a la Z en maysculas
!.,$%&/)(^*{} etc.
Alfanumricos:
Se agregan los dgitos como smbolos, no como
nmeros.

Tipos de datos alfabticos


char
Almacena cualquier carcter normal.
Ocupa un byte.

Permite diferenciar 256 caracteres.


signed char: de -127 a 127
unsigned char: de 0 a 256
El valor almacenado es el cdigo ASCII que
representa el carcter

Ejemplos: @ = 64 , \ = 92 , A = 65

Tipos de datos alfabticos


void main(){
char c1 = 'a';
char c2 = '8';
a 8
char c3 = '\n';
@
char c4 = 64;
48 49 50
char c5 = '0';
char c6 = '1';
char c7 = '2';
printf("%c %c %c %c \n",c1,c2,c3,c4);
printf("%i %i %i \n",c5,c6,c7);
}

Conversiones de tipo
Al mezclar distintos tipos, hay que buscar
un comn denominador
Un tipo donde todo el resto pueda ser
representado

Para esto, hay que convertir los valores


involucrados al mayor tipo presente
Esto se denomina promocin de tipo

Conversiones de tipo
Rangos de tipos

long double
louble
float
unsigned long
long
unsigned int

Cast (molde)
- Se puede forzar al compilador para hacer una
conversin de tipos.
- Se vera su utilidad al estudiar los operadores.

void main(){
double d1=4.7, d2=2.4;
int i = ((int)d1)/((int)d2);
printf("%d\n", i);
}

Tipos de datos enumerados


A diferencia de nmeros y caracteres no existe
necesariamente una relacin de orden.
Ejemplos:
Chileno
Argentino
Peruano
Boliviano
En C, las enumeraciones se almacenan como
enteros.
Se pueden definir sus valores numricos.

Tipos de datos enumerados


El nombre de la enumeracin
enum nombre {tipo1,tipo2,,tipon};
Elementos de la enumeracin
Palabra reservada

Tipos de datos enumerados


Valor numrico del elemento
enum nombre {tipo1,tipo2=100,tipo3,};
Aumenta de uno en uno
Tipo1=0
Tipo2=100
Tipo3=101

Tipos de datos enumerados


enum nacionalidad {argentino=25, chileno,
peruano, boliviano};
void main(){
enum nacionalidad persona1;
enum nacionalidad persona2;
int chiliviano;
persona1 = chileno;
persona2 = boliviano;
chiliviano = persona1+persona2;
printf("%d + %d\n = %d", persona1,
persona2, chiliviano);
}
26 + 28 = 54

You might also like