TELEMATICA

UNIVERSIDAD NACIONAL AUTONOMA DE NICARAGUA, UNAN – LEON DEPARTAMENTO DE COMPUTACION INGENIERIA EN SISTEMA / TELEMATICA Apuntes de Lenguaje C Ing. Juan Carlos Antón Soto INTRODUCCION C es un lenguaje de programación estructurado de propósito general. Sus instrucciones constan de términos que se parecen a expresiones algebraicas, además de ciertas palabras clave inglesas como if, else, for, do y while. C tiene también algunas características adicionales que permiten su uso a un nivel más bajo, cubriendo así el vacío entre el lenguaje máquina y los lenguajes de alto nivel más convencionales. Esta flexibilidad permite el uso de C en la programación de sistemas (por ejemplo, para el diseño sistemas operativos) así como en la programación de aplicaciones (por ejemplo, para redactar un programa que resuelva un complicado sistema de ecuaciones matemáticas o un programa que escriba las facturas para los clientes). C se caracteriza por hacer posible la redacción de programas fuente muy concisos, debido en parte al gran número de operadores que incluye el lenguaje. Tiene un repertorio de instrucciones relativamente pequeño, aunque las implementaciones actuales incluyen numerosas funciones de biblioteca que mejoran las instrucciones básicas. Es más, el lenguaje permite a los usuarios escribir funciones de biblioteca adicionales para su propio uso. De esta forma, las características y capacidades del lenguaje pueden ser ampliadas fácilmente por el usuario. Otra característica importante de C es que los programas son muy portables, más que los escritos en otros lenguajes de alto nivel. La razón de esto es que C deja en manos de las funciones de biblioteca la mayoría de las características dependientes de la computadora. Estructura de un programa en C Todo programa en C consta de uno o más módulos llamados funciones. Una de las funciones se llama main. El programa siempre comenzará por la ejecución de la función main, la cual puede acceder a las demás funciones. Las definiciones de las funciones adicionales se deben realizar aparte, bien precediendo o siguiendo a main. Cada función debe contener: 1. Una cabecera de la función, que consta del nombre de la función, seguido de una lista opcional de argumentos encerrados entre paréntesis. 2. Una lista de declaración de argumentos, si se incluyen éstos en la cabecera. 3. Una instrucción compuesta, que contiene el resto de la función. 1 Los argumentos son símbolos que representan información que se le pasa a la función desde otra parte del programa. (También se llama parámetros a los argumentos.) Cada instrucción compuesta se encierra con un par de llaves, { }. Las llaves pueden contener combinaciones de instrucciones elementales (denominadas instrucciones de expresión) y otras instrucciones compuestas. Cada instrucción de expresión debe acabar en punto y coma (;). Los comentarios pueden aparecer en cualquier parte del programa, mientras estén situados entre los delimitadores /* y */. Por ejemplo: /*Esto es un comentario */. Los comentarios son útiles para identificar los elementos principales de un programa o para explicar la lógica subyacente de éstos. CONCEPTOS BASICOS DE C EL CONJUNTO DE CARACTERES DE C Para formar los elementos básicos del programa (constantes, variables, operadores, expresiones, etc.), C utiliza como bloques de construcción las letras mayúsculas de la A a la Z, las minúsculas de la a a la z, los dígitos del O al 9 y ciertos caracteres especiales. Se presenta a continuación una lista de estos caracteres especiales: C utiliza ciertas combinaciones de estos caracteres, como \b, \n y \t, para representar elementos especiales como el retroceso

9 downloads 140 Views 372KB Size

Recommend Stories


"Ingeniero en Telematica"
INSTITUTO POLITECNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARY EN INGENIERf A Y TECNOLOGf AS AVANZADAS UPIITA Trabajo Terminal "ADMINISTRACIÓN

Story Transcript

UNIVERSIDAD NACIONAL AUTONOMA DE NICARAGUA, UNAN – LEON DEPARTAMENTO DE COMPUTACION INGENIERIA EN SISTEMA / TELEMATICA

Apuntes de Lenguaje C Ing. Juan Carlos Antón Soto

INTRODUCCION

