Post on 17-May-2018
Estructuras de datos (Prof. Edgardo A. Franco)
1
Tema 05: Elementos de un programa en C
M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom
Contenido • Código fuente en C • Elementos de un programa
• Comentarios • Identificadores • Constantes • Variables • Operadores • Sentencias o instrucciones • Macros del pre-procesador
• Estructura de un programa en C • Ejemplo de programa en C
2
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Código fuente en C • Un código fuente en C, es un conjunto de líneas que expresan
computaciones bajo la sintaxis y semántica del lenguaje C. Un programa escrito en C tiene como características sobresalientes, el ser eficiente y veloz.
• Como el lenguaje C es compilado, se requiere del empleo de un compilador apropiado según la plataforma en la que se desea ejecutar el programa.
Código Fuente en C
Compilador ANSI C (gcc)
Programa ejecutable u código objeto
3
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Elementos de un Programa Un programa escrito en lenguaje C puede incluir uno, varios o todos los elementos siguientes:
• Comentarios • Identificadores • Constantes • Variables • Operadores • Sentencias o instrucciones • Macros del pre-procesador 4
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Elementos de un Programa /* Programa que calcula el de un circulo de radio dado por el usuario Autor: Edgardo Adrián Franco Martínez Versión 1.0 Septiembre 2012 Todo lo anterior es un comentario y todo lo que comienza con // */ #include <stdio.h> //Macros del pre-procesador #define PI 3.141599 //Constantes int main(void) { float area,radio; //Variables y sus identificadores printf("\nIntroduce el radio del circulo: "); //Sentencias scanf("%f",&radio); //Sentencias area=PI*radio*radio; //Sentencias y operadores printf("\nEl área de un circulo de radio %f, es: %f",radio,area);//Sentencias return 0;//Sentencias } 5
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Comentarios • Un comentario es un escrito que sirve de
explicación de parte del programa para que se entienda más fácilmente.
• Comentarios multi-línea • Comienzan con /* y terminan con */ • No puede anidarse un comentario dentro de otro.
• Comentarios de una sola línea • Comienzan al principio de la línea con //
• E.g. //Esto es un comentario /* Esto también es un comentario */
6
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Identificadores • Los identificadores (IDs) son símbolos léxicos que
nombran entidades. El concepto es análogo al de "nombre". Nombrar las entidades hace posible referirse a las mismas, lo cual es esencial para cualquier tipo de procesamiento simbólico.
• Para el caso del lenguaje C • No pueden emplearse palabras reservadas como
identificadores • No pueden emplearse nombres de funciones que ya
existan en el programa o en la biblioteca estándar de C • No puede usarse el identificador main 7
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Palabras reservadas • En los lenguajes de programación, una palabra
reservada es una palabra que tiene un significado gramatical especial para ese lenguaje y no puede ser utilizada como un identificador en ese lenguaje. En lenguaje C existen 32 palabras reservadas.
8
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
char void default return int if break auto
float else continue extern double do goto register
long while struct const short for union static
signed switch enum volatile unsigned case typedef sizeof
Identificadores (Convenciones) • Los nombres de variables se escriben en minúsculas, los
nombres de funciones comenzarán con letras mayúsculas y terminarán con minúsculas.
Suma_Matrices //Función edad_alumno //Variable
Las constantes escritas con #define van con mayúsculas como #define PI 3.1416 • Utilizar el subguión para separar palabras intermedias.
Suma_Matrices
• No emplear nombres cortos, sino adecuados para la el
entendimiento de la implementación de una solución. 9
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Constantes • En programación, una constante es un valor que no puede ser
alterado durante la ejecución de un programa.
• Una constante corresponde a una longitud fija de un área reservada en la memoria principal del ordenador, donde el programa almacena valores fijos.
• En el lenguaje de programación C • #define se utiliza para asignar un identificador a una constante.
#define PI 3.1416 #define NUM_COLUMNAS 20 • El pre-procesador de C, sustituye la ocurrencia de PI por el valor 3.1416 en
todo el programa antes de efectuar la compilación, del mismo modo se sustituye NUM_COLUMNAS por 20.
10
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Variables • Una variable es una localidad de memoria cuyo valor
puede ser cambiado durante la ejecución del programa.
• Todas las variables deben de ser declaradas para se utilizadas.
<tipo de dato> espacio(s) <identificador>;
• E.g. int a; float area, radio, volumen;
11
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Variables (Tipos de dato simples) Tipo en C Descripción Número de
bits Rango
char Carácter 8 0...255
int Enteros 16 -32768... 32767
long Enteros de largo alcance
32 -2147483648... 2147483647
float Reales 32 1.2E-38... 3.4E+38
double Reales de doble precisión
64 2.2E-308... 1.8E+308 12
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
*Los tamaños de los tipos de datos dependen de la arquitectura y sistema operativo (actualmente los int son iguales a los long en tamaño)
Operadores • Son palabras o símbolos que implican una acción
sobre ciertas variables.
• Pueden ser unarios (1 variable), binarios (2 variables) o ternarios (3 variables). • Operadores Aritméticos • Operadores Relacionales • Operadores Lógicos • Operadores de Asignación • Operadores de Dirección • Operadores de Bits
13
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Operadores Aritméticos Operador Nombre Descripción
+ Suma 5+2 → 7
- Resta 5-2 → 3
* Multiplicación 5*2 → 10
/ División 5/2 → 2
% Módulo 5%2 → 1
(tipo de dato) “Cast” forzado (double)5 → 5.0 14
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Operadores Relacionales Operador Nombre Descripción
== Igual a if (a==‘s’)
!= Diferente de if (a!=null)
> Mayor que if (a>0.5)
< Menor que if (a<2l)
>= Mayor o igual que if (a>=2f)
<= Menor o igual que if (a<=3) 15
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Operadores Lógicos
Operador Nombre Descripción
&& Y (AND) if ((a>3) && (a<9))
|| O (OR) if ((a==2) || (a==3))
! NEGADO (NOT)
if (!(a==3)) es igual a if (a!=3)
Importante (en C): FALSO es igual a cero. VERDADERO es cualquier valor diferente de cero. 16
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Operadores de Asignación
17
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Operador Abreviado No Abreviado = a=2; a=2;
++ n++; n=n+1; -- n--; n=n-1; += n+=2; n=n+2; -= n-=2; n=n-2; *= n*=2; n=n*2; /= n/=2; n=n/2; %= n%=2; n=n%2;
Operadores de Dirección Operador Nombre Descripción
* Operador indirección
Me da el valor que está almacenado en una dirección de memoria. También sirve para declarar una variable apuntador.
& Operador dirección
Me da la dirección de memoria de una variable. 18
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Operadores de Bits
19
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Operador Nombre Descripción << Corrimiento a la izquierda b=a<<2;
>> Corrimiento a la derecha b=a>>3;
& Y (AND) entre bits c=a&128;
| O (OR) entre bits c=a|0x0a;
~ Complemento A1 c=~a;
^ O exclusivo (XOR) c=^a;
Operadores de Asignación para bits
Operador Abreviado No Abreviado <<= n<<=2; n=n<<2; >>= n>>=2; n=n>>2; &= n&=0x0a; n=n&0x0a; |= n|=7; n=n|7; ^= n^=0x03; n=n^0x03; = n=0x7f; n=0x7f;
Nota: 0x7f, 0x0a, 0x03 son un números hexadecimales.
20
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Precedencia de Operadores
21
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
( ) [ ] -> Alta prioridad
! ~ + - ++ -- & * sizeof Unarios
* / % + - Aritméticos
<< >> Corrimiento de bits
< <= > >= == != Relacionales
& ^ | && || ?: Bits / Lógicos / Condicional
= *= /= %= += -= &= ^= |= <<= >>=
Asignación
, Evaluación
Sentencias o instrucciones • Una sentencia es una instrucción o expresión en C que tiene
una consecuencia. Pueden ser asignaciones, operaciones, llamadas a funciones.
• Todas las sentencias terminan con el signo de punto y coma ;
• Pueden ser simples o compuestas. Las compuestas van entre llaves:
sentencia_compuesta { sentencia_simple_1; sentencia_simple_2; : sentencia_simple_n; };
22
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
• Sentencias de Selección • if – else, switch – case, ?:
• Sentencias de Repetición • do – while, while, for
• Sentencias de Salto • return, break, continue
23
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Macros del pre-procesador Directivas más usadas del pre-procesador. • #define <nombre de macro> <nombre de reemplazo>
• Se usa para definir constantes o cualquier sustitución de macro
• #undef <nombre de macro> • Quitar una definición de nombre de macro que se haya definido
previamente
• #include <archivo> • Instruye al compilador para incluir otro archivo fuente que esta
dado con esta directiva y de esta forma compilar otro archivo fuente. El archivo fuente que se leerá se debe encerrar entre comillas dobles o paréntesis de ángulo.
24
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
Estructura de un programa en C
25
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez
I. Directivas (macros) del pre-procesador #include , #define, #if, #else, #endif, #line, etc.
II. Declaración de Prototipos
“Declaración de funciones” III. Declaración de variables globales
V. Función Principal main( )
IV. Funciones definidas por el usuario “Definición de funciones”
26
Ejemplo de programa en C
26
//Directivas del pre-procesador #include <stdio.h> #include <math.h> #define VALOR 5.7 //Definición de constantes //Declaración de prototipos double modulo3D(double x, double y, double z); //Declaración de variables globales double mod3; /* Variable global mod3*/ //Función principal int main(void) { int x, y, z; x=y=z=VALOR; mod3=modulo3D(x,y,z); printf(“\nEl módulo es: %lf”,mod3); return(0); } //Funciones definidas por el usuario double modulo3D(double x, double y, double z) { return(sqrt(x*x+y*y+z*z)); }
05 E
lem
ento
s de
un p
rogr
ama
en C
Al
gorit
mia
y p
rogr
amac
ión
estr
uctu
rada
Pr
of. E
dgar
do A
driá
n Fr
anco
Mar
tínez