Sei sulla pagina 1di 35

Pontificia Universidad Catlica Madre y Maestra Vicerrectora Acadmica Facultad Ciencias de las Ingenieras Ingeniera en Sistemas y Computacin - ISC

Introduccin a la Algoritmia
Leccin 3 Lenguaje C

16-ene-13 Santiago, Rep. Dom.

Lenguaje C
Definicin y Caractersticas

Qu es el Lenguaje C?
Es un lenguaje de programacin creado en el 1972 por Dennis M. Ritchie en los laboratorios Bell como evolucin del anterior lenguaje B (de Ken Thomson), a su vez basado en BCPL (de Martin Richards). Sali al pblico de manera oficial a travs de la publicacin de The C Programming Language, de Brian Kernighan y Dennis Ritchie.

Lenguaje C
Definicin y Caractersticas
Caractersticas del Lenguaje C Ncleo del lenguaje simple, compatible con bibliotecas. Es muy flexible y porttil. Opera con un sistema de tipos para evitar operaciones sin sentido. Utiliza un lenguaje de preprocesado, para las macros y constantes. Acceso de memoria a bajo nivel a travs de punteros.

Lenguaje C
Definicin y Caractersticas

Caractersticas del Lenguaje C Tiene un conjunto reducido de palabras clave. El paso de parmetros entre funciones se realiza por defecto por valor. Tipos de datos agregados (struct) para agrupan un conjunto de datos relacionados.

Lenguaje C
Intrpretes y Compiladores

Traductores de lenguaje
Los traductores de lenguaje son programas que traducen a su vez los programas fuente escritos en lenguaje de alto nivel a cdigo mquina. Se dividen en: * Compiladores: Es un programa que traduce los programas fuente escritos en lenguajes de alto nivel a lenguaje mquina en archivos objeto para que el montador los enlace. * Intrpretes: Traductor que toma un programa fuente, lo traduce y a continuacin lo ejecuta.

Lenguaje C
Intrpretes y Compiladores

Compilacin
La compilacin es el proceso de traduccin de programas fuente a programas objeto, el cual ha sido ya traducido a cdigo mquina. Como parte del proceso de compilacin, viene luego un programa llamado montador, enlazador o linker, el cual analiza las dependencias con otras libreras para unirlas con el programa objeto ya compilado y as producir un archivo nico ejecutable.

Lenguaje C
Intrpretes y Compiladores

Compilacin

Cdigo Fuente

Compilador Programa Objeto Montador


Ejecutable

Lenguaje C
Intrpretes y Compiladores

Compilacin

Lenguaje C
Tipos de Datos

Constantes y Variables
Los programas de computadoras contienen ciertos valores que no deben cambiar durante la ejecucin del programa. Tales valores se llaman constantes. De igual forma, existen otros valores que cambiarn durante la ejecucin del programa; a estos valores se les llama variables. Una constante es uma partida de datos que permanecen sin cambios durante todo el desarrollo del algoritmo o durante la ejecucin del programa. El tipo de uma constante lo define el valor que tienen asignado.

Lenguaje C
Tipos de Datos

Constantes y Variables
Una variable es un objeto o partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecucin del programa. Una variable que es de un cierto tipo puede tomar nicamente valores de ese tipo. Una variable caracter, por ejemplo, puede tomar como valor slo caracteres, mientras que una variable entera puede tomar slo valores enteros. Si se intenta asignar un valor de un tipo a una variable de otro tipo se producira un error de tipo. Una variable se identifica por los atributos: nombre y tipo

Lenguaje C
Tipos de Datos

Constantes y Variables
Las variables se clasifican segn su uso en: De asignacin: son aquellas que guardan resultados de operaciones, valores iniciales y valores de otra variable. Contadores: son aquellas que se usan para llevar la secuencia de alguna operacin que se est realizando. Siempre se debe inicializar esta variable en 0 para no obtener valores no deseados del conteo. Ejemplo: Una variable que tenga cuntas lneas se han impreso en un momento dado. La variable linea se inicializa en cero (linea=0) y cada vez que se imprime una lnea se incrementa en uno (linea=linea + 1).