C es un lenguaje de programación estructurado de propósito general. Sus instrucciones constan de términos que se parecen a expresiones algebraicas, además de ciertas palabras clave inglesas como if, else, for, do y while. C tiene también algunas características adicionales que permiten su uso a un nivel más bajo, cubriendo así el vacío entre el lenguaje máquina y los lenguajes de alto nivel más convencionales. Esta flexibilidad permite el uso de C en la programación de sistemas (por ejemplo, para el diseño sistemas operativos) así como en la programación de aplicaciones (por ejemplo, para redactar un programa que resuelva un complicado sistema de ecuaciones matemáticas o un programa que escriba las facturas para los clientes). C se caracteriza por hacer posible la redacción de programas fuente muy concisos, debido en parte al gran número de operadores que incluye el lenguaje. Tiene un repertorio de instrucciones relativamente pequeño, aunque las implementaciones actuales incluyen numerosas funciones de biblioteca que mejoran las instrucciones básicas. Es más, el lenguaje permite a los usuarios escribir funciones de biblioteca adicionales para su propio uso. De esta forma, las características y capacidades del lenguaje pueden ser ampliadas fácilmente por el usuario. Otra característica importante de C es que los programas son muy portables, más que los escritos en otros lenguajes de alto nivel. La razón de esto es que C deja en manos de las funciones de biblioteca la mayoría de las características dependientes de la computadora.

Estructura de un programa en C Todo programa en C consta de uno o más módulos llamados funciones. Una de las funciones se llama main. El programa siempre comenzará por la ejecución de la función main, la cual puede acceder a las demás funciones. Las definiciones de las funciones adicionales se deben realizar aparte, bien precediendo o siguiendo a main. Cada función debe contener: 1. Una cabecera de la función, que consta del nombre de la función, seguido de una lista opcional de argumentos encerrados entre paréntesis. 2. Una lista de declaración de argumentos, si se incluyen éstos en la cabecera. 3. Una instrucción compuesta, que contiene el resto de la función. 1

Los argumentos son símbolos que representan información que se le pasa a la función desde otra parte del programa. (También se llama parámetros a los argumentos.) Cada instrucción compuesta se encierra con un par de llaves, { }. Las llaves pueden contener combinaciones de instrucciones elementales (denominadas instrucciones de expresión) y otras instrucciones compuestas. Cada instrucción de expresión debe acabar en punto y coma (;). Los comentarios pueden aparecer en cualquier parte del programa, mientras estén situados entre los delimitadores /* y */. Por ejemplo: /*Esto es un comentario */. Los comentarios son útiles para identificar los elementos principales de un programa o para explicar la lógica subyacente de éstos.

CONCEPTOS BASICOS DE C EL CONJUNTO DE CARACTERES DE C Para formar los elementos básicos del programa (constantes, variables, operadores, expresiones, etc.), C utiliza como bloques de construcción las letras mayúsculas de la A a la Z, las minúsculas de la a a la z, los dígitos del O al 9 y ciertos caracteres especiales. Se presenta a continuación una lista de estos caracteres especiales:

C utiliza ciertas combinaciones de estos caracteres, como \b, \n y \t, para representar elementos especiales como el retroceso de un espacio, nueva línea y un tabulador, respectivamente. Estas combinaciones de caracteres se conocen como secuencias de escape.

2

IDENTIFICADORES Y PALABRAS RESERVADAS Los identificadores son nombres que se les da a varios elementos de un programa, como variables, funciones. Un identificador está formado por letras y dígitos, en cualquier orden, excepto el primer carácter, que debe ser una letra. Se pueden utilizar mayúsculas y minúsculas, aunque es costumbre utilizar minúsculas para la mayoría de los identificadores. No se pueden intercambiar mayúsculas y minúsculas (esto es, una letra mayúscula no es equivalente a la correspondiente minúscula.) El carácter de subrayado (_) se puede incluir también, y es considerado como una letra. Se suele utilizar este carácter en medio de los identificadores. Un identificador también puede comenzar con un carácter de subrayado, aunque en la práctica no se suele hacer. Los siguientes nombres son identificadores válidos.

Los siguientes señaladas. 4num “a” orden-no indicador error

nombres

no

son

identificadores

válidos

por

las

razones

