Vous êtes sur la page 1sur 99

Lenguajes de programacin

M. en C. Joel Omar Jurez Gambino

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

Lenguajes de bajo nivel


Son ms fciles de utilizar que los lenguajes mquina, pero igual son dependientes de la arquitectura Un lenguaje de bajo nivel muy conocido es el ensamblador El lenguaje ensamblador esta compuesto por un conjunto de instrucciones conocidas como nemotcnicos (ADD, SUB, DIV, etc.) Este lenguaje no es directamente ejecutable por la mquina y requiere una fase de traduccin

Lenguajes de bajo nivel


Ejemplo:
ADD M, N, P 0110 1001 1010 1011

Lenguajes de bajo nivel


Ventajas
Mayor facilidad de codificacin Velocidad de clculo

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

Lenguajes de alto nivel


Estos lenguajes ocultan los detalles del funcionamiento del procesador de las instrucciones que se desean programar La caracterstica anterior hace posible que los programas hechos con estos lenguajes puedan ser portables (en cierta medida)

Lenguajes de alto nivel


Ejemplos de lenguajes de alto nivel:
Cobol Fortran C Pascal Basic C++ Visual Basic JAVA C#

Lenguajes de alto nivel


Ventajas
El tiempo que se invierte en aprender el lenguaje es relativamente corto Escritura de programas basada en reglas sintcticas parecidas al lenguaje humano Proceso de verificacin y correccin de errores sencillo Transportabilidad

Lenguajes de alto nivel


Desventajas
Requieren un proceso de traduccin ms complicado y tardado No se explota al mximo los recursos internos de la mquina Requieren de ms memoria Tiempo de ejecucin del programa mucho ms tardado

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

Traduccin y ejecucin lnea y lnea

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)

Programa ejecutable en lenguaje mquina

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; }

Identificadores y palabras reservadas


Un identificador es el nombre que se le da a los elementos de un programa (variables y funciones) Un identificador empieza por una letra seguido de letras y dgitos en cualquier orden. Se considera al guin bajo _ como una letra ms. Solo los primeros 31 caracteres son significativos

Ejemplos de identificadores
Validos:
x, area, y12, suma_1, _temp, TABLA

No validos
4num, x, suma-1, mi variable

Es importante recordar que C es un lenguaje sensible a maysculas y minsculas

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

Nmero en coma flotante Nmero en coma flotante de doble precisin

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

printf(++a); b--; printf(b); printf(a++)

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

Entrada y salida de datos

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; }

Funciones gets y puts


La funcin gets permite leer de la entrada estndar un arreglo de caracteres Sintaxis gets (cadena);
Donde cadena es un arreglo de caracteres

La funcin puts permite escribir a la salida estndar una cadena de caracteres Sintaxis:
puts (cadena); Donde cadena es un arreglo de caracteres

Funciones gets y puts


Ejemplo:
#include <stdio.h> int main(){ char linea[80]; //Lee del teclado una cadena de caracteres gets(linea); //Escribe a la pantalla una cadena de caracteres puts(linea); }

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

Donde expresin es el valor a evaluar e instruccin son las sentencias a realizar

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; }

Estructuras de control anidadas


Los ciclos descritos anteriormente, al igual que las instrucciones if else, se pueden anidar uno dentro de otro Ejemplo: Calcular el promedio de n alumnos para cuatro calificaciones por alumno

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

Definicin de una funcin


La definicin de una funcin tiene dos componentes principales: el encabezado de la funcin y el cuerpo de la funcin El encabezado contiene el tipo de valor devuelto por la funcin, seguido del nombre de la funcin y un conjunto opcional de parmetro En caso de que la funcin no requiera devolver ningn valor se utiliza como tipo de dato la palabra reservada void

Definicin de una funcin


Sintaxis:
tipo-de-dato nombre(tipo 1 arg 1, ..., tipo n arg n)

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); }

Acceso a una funcin


Para llamar a una funcin se utiliza su nombre, seguido de una lista de argumentos encerrados entre parntesis y separados por coma Si la funcin no requiere ningn argumento, se debe escribir despus del nombre de la funcin un par de parntesis vacos Si la funcin devuelve un valor, el acceso a la funcin se suele escribir como una instruccin de asignacin

Acceso a una funcin


Funcin que devuelve valor z = suma (x, y) Funcin que no devuelve valor imprimir (nombre)

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.

Es importante aclarar que el primer elemento en un arreglo esta en la posicin cero

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];

Inicializacin de arreglos multidimensionales


Para asignar valores iniciales a un arreglo unidimensional se forman grupos de valores encerrados entre llaves Los valores dentro de cada par interno de llaves sern asignados a los elementos del arreglo cuyo ndice este ms a la derecha

Inicializacin de arreglos multidimensionales


Ejemplo:
int valores [3][4]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };

Inicializacin de arreglos multidimensionales


Ejemplo 2: int t [2] [3] [4] = { { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }, { {13,14,15,16}, {17,18,18,20}, {21,22,23,24} } }

Paso de arreglos como parmetros


Un arreglo se puede pasar como parmetro a una funcin A diferencia de otros tipos de datos, un arreglo se enva por referencia, es decir se enva la direccin de memoria del arreglo Cualquier cambio hecho sobre un arreglo enviado a una funcin se ver reflejado cuando se retorne a la funcin principal

Paso de arreglos como parmetros


Para pasar un arreglo a una funcin, el nombre del arreglo debe aparecer solo, sin corchetes ni ndices La definicin de la funcin requiere se que incluya despus del nombre de la funcin un par de corchetes vacos para indicar que se trata de un arreglo

Paso de arreglos como parmetros


Ejemplo float suma (int arr1[], int arr2[]); //Prototipo int main(){ int arreglo1[3], arreglo2[3], res; ... res = suma(arreglo1, arreglo2);//llamada } float suma (int arr1[], int arr2[]){//Definicin ... }

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

Funciones de manipulacin de cadenas


La biblioteca de manipulacin de cadenas <string.h> proporciona muchas funciones tiles para trabajar datos de cadena Algunas manipulaciones disponibles son copiar, concatenar, comparar y buscar cadenas, entre otras.

Prototipo de la funcin char *strcpy(char *s1, const char *s2)

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

char *strcat(char *s1, const char *s2)

Int strcmp(char *s1, const char *s2)

int strlen(const char *s)

Biblioteca de manipulacin de caracteres


La biblioteca ctype.h incluye funciones que realizan evaluaciones y manipulaciones tiles en datos de tipo carcter Es importante recordar que en C los caracteres se manejan como enteros de un byte

Prototipo de la funcin int isdigit( int c)

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

int isalpha( int c)

int isalnum( int c)

int tolower( int c) int toupper( int c)

Vous aimerez peut-être aussi