Académique Documents
Professionnel Documents
Culture Documents
Introduccin
En una computadora un algoritmo se expresa a travs de un programa Los lenguajes utilizados para escribir programas de computadora se denominan lenguajes de programacin Los principales tipos de lenguajes utilizados son:
Lenguajes mquina (0s y 1s) Lenguajes de bajo nivel (ensamblador) Lenguajes de alto nivel
Lenguajes mquina
El lenguaje que manejan es directamente entendible por la computadora Sus instrucciones son cadenas binarias que especifican operaciones y posiciones de memoria Las instrucciones en lenguaje mquina dependen del hardware de la computadora
Lenguajes mquina
Ejemplo
Direccin 0100 0101 0111 ... 0010 0100 0011 ... Contenido 0000 0000 0000 ... 0000 0000 0000 ... 0100 0101 0110 ...
Lenguajes mquina
Ventajas
Cargar un programa sin necesidad de traduccin posterior Velocidad superior a cualquier otro lenguaje de programacin
Desventajas
Dificultad y lentitud en la programacin Dificultad para verificar y corregir errores Los programas solo se pueden ejecutar en el procesador en que se program
Desventajas
Dependencia total de la mquina El diseo de programas requiere no solo de tcnicas de programacin, sino tambin el conocimiento interior de la mquina
Traductores de lenguaje
Los traductores de lenguaje son programas que traducen los programas fuente escritos en lenguajes de alto nivel a cdigo mquina Los traductores se dividen en:
Compiladores Intrpretes
Intrpretes
Un interprete es un traductor que toma un programa fuente, lo traduce y a continuacin lo ejecuta
Programa fuente
Intrprete
Compiladores
Un compilador es un programa que traduce los lenguajes de alto nivel a lenguajes mquina
Programa fuente
Compilador
Programa objeto
Fases de compilacin
Programa fuente
Compilador
Programa objeto
Montador (enlazador)
EL LENGUAJE DE PROGRAMACIN C
Orgenes de C
Los orgenes de C datan de finales de los 60's y principios de los aos 70's Se bas en el lenguaje BCPL desarrollado por Martin Richards, y el lenguaje B desarrollado por Ken Thompson En 1972 el sistema Unix se reescribo en un nuevo lenguaje llamado C desarrollado por Dennis Ritchie en los laboratorios Bell
Orgenes de C
Brian Kernighan y Dennis Ritchie escriben en 1978 el primer estndar de facto para C En 1988 la ANSI (American National Standars Institute) publica el primer estndar oficial
Estructura de un programa en C
Todo programa en C consta de uno o ms mdulos llamados funciones Una de las funciones se llama main El programa siempre comenzar por la ejecucin de la funcin main Las dems funciones se pueden acceder desde la funcin main
Estructura de un programa en C
Cada funcin debe contener:
Una cabecera de la funcin, que consta del tipo retornado por la funcin, su identificador, y una lista de argumentos encerrados entre parntesis Una lista de declaracin de argumentos, si se incluyen estos en la cabecera Una instruccin compuesta, que contiene el resto de la funcin
Ejemplo
int main(int argc, char *argv[]) { printf ("Hola mundo!\n"); return 0; }
Ejemplos de identificadores
Validos:
x, area, y12, suma_1, _temp, TABLA
No validos
4num, x, suma-1, mi variable
Palabras reservadas
Existen algunas palabras que el lenguaje C ha reservado y que tienen un significado predefinido Estas no se pueden utilizar como identificadores, ni darle un uso distinto al que ya tienen asignado
Palabras reservadas
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
Tipos de datos
Tipo de dato Descripcin Requisito de memoria 2 bytes
int
Cantidad entera
char
Carcter
1 byte
float
4 bytes
double
8 bytes
Modificadores de tipo
short. Se utiliza cuando se desea una variable menor que un int.
Sintaxis: short int <identificador>; Ejemplo: short int i;
long. Cuando se utiliza sobre un int dobla el espacio utilizado para almacenar el entero. Algo similar sucede cuando se utiliza con los tipos float y double.
Sintaxis: long [int|float|double] <identificador>; Ejemplo: long double x;
Modificadores de tipo
signed. Define que el valor de una variable numrica puede ser positivo o negativo. Este modificador se puede aplicar a los tipos int, char, long, short.
Sintaxis: signed <tipo> <identificador>; Ejemplo: signed int i;
unsigned. Se utiliza cuando se desea que la variable sea positiva. Este modificador se puede aplicar a los tipos int, char, long, short.
Sintaxis: unsigned <tipo> <identificador>; Ejemplo: unsigned long int i;
Declaraciones
Una declaracin asocia un tipo de datos especificado a un grupo de variables. Se deben declarar todas las variables antes de que aparezcan en las instrucciones ejecutables Una declaracin consta de un tipo de datos, seguido de uno o ms nombres de variables, finalizando con un punto y coma
Declaraciones
Ejemplos:
int a, b, c; float raiz; double num; char letra1, letra2; short int x;
Constantes simblicas
Una constante simblica es un nombre que sustituye una secuencia de caracteres Los caracteres pueden representar una constante numrica, una constante de carcter o una constante de cadena de caracteres
Sintaxis: #define nombre texto nombre: representa un nombre simblico, generalmente se escribe en maysculas texto: representa la secuencia de caracteres asociada al nombre simblico Ejemplo: #define PI 3.141592
Operadores
Operadores aritmticos
Operador + * / % Propsito Suma Resta Multiplicacin Divisin mdulo Precedencia () */% +a + b * c (a + b) / c
Operadores
Operadores unarios
Operador ++ -Propsito Signo negativo Incremento
int a = 1, b = 2;
Decremento
Operadores
Operadores relacionales y lgicos
int a = 1, b = 2; a < b a > b a != b (a == 1) && (b > a) (a != b) || (a > 2)
Funciones de biblioteca
El lenguaje C se acompaa de un cierto nmero de funciones de biblioteca que realizan operaciones y clculos de uso frecuente Estas funciones no son parte del lenguaje en si, pero se incluyen sus implementaciones Las funciones de biblioteca de propsitos relacionados suelen estar agrupadas archivos de bibliotecas Los archivos de biblioteca se proporcionan como parte del compilador de C
Funciones de biblioteca
Algunas funciones de biblioteca de uso comn son:
Funcin abs(i) cos(d) pow(d1,d2) getchar() Tipo int int double char Propsito Devuelve el valor absoluto de i Devuelve el coseno de d Devuelve d1 elevado a la potencia d2 Permite leer un carcter desde el dispositivo de entrada estndar Convierte el carcter c a minscula
tolower(c)
char
Funciones de entrada/salida
El lenguaje C incluye una coleccin de funciones de biblioteca para trabajar con operaciones de entrada/salida Las de uso ms comn son: getchar, putchar, scanf, printf, gets, puts Cada una de estas funciones regresa un valor distinto y los parmetros que requiere son diferentes
Funcin getchar
Devuelve un carcter ledo del dispositivo de entrada estndar (teclado) No requiere argumentos Sintaxis:
var_caracter = getchar(); Donde var_caracter es una variable de tipo carcter donde se almacena lo ledo por la funcin
Ejemplo:
char c; c = getchar();
Funcin putchar
Transmite un carcter al dispositivo de salida estndar (monitor) Requiere como argumento una variable de tipo carcter Sintaxis:
putchar(var_caracter); Donde var_caracter es una variable de tipo carcter que contiene el valor que se desea enviar de salida
Ejemplo:
char c = a; putchar (c);
Funcin scanf
Permite introducir cualquier combinacin de valores numricos, caracteres sueltos y cadena de caracteres Esta funcin devuelve el nmero de datos que se han conseguido introducir correctamente Sintaxis:
scanf (cadena_control, arg1, arg2, ..., argn) Donde cadena_control hace referencia a una cadena que contiene informacin sobre el formato de los datos y arg[n] son lo argumentos que representan los datos
Funcin scanf
La cadena de control incluye grupos individuales de caracteres, con un grupo de caracteres por cada dato de entrada Cada grupo de caracteres debe iniciar con el smbolo de porcentaje (%)
Funcin scanf
Funcin scanf
Los argumentos pueden ser variables o arreglos, y sus tipos deben de coincidir con los indicados en la cadena de control Cada nombre de variable debe ser precedido por un ampersand (&) Los arreglos no deben ir precedidos por el ampersand
Funcin scanf
Ejemplo:
{ char nombre [20]; int num1; float costo; . . . . . scanf(%s %d %f, nombre, &num1, &costo); . . . . . } Es importante notar que la conversin de tipo s se aplica a una cadena de caracteres que acaba en un carcter de espaciado. Por tanto, una cadena que incluye espacios en blanco no se puede introducir de esta forma
Funcin scanf
Ejemplo:
#include <stdio.h> int main() { char linea [80]; . . . . . scanf (%[ ABCDEFGHIJKLMNOPQRSTUVWXYZ], linea); . . . . . } En este ejemplo el carcter de conversin utilizado especifica que solo se reconocern maysculas y el espacio en blanco
Funcin printf
Permite escribir cualquier combinacin de valores numricos, caracteres y cadena de caracteres a la salida estndar Sintaxis:
printf (cadena_control, arg1, arg2, ..., argn)
Los argumentos de la funcin printf no representa direcciones de memoria y por lo tanto no son precedidos de ampersands
Funcin printf
Ejemplo:
#include <stdio.h> int main(){ char nombre [20]; int num1; float costo; . . . . . printf (%s %d %f, nombre, num1, costo); . . . . . return 0; }
La funcin puts permite escribir a la salida estndar una cadena de caracteres Sintaxis:
puts (cadena); Donde cadena es un arreglo de caracteres
Control de flujo en C
Instruccin if-else
Se utiliza para realizar una evaluacin lgica y a continuacin llevar a cabo una de dos posibles acciones Sintaxis
if (expresin) instruccin if (expresin) instruccin1 else instruccin2
Instruccin if - else
Ejemplo:
#include <stdio.h> int main(){ int a=3, b=4; if (a > b){ a = a-b; printf(%d, a); }else if(a < b){ b = b-a; printf(%d, b); } return 0; }
Ciclo while
Este ciclo ejecuta una serie de instrucciones de forma repetida, hasta que satisface alguna condicin Sintaxis:
while (expresin) instruccin
Ciclo while
Ejemplo:
#include <stdio.h> int main(){ int numero=0; while (numero <= 9){ printf(%d\n, numero); numero++; } return 0; }
Ciclo do - while
Este ciclo es utilizado cuando se desea que la condicin de paro se realice despus de la ejecucin de las instrucciones Sintaxis
do instruccin while (expresin)
Ciclo do - while
Ejemplo:
#include <stdio.h> int main(){ int numero=0; do{ printf(%d\n, numero++); }while (numero <= 9); return 0; }
Ciclo for
Este se compone de tres expresiones:
una que especifica el valor inicial de un ndice otra expresin que determina cundo se contina o no el ciclo una tercera que permite que el ndice se modifique al final de cada pasada
Sintaxis:
for (expresin1; expresin2; expresin3) instruccin
Ciclo for
Ejemplo: #include <stdio.h> int main(){ int numero; for (numero =0; numero <= 9; numero++){ printf(%d\n, numero); } return 0; }
La instruccin switch
La instruccin switch hace que se seleccione un grupo de instrucciones entre varios grupos disponibles La seleccin se basa en el valor de una expresin que se incluye en la instruccin switch Sintaxis:
switch (expresin) instruccin
La instruccin switch
Las instrucciones incluidas en un switch son generalmente instrucciones compuestas que especifican opciones posibles a seguir Cada grupo de instrucciones se escribe en forma general:
case expresin instruccin instruccin case expresin instruccin instruccin 1: 1 2 2: 3 4
Ejemplo:
#include <stdio.h> int main(){ char color; switch(color){ case r: case R: printf(ROJO); break; case a: case A: printf(AZUL); break; } return 0; }
La instruccin break
La instruccin break se utiliza para terminar la ejecucin de ciclos o salir de instrucciones switch Se puede utilizar dentro de una instruccin while, do while, for o switch Sintaxis: break;
La instruccin continue
La instruccin continue se utiliza para saltarse el resto de la pasada actual dentro de un ciclo El ciclo no termina cuando encuentra la instruccin continue, sino que no ejecuta las sentencias que estn despus de esta instruccin Sintaxis: continue;
La instruccin continue
Ejemplo:
#include <stdio.h> int main(){ int n; for (n=0; n<=100; n++) { //si no es mltiplo de 5, siguiente iteracin if (n % 5 != 0) continue; //imprime el siguiente mltiplo de 5 printf(%d,n); } return 0; }
Funciones
El lenguaje C se utilizan una serie de funciones de biblioteca para realizar operaciones de uso comn Sin embargo, para algunas operaciones es necesario definir funciones propias El uso de funciones definidas por el usuario permite dividir un programa grande en una serie de subprogramas ms pequeos (modularizar)
Funciones
Existen varias ventajas al modular los programas:
Se evita la necesidad de repetir las mismas instrucciones de forma redundante Los programas son ms fciles de escribir y depurar Se puede construir una biblioteca de funciones propias
Donde:
tipo-de-dato: es el tipo devuelto por la funcin nombre: es el identificador de la funcin tipo n: es el tipo de dato del argumento arg n: es el identificador del argumento
El cuerpo de la funcin son las instrucciones que definen la acciones que se deben realizar
Ejemplo
Determinar el mximo de dos nmeros void maximo (int x, int y){ int mayor; if ( x >= y) mayor = x; else mayor = y; printf(El mayor es: %d, mayor); }
Arreglos en C
Arreglos en C
Un arreglo es un conjunto finito y ordenado de elementos homogneos Esta estructura de datos es esttica, por lo que su tamao no puede cambiar una vez que se ha definido
Arreglos en C
La sintaxis para definir un arreglo es:
tipo_dato identificador [tamao]
Donde
tipo_dato: es el tipo de dato que se almacenar en el arreglo identificador: es el nombre con el que se hace referencia al arreglo tamao: especifica el nmero de elementos que contendr el arreglo.
Arreglos en C
Ejemplos: int x[100]; char texto[30]; float f[3];
Inicializacin de arreglos
El lenguaje C proporciona una forma de inicializar un arreglo desde su declaracin Utilizando este mtodo de inicializacin, el tamao del arreglo no necesita ser especificado Ejemplos:
int numeros [] = {1,2,3,4,5}; char vocales [] = {a, e, i, o, u}
Recorrido de arreglos
Se puede recorrer cada uno de los elementos de una arreglo mediante un ciclo, utilizando el contador como ndice del arreglo Ejemplo:
int i, num[3]; for(i=0; i<3; i++) num[i] = i+1;
Ejemplo
Leer 3 cadenas de 10 caracteres e imprimirlas al revs
Arreglos multidimensionales
La sintaxis para definir un arreglo multidimensional es muy parecida a los arreglos unidimensionales, excepto que se requiere un par separado de corchetes por cada dimensin Ejemplos: float tabla [50][50]; double registros [100][66][255];
Manejo de cadenas en C
Cadenas en C
Una cadena es un conjunto de caracteres tratados como una sola unidad Una cadena puede incluir letras, dgitos y varios caracteres especiales como +, -, * / y $ En C las literales de cadena se escriben dentro de comillas dobles
Cadenas en C
En C una cadena es un arreglo de caracteres los cuales terminan con el carcter nulo \0 Se accede a una cadena mediante un apuntador a su primer carcter El valor de una cadena es la direccin del primer carcter
Inicializacin de cadenas
Ejemplo: char medida[] = chico; La inicializacin de la cadena medida crea un arreglo de 6 elementos, que contiene los valores c, h, i, c, o, \0 Cuando se define un arreglo para que contenga una cadena, este debe ser lo suficientemente grande para almacenar la cadena y su carcter de terminacin nulo
Descripcin de la funcin Copia la cadena s2 dentro del arreglo s1. Devuelve el valor de s1 Agrega la cadena s2 al arreglo s1. Devuelve el valor de s1 Compara la cadena s1 con la cadena s2 Devuelve 0, menor que 0 o mayor que 0, si s1 es igual, menor, o mayor que s2, respectivamente Calcula la longitud de la cadena de caracteres
Descripcin de la funcin Devuelve un valor 1 si c es un dgito y 0 en caso contrario Devuelve un valor 1 si c es una letra y 0 en caso contrario Devuelve un valor 1 si c es un nmero o una letra y 0 en caso contrario Devuelve c como una letra minscula Devuelve c como una letra mayscula