el primer carácter debe ser una letra caracteres ilegales (“”) carácter ilegal (-) carácter ilegal (espacio en blanco)

NO hay límite para la longitud de los identificadores, pero dependiendo del compilador que se utilice solamente los n caracteres primeros son significativos. Hay ciertas palabras reservadas que tienen un significado predefinido estándar. Las palabras reservadas sólo se pueden utilizar para su propósito ya establecido; no se pueden utilizar como identificadores definidos por el programador. Las palabras reservadas son:

3

Observe que todas las palabras reservadas están en minúsculas. Como los caracteres en minúsculas y mayúsculas no son equivalentes, se puede utilizar una palabra reservada escrita en mayúsculas como un identificador. Esto no se suele hacer normalmente, y se considera propio de un estilo de programación pobre. TIPOS DE DATOS En C, toda variable, antes de poder ser usada, debe ser declarada, especificando con ello el tipo de dato que almacenará. Toda variable en C se declara de la forma: [, nombre de variable]; En C existen cinco tipos de datos según puede verse en la tabla siguiente:

Algunos ejemplos de variables de C serían: float a; int b, c; char caracter, otro_caracter;

Cada tipo entero puede ser calificado por las palabras clave signed o unsigned. Un entero calificado signed es un entero con signo; esto es, un valor entero positivo o negativo. Un valor entero calificado unsigned es 4

un valor entero sin signo, el cual es manipulado como un valor entero positivo. Esta calificación da lugar a los siguientes tipos extra: • signed short, unsigned short • signed int, unsigned int • signed long, unsigned long Si los calificadores signed y unsigned se utilizan sin un tipo entero específico, se asume el tipo int. Por este motivo, las siguientes declaraciones son equivalentes: signed x; /* es equivalente a */ signed int x;

Tipo enumerado Crear una enumeración es definir un nuevo tipo de datos, denominado tipo enumerado y declarar una variable de este tipo. La sintaxis es la siguiente: enum tipo_enumerado { /* definición de nombres de constantes enteras */ }; donde tipo_enumerado definido.

es

un

identificador

que

nombra

al

nuevo

tipo

Después de definir un tipo enumerado, podemos declarar una o más variables de este tipo, de la forma: enum tipo_enumerado [variable [,variable] ... ] ; El siguiente ejemplo declara una variable llamada color del tipo enumerado arcoiris, la cual puede tomar cualquier valor de los especificados en la lista. enum arcoiris { rojo, amarillo, verde, azul, blanco }; enum arcoiris color; color = azul;

5

Cada identificador de la lista de constantes en una enumeración, tiene asociado un valor. Por defecto, el primer identificador tiene asociado el valor 0, el siguiente el valor 1 y así sucesivamente. Según esto: color = azul;

es equivalente a:

color = 3;

A cualquier identificador de la lista se le puede asignar un valor inicial entero por medio de una expresión constante. Los identificadores sucesivos tomarán valores correlativos a partir de éste, por ejemplo: enum arcoiris { rojo, amarillo, verde = 0, azul, blanco } color; Este ejemplo define un tipo enumerado llamado arcoiris y declara una variable color de ese tipo. Los valores asociados a los identificadores son los siguientes: rojo = 0 , amarillo = 1, verde = 0, azul =1, blanco =2

Otro ejemplo: enum moneda { penique, niquel, diez_centavos, cuarto=100, medio_dolar, dolar }moneda_actual;

Los valores son: penique 0, niquel 1, diez_centavos 2, cuarto 100, medio_dolar 101, dolar 102.

CONSTANTES Una constante es, en principio, una variable cuyo valor no puede ser modificado. Las constantes se definen con la directiva #define. Así: #define CONSTANTE valor Cada línea #define sólo puede contener el valor de una constante. Por ejemplo, podemos definir los valores aproximados de PI y del número E así: #define PI 3.1415926535897931159979634685442 #define E 2.7182818284590450907955982984276

6

Intentar asignar un valor a PI o a E en el programa produce un error que detecta el compilador.