Lenguaje C
Tipos de Datos

Constantes y Variables
Acumuladoras: cuando se utilizan para obtener la suma de una serie de valores. Tambin se deben inicializar en cero. Ejemplo: Si se quiere saber la sumatoria de un conjunto de nmeros. La variable total se inicializa en cero. Cuando se captura un valor se acumula en total (total = total + valor).

Lenguaje C
Tipos de Datos

Constantes y Variables
Sub-ndices: manejan la referencia a una hilera de datos e indica la posicin de los datos. El valor correspondiente es la posicin donde se encuentra el dato que se est proesando. Se inicializan de acuerdo a la posicin del valor con que se empezara a trabajar. Ejemplo: Si se tiene el conjunto de nmeros 3,7,5,8,9; e iniciamos con el primer dato, la variable tendra el valor de 0. As, al avanzar al siguiente dato tendra el valor de 1, y as sucesivamente...

Formatos de Programas en C
Estructuras de Control
El pre-procesador C El preprocesador es una coleccin de instrucciones especiales, llamadas directivas, las cuales son ejecutadas al principio del proceso de compilacin. El control del preprocesador se realiza mediante determinadas directivas incluidas en el fuente.

Una directiva es una palabra que interpreta el preprocesador. Siempre va precedida por el smbolo # y est situada a principio del cdigo. Por Ej. #include #define

Formatos de Programas en C
Estructuras de Control
El pre-procesador C La directiva #define se utiliza para definir una macro; es decir identificadores simples que son equivalentes a expresiones o instrucciones completas. En ese sentido una macro se parece a una funcin, pero son tratada y definidas de forma diferentes durante el proceso de compilacin.

Se define de la forma: #define ID secuencia. Cada ocurrencia de ID en el fuente es sustituida por secuencia.
#define PI 3.141593 /*constante numrica*/ #define NOMBRE Carlitos /* texto */

Formatos de Programas en C
#include <stdio.h> #include <stdlib.h> #define AREA longitud * altura

Estructuras de Control
La macro AREA representa la expresin longitud * altura. Cuando el programa es compilado, la expresin longitud * altura reemplaz al identificador AREA dentro de la instruccin printf de tal manera que dicha instruccin quedar:

int main(int argc, char *argv[]) { int longitud,altura; printf("\n Longitud ="); scanf("%d",&longitud); printf("\n Area = %d", longitud * altura); printf("\n Altura ="); scanf("%d",&altura); printf("\n Area = %d", AREA); system("PAUSE"); return 0; }

Lenguaje C
Tipos de Datos

Tipos de Datos
Existen datos numricos; otros son letras o caracteres. El computador necesita un sistema para identificar y utilizar todas estas diferentes clases de datos. En C el sistema consiste en reconocer algunos tipos de datos fundamentales. Si el dato es una constante, el compilador es capaz, generalmente, de decirnos de qu tipo se trata simplemente por el aspecto que tiene; por el contrario, las variables necesitan un anuncio previo de su tipo en la sentencia de declaracin.

C soporta varios tipos diferentes de datos, cada uno de los cuales puede ser representado de forma diferente dentro de la memoria de la computadora.

Lenguaje C
Tipos de Datos

Tipos de Datos
char
Un caracter (letra)

short
Cantidad entera pequea

int
Cantidad entera

unsigned int
Cantidad entera pequea Ej.: 4047565324

Ej.: a, z, ?, -

Ej.: -15

Ej.: 5, 6, 3872

Memoria: 1 byte

Memoria: 2 bytes

Memoria: 4 bytes

Memoria: 4 bytes

Rango: -128..127

Rango: -3276832767

Rango: 21474836482147483647

Rango: 04294967296

Lenguaje C
Tipos de Datos

Tipos de Datos
long
Cantidad entera grande

float
Punto flotante

double
Doble precisin de punto flotante.

long double
Doble precisin de punto flotante. Ej.: 6.1e12, 1.7e-19

Ej.: 15

Ej.: 5.4, 3.22, 7.6543