No hay operador de asignación entre el nombre de la constante y su valor y la línea no acaba con punto y coma. No es obligatorio que el nombre de la constante se escriba en mayúsculas, pero si un convenio ampliamente adoptado. De forma alternativa se puede definir constantes mediante una nueva palabra reservada: const. Puedes usar const delante del tipo de una variable inicializada en la declaración para indicar que su valor no se modificará nunca. Ejemplo con la palabra reservada const #include int main(void) { const float pi = 3.14; float r, a; printf ("Radio: "); scanf ("%f", &r); a = pi * r * r; printf("Area: %f\n", a); return 0; } Ejemplo con la directriz #define #include #define pi 3.14 int main(void) { float r, a; printf ("Radio: "); scanf ("%f", &r); a = pi * r * r; printf("Area: %f\n", a); 7

return 0; }

Secuencias de escape Ciertos caracteres no imprimibles, así como la barra inclinada hacia atrás (\) y la comilla simple ('), se pueden expresar en términos de secuencias de escape. Una secuencia de escape siempre comienza con una barra inclinada hacia atrás y es seguida por uno o más caracteres especiales. Por ejemplo, un salto de línea (LF), que se denomina carácter de nueva línea en C, se puede representar como \n. Una secuencia de escape siempre representa un solo carácter, aun cuando se escriba con dos o más caracteres. A continuación se listan las secuencias de escape utilizadas con mayor frecuencia.

La secuencia de escape \0 es de especial interés. Representa el carácter nulo, que se utiliza para indicar el final de una cadena de caracteres. La constante de carácter nulo '\0' no es equivalente a la constante de carácter '0'.

Constantes de cadena de caracteres Una constante de cadena de caracteres consta de cualquier número caracteres consecutivos(o ninguno), encerrados entre comillas (dobles).

de

8

Ejemplo: A continuación se muestran varias constantes de cadena de caracteres. “verde” “$19.95”

“Washinton D.C. 2005” “270-34-3256” “La respuesta correcta es:” “2* (1+3) /J”

La siguiente constante de cadena de caracteres incluye tres caracteres especiales que se representan por sus correspondientes secuencias de escape. "\tPara continuar, pulsar la tecla \"RETURN\"\n" Los caracteres especiales son \t (tabulador horizontal), \" (comillas, que aparece dos veces) y \n (nueva línea). Expresiones numéricas Una expresión es una secuencia de operadores y una operación determinada. Por ejemplo:

operandos

que especifican

a++ suma + = c cantidad * precio

Operadores Los operadores son símbolos que indican cómo son manipulados los datos. Se clasifican en los siguientes grupos: aritméticos, lógicos, relacionales, de asignación, operador condicional y otros.

Operadores aritméticos Se utilizan para realizar operaciones matemáticas y son los siguientes:

9

Operador

Operación

+

Suma.

-

Resta.

*

Multiplicación. reales.

/

División. Los operandos pueden ser enteros o reales. Si ambos operandos son enteros, el resultado es entero. En el resto de los casos el resultado es real.

%

Módulo o resto de una división operandos tienen que ser enteros.

Los operandos pueden ser enteros o reales. Los operandos pueden ser enteros o reales. Los operandos pueden ser enteros o

entera.

Los

Ejemplo: void main(void ) { int a = 10, b = 3, c; float x = 2.0, y; y c c y

= = = =

x a a a

+ / % /

a; b; b; b;

c = x / y;

/* el resultado es 12.0 de tipo float /* el resultado es 3 de tipo int */ /* el resultado es 1 de tipo int */ /* el resultado es 3 de tipo int. Se float para asignarlo a y */ /* el resultado es 0.666667 de tipo convierte a int para asignarlo a c (

*/

convierte a float. Se c = 0)*/

} Cuando en una operación aritmética los operandos son de diferentes tipos, ambos son convertidos al tipo del operando de precisión más alta; por ejemplo, para realizar la suma x+a el valor del entero a es convertido a float, tipo de x. No se modifica a, sino que su valor es convertido a float sólo para realizar la suma. El resultado obtenido en una operación aritmética es convertido al tipo de la variable que almacena dicho resultado. Por ejemplo, del resultado de x/y sólo la parte entera es asignada a c, ya que c es de tipo int. Esto 10

indica que los fraccionaria.

reales

son

convertidos

a

enteros,

truncando

la

parte

Un resultado real es redondeado. Observe la operación x/y para x igual a 2 e y igual a 3. El resultado es 0.666667 en lugar de 0.666666 porque la primera cifra decimal suprimida es 6. Cuando la primera cifra decimal suprimida es 5 ó mayor de 5, la última cifra decimal conservada se incrementa en una unidad.

Operadores lógicos

El resultado de una operación lógica (AND, OR y NOT) es un valor verdadero o falso(1 ó 0). Por definición, un valor distinto de cero es siempre verdadero y un valor cero es siempre falso. Los operadores lógicos de C son los siguientes:

Operador

Operación

&&

AND. Da como resultado el valor lógico 1 si ambos operandos son distintos de cero. Si uno de ellos es cero el resultado es el valor lógico 0.

||

OR. El resultado es 0 si ambos operandos son 0. uno de los operandos tiene un valor distinto cero, el resultado es 1.

!

NOT. El resultado es 0 si el operando tiene un valor distinto de cero, y 1 en caso contrario.

El resultado de una operación lógica es de tipo int. pueden ser enteros o reales. Por ejemplo:

Los

Si de

operandos

void main(void ) { int p = 10, q = 0, r = 0; r = p && q; /* da como resultado 0 */ r = p || q; /* da como resultado 1 */ r = !p ; /* da como resultado 0 */ } 11

Operadores de relación

El resultado de una operación de relación es un valor verdadero o falso (1 ó 0). Los operadores de relación son los siguientes: Operador

Los

Operación

<

Primer operando menor que el segundo.

>

Primer operando mayor que el segundo.

=

Primer operando mayor o igual que el segundo

!=

Primer operando distinto que el segundo

= =

Primer operando igual que el segundo

operandos

pueden ser de tipo entero o real.

Por ejemplo:

void main(void) { int x = 10, y = 0, r = 0; r = x = = y; /* da como resultado 0 */ r = x > y; /* da como resultado 1 */ r = x != y ; /* da como resultado 1 */ }

Expresiones de Boole

Una expresión de Boole da como resultado 1 (verdadero) ó 0 (falso). El resultado de una comparación puede utilizarse como operando en una expresión de Boole. Los operadores que intervienen en una expresión de Boole pueden ser de relación y lógicos.

12

Ejemplo: void main(void ) { int r = 0, s = 0; float x = 15, y = 18, z = 20; r = (x < y) && (y b) ? a : b, que será a si a es mayor que b y b si a no es mayor que b. void main(void) { float a = 10.2, b = 20.5, mayor = 0; mayor = (a > b) ? a : b; /* mayor de a y b }

*/

Operador sizeof El operador sizeof da como resultado el tamaño en bytes de su operando. El operando puede ser el identificador de un objeto o el tipo del objeto. Por ejemplo: //tamanostipos.c #include void main(void) { //Declarar las variables char c; int i,tam; long l; tam = sizeof(c); 14

//Mostrar los tamaños de las tipos de datos printf("El tamano del char c es %d byte\n",tam); printf("El tamano del int i es %d bytes\n",sizeof(i)); tam = sizeof(l); printf("El tamano del long l es %d bytes\n",tam); printf("El tamano del float es %d bytes\n",sizeof(float)); printf("El tamano del double es %d bytes\n",sizeof(double)); }

Los paréntesis son opcionales, excepto cuando el operando se corresponde con un tipo de datos. Prioridad y orden de evaluación La tabla que se presenta a continuación, resume las reglas de prioridad y asociatividad de todos los operadores. Los operadores escritos sobre una misma línea tienen la misma prioridad. Las líneas se han colocado de mayor a menor prioridad. Una expresión entre paréntesis, siempre se evalúa primero. Los paréntesis tienen mayor prioridad y son evaluados de más internos a más externos.

Operador ( )

[ ]

.

->

*

&

-

~

!

*

/

%

+

-

>

Izquierda a derecha

>=

Izquierda a derecha

15

==

!=

Izquierda a derecha

&

Izquierda a derecha

^

Izquierda a derecha

|

Izquierda a derecha

&&

Izquierda a derecha

||

Izquierda a derecha

?:

Derecha a izquierda

= >>=

*= &=

/= |=

%=

,

+=

-=

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.