Ej.: 6.1e12, 1.7e-19

Memoria: 8 bytes

Memoria: 4 bytes

Memoria: 8 bytes

Memoria: 16 bytes

Rango: 92233720368547758089223372036854775807

Rango: 1.175494351e383.402823466e38

Rango: 2.2250738585072014e 3081.7976931348623158e308

Rango: ?

Lenguaje C
Tipos de Datos

Tipos de Datos
La cantidad de memoria usada o el tamao del dato depende del tamao de palabra de la mquina para la cual est hecho el compilador en que se trabaje.

Lenguaje C
Tipos de Datos

Tipos de Datos
El tipo int puede tener los prefijos short, long y signed/unsigned.

La interpretacin de estos prefijos vara de un compilador a otro, pero en forma general:


short: long: signed: unsigned: Usa la mitad del tamao de un entero. Usa el doble del tamao de un tipo. Con signo, del mismo tamao, se asume por defecto. Sin signo. Slo los positivos.

Lenguaje C
Operadores
En el lenguaje C, se utilizan operadores para representar operaciones aritmticas. Por ejemplo, el operador + hace que se sumen los valores situados a su izquierda y derecha. Si a y b son variables del tipo entero (int) con valores 10 y 3 respectivamente: a+b = 13 a*b = 30

a-b = 7

Suma

Resta

Multiplicacin

a/b=3
Divisin

a%b=1
Mdulo (residuo)

Lenguaje C
Operadores
Supongamos ahora que v1 y v2 son variables flotantes (float) cuyos valores son 12.5 y 2.0, respectivamente. Veamos los resultados de las siguientes expresiones:

v1+v2 = 14.5
Suma

v1-v2 = 10.5
Resta

v1*v2 = 25.0
Multiplicacin

v1/v2= 6.25
Divisin

v1%v2= Error!
Mdulo (residuo)

El operador % (mdulo, residuo) es entre enteros y no est definido para valores decimales.

Lenguaje C
Operadores
Aqu, supongamos que c1 y c2 son tipo caracter con los valores P y T, respectivamente. Veamos los valores de las siguientes operaciones:
Expresin c1 c1+c2 c1+c2+5 c1+c2+5 c1%c2 Valor 80 164 169 217 80 Fjese que el caracter P tiene el valor 80 como decimal, segn la tabla ASCII y T tiene el 84 y 5 tiene el valor 53.

Lenguaje C
Operadores
En general, el resultado final de una operacin ser expresado en el tipo de dato de mayor precisin, relacionado con los tipos de datos de los operandos. Las siguientes reglas aplican para estos casos:
Si ambos operandos son flotantes con diferente precisin, el operando de menor precisin ser convertido a la del otro y el resultado ser expresado en la mayor precisin. Si un operando es flotante y otro es un caracter o un entero, el entero o el caracter sern convertidos a flotantes y el resultado ser flotante.

Si no hay operandos flotantes, pero uno es long int, entonces el otro ser convertido a long int y el resultado ser en long int.
Si no hay operandos flotantes ni long int ambos operandos sern convertidos a enteros y el resultado ser un entero.

Lenguaje C
Operadores
Supngase que i es un entero cuyo valor es 7, f es un flotante cuyo valor es 5.5 y c es un caracter que representa el caracter w. Veamos los resultados de las siguientes expresiones:
Expresin i+f i+c i + c 0 (i + c) (2 * f / 5) Valor 12.5 126 78 123.8 Tipo float int int float 0 = 48 w = 119

Lenguaje C
Operadores
El valor de una expresin puede ser convertido a un tipo de dato en especfico si as se desea. Esto se conoce como conversin de tipo. Simplemente la expresin (o variable) debe estar precedida por el tipo de dato deseado encerrado entre parntesis. En algunos casos es obligatorio hacer la conversin de tipo. Supongamos que i es una variable tipo entero cuyo valor es 7 y f es una variable flotante con un valor de 8.5.
La expresin: (i + f) % 4 es invlida, porque el primer operando es flotante. Pero si la expresin fuese ((int) (i+f)) % 4, se est convirtiendo el resultado de (i+f) a entero. Si queremos hacer una conversin de tipo la forma es: (tipo)expresion.

Lenguaje C
Operadores
Debemos tener claro que al hacer una conversin de tipo los datos se trabajan de acuerdo al tipo asignado en la conversin.
Si por ejemplo tenemos i como entero con el valor de 2, x como flotante con el valor de 3.12, al evaluar: i+x tenemos 2+3.12, pero al evaluar i+(int)x tenemos 2+3. Al evaluar (float)i+x tenemos 2.0+3.12, adems i/x es 2/3.12 = 0 (toma el tipo del numerador por defecto) y (float)i/x es 2.0 /3.12=0.641025

Lenguaje C
Operadores
Operadores Unarios Si la variable i es de tipo entero (int) con valor de 5:

-i = -5

i++ ++i =6
Incremento en uno

i-- --i = 4

Cambio de Signo

Decremendo en uno

++ y pueden ser utilizados prefijo o posfijo. Si es prefijo, la variable se incrementa/decrementa primero y luego de utiliza. En posfijo, se utiliza primero y en la siguiente sentencia se aplican los cambios.

Lenguaje C
Operadores

Operadores Relacionales y Lgicos


Operador < <= > >= == != ! && || Significado Menor que Menor o igual que Mayor que Mayor o igual que Igual a Diferente a Negacin Y lgico O lgico En el lenguaje C no existe el tipo de dato booleano propiamente, pero C define como verdadero todo valor diferente de cero y como falso el valor cero.

Lenguaje C
Operadores
Supongamos que i, j y k son variables tipo entero con los valores 1, 2 y 3 respectivamente. Veamos los valores de las siguientes expresiones:
Expresin i<j (i+j) >= k (j+k) > (i+5) k != 3 j == 2 !(j==2) (i>=5) || (j%3) (i<=2) && (j%2) Interpretacin Verdadero Verdadero Falso Falso Verdadero Falso Verdadero Falso Valor 1 1 0 0 1 0 1 0

Lenguaje C
Operadores de Asignacin
Operador Significado
= += -= *= /= %= Asigna el valor de la derecha a la variable que est a la izquierda. Asigna el valor de la variable de la izquierda ms el valor de la derecha a la variable de la izquierda. Asigna el valor de la variable de la izquierda menos el valor de la derecha a la variable de la izquierda. Asigna el valor de la variable de la izquierda por el valor de la derecha a la variable de la izquierda. Asigna el valor de la variable de la izquierda entre el valor de la derecha a la variable de la izquierda. Asigna el residuo de la divisin de la variable de la izquierda con el valor de la derecha a la variable de la izquierda.

Operadores

Lenguaje C
Operadores
Supongamos que i, j y k son variables tipo entero con los valores 1, 2 y 3 respectivamente. Veamos los valores de las siguientes expresiones:
Expresin k=i+j k=ij k += i+j k *= i+j k /= i+j k %= j Valor de k 3 -1 6 9 1 1

Lenguaje C
Operadores

Orden de Precedencia de Evaluacin (de mayor a menor)


Categoras Unarios Multiplicacin, Divisin y Mdulo Operadores - ++ -- ! */% Asociacin DI ID

Suma y Sustraccin
Relacionales Igualdad Y lgico

+< <= > >= == != &&

ID
ID ID ID

O lgico
Asignacin

||
= += -= *= /= %=

ID
DI

Lenguaje C
Operadores

Operador Ternario ?:
Generalmente se usa con un operador de asignacin, pero se puede usar en otros casos. Uso: Expresin ? VERDADERO : FALSE Si la expresin es verdadera retorna lo que est despus del ? (signo de interrogacin), y si no, lo que est despus del : (dos puntos). Expresin k = i>5 ? 6 : 4 k += i<7 ? 9 : 1 k -= i%2 ? 5 : 6 Valor de k 4 17 3 Si i, j y k son enteros con los valores 5, 6 y 8 respectivamente.

Potrebbero piacerti anche