tutorial lenguaje c

46
Lenguaje C Integrantes : Andrés Bernal Marlon Gomez

Upload: tbjs

Post on 30-Jun-2015

141 views

Category:

Education


0 download

DESCRIPTION

Tutorial basico sobre Lenguaje C

TRANSCRIPT

Page 1: Tutorial lenguaje c

Lenguaje CIntegrantes : Andrés Bernal

Marlon Gomez

Page 2: Tutorial lenguaje c

Introducción al Lenguaje C

EL lenguaje C es el resultado de un proceso de desarrollo que inició con un lenguaje

denominado BCPL. Este influenció a otro llamado B (inventado por Ken Thompson). En los

años 70; éste lenguaje llevó a la aparición del C.

Con la popularidad de las microcomputadoras muchas compañías comenzaron a

implementar su propio C por lo cual surgieron discrepancias entre sí.

Por esta razón ANSI (American Nacional Standars Institute, por sus siglas en inglés),

estableció un comité en 1983 para crear una definición no ambigüa del lenguaje C e

independiente de la máquina que pudiera utilizarse en todos los tipos de C.

Tomado de : http://www.monografias.com/trabajos/introc/introc.shtml

Page 3: Tutorial lenguaje c

Operadores

Un operador es un elemento de programa que se aplica a uno o varios operandos en una

expresión

o instrucción. Los operadores que requieren un operando, como el operador de incremento

se

conocen como operadores unarios. Los operadores que requieren dos operandos, como los

operadores aritméticos (+,-,*,/) se conocen como operadores binarios. Un operador, el

operador

condicional (?:), utiliza tres operandos y es el único operador ternario de C++].

Existen 6 tipos de operadores según su función, que son aritméticos, relacionales, de

asignación,

lógicos, de dirección y de manejo de Bits.

Page 4: Tutorial lenguaje c

OPERADORES DE ASIGNACION :

Tal y como su nombre lo indica, este tipo de operadores permiten la asignación de un valor

especifico a una variable. En C++ se encuentran disponibles los siguientes operadores:

Page 5: Tutorial lenguaje c

OPERADORES ARITMETICOS :

Los operadores aritméticos se usan para realizar cálculos y operaciones con números reales

y

punteros . Básicamente permiten hacer cualquier operación aritmética que se necesite. Los

operadores más comunes son :

Page 6: Tutorial lenguaje c

OPERADORES RELACIONALES:

Los operadores relacionales, también denominados operadores binarios lógicos y de

comparación, se utilizan para comprobar la veracidad o falsedad de determinadas

propuestas de relación (en realidad se trata respuestas a preguntas).

Si la propuesta es cierta, el resultado es true (un valor distinto de cero), si es falsa será

false (cero). C++ dispone de los siguientes operadores relacionales:

Page 7: Tutorial lenguaje c

OPERADORES LOGICOS :

Los operadores lógicos producen un resultado booleano, y sus operandos son también

valores lógicos o asimilables a ellos (los valores numéricos son asimilados a cierto o falso

según su valor sea cero o distinto de cero). Por el contrario, las operaciones entre bits

producen valores arbitrarios.

Los operadores lógicos son tres, dos de ellos son binarios y el último (negación) es unario:

Page 8: Tutorial lenguaje c

OPERADORES DE BITS :

Los operadores de movimiento son operadores a nivel de bits, y lo que hacen es convertir

una determinada cantidad a su equivalente en bits para posteriormente realizar un

desplazamiento de dicho valor. Estos operadores son:

Page 9: Tutorial lenguaje c

OPERADORES DE DIRECCION :

Además de los operadores aritméticos, de los que existen versiones para los tipos

numéricos y para los punteros, C++ dispone de dos operadores específicos para estos

últimos (punteros de cualquier tipo): la indirección “*” y la referencia “&” . Además existen

dos operadores específicos para punteros-a-clases

Page 10: Tutorial lenguaje c

Sentencias .Sentencia If-Else:Para escribir una instrucción alternativa doble (if else) se utiliza la sintaxis:

if ( <expresión_lógica> )

{

<bloque_de_instrucciones_1>

}

else

{

<bloque_de_instrucciones_2>

}

Page 11: Tutorial lenguaje c

A la <expresión_lógica> de una instrucción alternativa doble (if else) también se le

denomina condición.

Para que se ejecute el <bloque_de_instrucciones_1>, la condición tiene que ser verdadera.

Por el contrario, si la condición es falsa, se ejecutará el <bloque_de_instrucciones_2>.

En resumen, en C una instrucción if else (alternativa doble) permite seleccionar, por medio

de una condición, el siguiente bloque de instrucciones a ejecutar, de entre dos posibles.

EJEMPLO:

un programa que:

1º) Pida por teclado la nota de una asignatura.

2º) Muestre por pantalla:

"APROBADO", en el caso de que la nota sea mayor o igual que 5.

"SUSPENDIDO", en el caso de que la nota sea menor que 5.

Page 12: Tutorial lenguaje c

CODIGO:

#include <stdio.h>

#include <conio.h>

void main()

{

float nota;

printf( "\n Introduzca nota (real): " );

scanf( "%f", &nota );

if ( nota >= 5 )

printf( "\n APROBADO" );

else

printf( "\n SUSPENDIDO" );

getch();

}

Page 13: Tutorial lenguaje c

Sentencia While:

Son también una estructura cíclica, que nos permite ejecutar una o varias líneas de código

de manera repetitiva sin necesidad de tener un valor inicial e incluso a veces sin siquiera

conocer cuándo se va a dar el valor final que esperamos, los ciclos while, no dependen

directamente de valores numéricos, sino de valores booleanos, es decir su ejecución

depende del valor de verdad de una condición dada, verdadera o falso, nada más.

En este ciclo el cuerpo de instrucciones se ejecuta mientras una condición permanezca

Como verdadera en el momento en que la condición se convierte en falsa el ciclo termina.

Page 14: Tutorial lenguaje c

EJEMPLO:

#include <stdio.h>

#include <conio.h>

void main()

{

float nota;

printf( "\n Introduzca nota (real): " );

scanf( "%f", &nota );

/* Si la primera nota introducida por el

usuario es correcta,

el bucle no itera ninguna vez. */

while ( nota < 0 || nota > 10 )

{

printf( "\n ERROR: Nota incorrecta, debe ser >= 0 y <= 10\n" );

printf( "\n Introduzca nota (real): " );

scanf( "%f", &nota );

}

/* Mientras que el usuario introduzca una

nota incorrecta, el bucle iterará.

Y cuando introduzca una nota correcta,

el bucle finalizará. */

if ( nota >= 5 )

printf( "\n APROBADO" );

else

printf( "\n SUSPENDIDO" );

getch();

}

Page 15: Tutorial lenguaje c

Sentencia DO-WHILE:

son una estructura de control cíclica, los cuales

nos permiten ejecutar una o varias líneas de

código de forma repetitiva sin necesidad de tener

un valor inicial e incluso a veces sin siquiera

conocer cuándo se va a dar el valor final, hasta

aquí son similares a los ciclos while.

Su diferencia básica con el ciclo while es que la

prueba de condición es hecha al finalizar el ciclo,

es decir las instrucciones se ejecutan cuando

menos una vez porque primero ejecuta las

instrucciones y al final evalúa la condición.

EJEMPLO:

#include <stdio.h>

#include <conio.h>

 

void main()

{

char seguir;

int acumulador, numero;

 

/* En acumulador se va a guardar la suma de

los números introducidos por el usuario. */

 

acumulador = 0;

do

{

printf( "\n Introduzca un numero entero: " );

scanf( "%d", &numero);

acumulador += numero;

 

printf( "\n Desea introducir otro numero (s/n)?: " );

fflush( stdin );

scanf( "%c", &seguir);

} while ( seguir != 'n' );

 

/* Mientras que el usuario desee introducir

más números, el bucle iterará. */

 

printf( "\n La suma de los numeros introducidos es: %d",

acumulador );

 

getch();

}

Page 16: Tutorial lenguaje c

• Sentencia FOR:

Para escribir una instrucción for (repetitiva para) se utiliza la sintaxis:

for ( <expresión_1> ; <expresión_2> ; <expresión_3> )

{

<bloque_de_instrucciones>

}

Cuando el <bloque_de_instrucciones> sólo contiene una instrucción, los caracteres abrir

llave ({) y cerrar llave (}) son opcionales.

Por otro lado, el bucle for es ideal usarlo cuando, de antemano, ya se sabe el número de

veces (iteraciones) que tiene que ejecutarse un determinado bloque de instrucciones.

Page 17: Tutorial lenguaje c

EJEMPLO:

#include <stdio.h>

#include <conio.h>

void main()

{

int contador;

printf( "\n " );

for ( contador=1 ; contador<=10 ; contador++ )

printf( "%d ", contador );

getch();

}

Page 18: Tutorial lenguaje c

LIBRERIAS  assert.h Contiene una macro para el diagnóstico dentro de los programas.

 ctype.h Contiene varias funciones para comprobación de tipos y transformación de caracteres.

 errno.h Contiene varias macros usadas para informar de errores.

 limits.h Contienen varias macros que definen constantes para el tamaño de tipo enteros.

 float.h Contienen varias macros que definen constantes para el tamaño de tipo flotante.

locale.h Contienen varias macros, funciones y tipos para unidades locales, como unidad

monetaria, tiempo, dígitos, etc.

 math.h Contiene una macro y varias funciones matemáticas.

setjmp.h Contienen declaraciones que proporcionan una forma de evitar la secuencia normal

de llamada y regreso de funciones.

Page 19: Tutorial lenguaje c

signal.h Contiene un tipo, dos funciones y varias macros para manejar condiciones

excepcionales que aparecen durante la ejecución, tal como una señal de interrupción de una

fuente externa o un error en la ejecución.

stdarg.h Contiene un tipo y tres macros que proporcionan recursos para recorrer una lista de

argumentos de función de tamaño y tipo desconocido.

stddef.h Contiene varios tipos y macros que también están definidas en otras librerías, como

size_t.

stdio.h Contiene tipos, macros y funciones para la realización de tareas de E/S.

stdlib.h Contiene tipos, macros y funciones para la conversión numérica, generación de

números aleatorios, búsquedas y ordenación, gestión de memoria y tareas similares.

string.h Contiene tipos, macros y funciones para la manipulación de cadenas de caracteres.

time.h Contiene tipos, macros y funciones para la manipulación de información sobre fechas y

horas.

A continuación profundizaremos acerca de 5 de ellas : Stdio.h, String.h, Conio.h, Match.h, Iostream.h,

Ctype.h.

Page 20: Tutorial lenguaje c

LIBRERIA STDIO.H :

Significa "standard input-output header" (cabecera estándar E/S), es la biblioteca estándar

del lenguaje de programación C, el archivo de cabecera que contiene las definiciones de

macros, las constantes, las declaraciones de funciones y la definición de tipos usados por

varias operaciones estándar de entrada y salida. Por motivos de compatibilidad, el lenguaje

de programación C++ (derivado de C) también tiene su propia implementación de estas

funciones, que son declaradas con el archivo de cabecera cstdio.

Las funciones declaradas en stdio.h son sumamente populares.

Page 21: Tutorial lenguaje c

Funciones:

NOMBRE FUNCION SINTAXIS

printf Escribe en la salida estándar con formato. printf(char *formato, lista_arg)

scanf Lee de la salida estándar con formato. scanf(“%fto. var.”,& variable);

puts Escribe una cadena y salto de linea. puts(cadena);

gets Lee y guarda una cadena introducida por teclado.

gets(cadena);

fclose Cierra un fichero cuyo puntero le indicamos.

fclose(pf);

fprintf Escribe con formato en un fichero. fprintf(pf , formato , arg1 , ...);

fgets Lee una cadena de un fichero. fgets(char *cadena, int n, FILE *stream);

Page 22: Tutorial lenguaje c

LIBRERIA CONIO.H

Conio.h es un archivo de cabecera en el lenguaje de programación C Es utilizado por los

compiladores para MS- DOS para crear interfaces basadas en texto. Se describe en el libro

El Lenguaje de Programación C por Brian Kernighan y Dennis Ritchie, porque no es parte

de la biblioteca estándar de C Asimismo, no se incluye en la familia de normas POSIX.

En esta cabecera se declaran diferentes funciones creadas debido a que un programa

puede realizar especial de entrada / salida en la consola . Muchos compiladores de C para

DOS, Windows 3.x, OS / 2 , o Win32 [ 1 ] contienen esta cabecera , a diferencia de la

mayoría de los compiladores para UNIX y LINUX . Algunos sistemas integrados utilizan una

biblioteca compatible con libreria conio.h que es de borland C++

Page 23: Tutorial lenguaje c

Funciones:NOMBRE FUNCION SINTAXIS

Crscr Borrar la pantalla. Clrscr( );

Clreol Borra desde la posición del cursor hasta el final de la linea.

Clereol( );

Gotoxy Cambia la posición del cursor a las coordenadas indicadas.

gotoxy(columna , fila);

Textcolor Selecciona el color de texto (0 - 15). textcolor(color);

Textbackground Selecciona el color de fondo (0 - 7). textbackground(color);

Wherex Retorna la columna en la que se encuentra el cursor.

col=wherex( );

Wherey Retorna la fila en la que se encuentra el cursor.

fila=wherey( );

Getch Lee y retorna un único caracter introducido mediante el teclado por el usuario. No muestra el caracter por la pantalla.

letra=getch( );

Getche Lee y retorna un único caracter introducido mediante el teclado por el usuario. Muestra el caracter por la pantalla.

letra=getche( );

Page 24: Tutorial lenguaje c

LIBRERÍA STRING.H:

Es un archivo de la Biblioteca estándar del lenguaje de programación C que contiene la

definición de macros, constantes, funciones y tipos de utilidad para trabajar con cadenas de

caracteres y algunas operaciones de manipulación de memoria (el nombre string puede ser

algo inapropiado).

Las funciones declaradas en string.h se han hecho muy populares, por lo que están

garantizadas para cualquier plataforma que soporte C. Sin embargo, existen algunos

problemas de seguridad con estas funciones, como el desbordamiento de buffer (buffer

overflow), que hacen que algunos programadores prefieran opciones más seguras frente a

la portabilidad que estas funciones ofrecen. Además, las funciones para cadenas de

caracteres sólo trabajan con conjuntos de caracteres ASCII o extensiones ASCII

compatibles.

Page 25: Tutorial lenguaje c

NOMBRE FUNCION SINTAXIS

Strlen Calcula la longitud de una cadena. longitud=strlen(cadena);

Strcpy Copia el contenido de una cadena sobre otra.

strcpy(copia , original);

Strcat Concatena dos cadenas. strcat(cadena1 , cadena2);

Strcmp Compara el contenido de dos cadenas. Si cadena1 < cadena2 retorna un número negativo. Si cadena1 > cadena2, un n£mero positivo, y si cadena1 es igual que cadena2 retorna 0 ( o NULL ).

valor=strcmp(cadena1 , cadena2);

Page 26: Tutorial lenguaje c

LIBRERÍA MATH.H:Es un archivo de cabecera de la biblioteca estándar del lenguaje de programación C

diseñado para operaciones matemáticas básicas. Muchas de sus funciones incluyen

el uso de números en coma flotante. C++ también implementa estas funciones por

razones de compatibilidad y las declara en la cabecera cmath.

Una nota importante: si se está programando en C/C++ bajo Gnu/Linux, y se utiliza

uno de los compiladores nativos de este sistema operativo (gcc o g++), es necesario

incluir, al compilar, la opción -lm, dado que, de lo contrario, el compilador generará un

error. Por ejemplo, si tenemos un fichero fuente con funciones de la biblioteca

matemática, llamado mi_fich_fuente_math.c, para compilarlo será necesario dar la

orden siguiente en la consola de comandos (respectiva al intérprete):

$ gcc mi_fich_fuente_math.c -lm -o <nombre_del_ejecutable>

Esto, asimismo, no es necesario si se programa en C/C++ bajo Windows utilizando la

herramienta gráfica MS Visual C++.

Page 27: Tutorial lenguaje c

Todas las funciones en las que participan ángulos toman y devuelven radianes.

NOMBRE FUNCION SINTAXISCos Toma y devuelve un valor doublé. double cos(double x);

Toma y devuelve un valor en coma flotante, esta función sólo está disponible en C++.

float cos(float x);

Toma y devuelve un valor long double, sólo disponible en C++.

long double cos(long double x);

Sin Calcula el seno de x (medido en radianes).

double sin(double x);

Tan Calcula la tangente de x (medido en radianes).

double tan(double x);

Log Calcula el logaritmo natural (o neperiano). Puede producirse un error de dominio si el argumento es negativo. Puede producirse un error de recorrido si el argumento es cero.

double log(double x);

Exp Calcula la función exponencial de x. double exp(double x);

Sqrt Calcula la raíz cuadrada del valor no negativo de x. Puede producirse un error de dominio si x es negativo.

double sqrt(double x);

Page 28: Tutorial lenguaje c

LIBRERIA IOSTREAM.H: Es un componente de la biblioteca estándar (STL) del lenguaje de programación C++ que

es utilizado para operaciones de entrada/salida. Su nombre es un acrónimo de Input/Output

Stream. El flujo de entrada y salida de datos en C++ (y su predecesor C) no se encuentra

definida dentro de la sintaxis básica y se provee por medio de librerías de funciones

especializadas como Iostream.h. Iostream.h define los siguientes objetos:

• cin : Flujo de entrada (que entra)

• cout : Flujo de salida (que sale)

• cerr : Flujo de error no almacenado.

• clog : Flujo de error almacenado

Page 29: Tutorial lenguaje c

LIBRERIA CTYPE.H:Ctype.h es un archivo de cabecera de la biblioteca estándar del lenguaje de programación

C diseñado para operaciones básicas con caracteres. Contiene los prototipos de las

funciones y macros para clasificar caracteres.

Nombre Función Sintaxis

Isalnum Comprueba si un carácter es alfanumérico. int isalnum(int c);

Isalpha Comprueba si un carácter es alfabético. int isalpha(int c);

Isascii Comprueba si un carácter es un carácter Ascii. int isascii (int c)

Iscntrl Comprueba si un carácter es un carácter de control. int iscntrl(int c);

Isdigit Comprueba si un carácter es un número. int isdigit(int c);

Isgraph Comprueba si un carácter se puede imprimir sin el espacio. int isgraph(int c);

Islower Comprueba si un carácter está en minúscula, int islower(int c);

Isprint Comprueba si un carácter se puede imprimir. int isprint(int c);

Ispunct Comprueba si un carácter es de puntuación. int ispunct(int c);

Isspace Comprueba si un carácter es un espacio. int isspace(int c);

Isupper Comprueba si un carácter está en mayúscula. int isupper(int c);

Isxdigit Comprueba si un carácter es hexadecimal. int isxdigit(int c);

Page 30: Tutorial lenguaje c

EJERCICIOS REALIZADOS

TABLA DE MULTIPLICAR:Uno de lo primeros programas que realizamos fue este, básicamente consiste en ingresarle un numero y el arroja su respectiva tabla de multiplicar.

#include "stdio.h"

#include "conio.h"

#include "Iostream.h"

void main ()

{

char seguir;

int i,num,res;

do

{

printf ("\n Ingrese un numero para generar su tabla ");

scanf ("%d",&num);

for (i=1;i<=10;i++)

{

res=num*i;

printf ("\n %d * %d = %d ",num,i,res);

}

printf ("\n Desea ingresar otro numero S/N ");

fflush( stdin );

scanf ("%c",&seguir);

clrscr();

}while (seguir != 'n');

getch();

}

Page 31: Tutorial lenguaje c

SERIE FIBONACCI :

#include <stdio.h>

#include <conio.h>

int main()

{

int i,j,k,t,n;

n=15;//final de la serie

i=0; j=1; //asignacion necesaria

printf("%d,%d,",i,j); //imprimimos los 2 primeros valores

for(k=1;k<n;k++){ //Si n = 3 entonces k va a parar cuando llegue a 2

t=i+j;

(k>n-2)?printf("%d.",t):printf("%d,",t);

i=j;

j=t;

}

getch();

}

Page 32: Tutorial lenguaje c

MAXIMO COMUN DIVISOR:Este programa tan solo consiste en ique el usuario le ingrese un numero y lse le arroja el MCD .

#include "stdio.h"

#include "conio.h"

#include "Iostream.h"

void main()

{

int x,y,r;

printf ("\n Maximo comun divisor de dos numeros \n");

printf ("\n Ingrese primer numero en X ");

scanf("%d", &x);

printf ("\n Ingrese segundo numero en Y ");

scanf("\n%d", &y);

r=x%y;

while(r>0)

{

x=y;

y=r;

r=x%y;

}

printf(" \n El MCD es %d", y);

getch();

}

Page 33: Tutorial lenguaje c

MINIMO COMUN MULTIPLO:

Consiste en ingresar 2 números uno en la variable X, y otro en la variable Y. Seguido a esto el programa dará el MCM de los 2 números ingresados.

#include "stdio.h"

#include "conio.h"

#include "Iostream.h"

void main()

{

int a, b, x, y, m=1, i=2;

printf ("\n Minimo común múltiplo\n ");

printf ("\n Ingrese primer numero: X ");

scanf("%d",&x);

printf ("\n Ingrese segundo numero: Y ");

scanf("\n%d",&y);

if (x<y){a=x; b=y;} else {a=y; b=x;}

do{

if (a%i==0){

if(b%i==0){

m=m*i;

a=a/i; b=b/i; i=2;

}

else i++;

}

else i++;

} while(i<=a);

m=m*b*a;

printf ("\n El MCM es %d",m);

getch();

}

Page 34: Tutorial lenguaje c

ES NUMERO PRIMO ?

Consiste en que el usuario le ingrese un numero y el arroja si el numero ingresado es primo o no es primo.

#include "stdio.h"

#include "conio.h"

#include "Iostream.h"

void main()

{

int num,i;

int a=0;

printf (" \nIngrese un numero ");

scanf ("%d",&num);

for (i=1;i<(num+1);i++)

{

if (num%i==0)

{

a++;

}

}

if (a==2)

{

printf ("El numero %d es: Primo",num);

}

else

{

printf ("El numero %d es: No primo",num);

}

getch();

}

Page 35: Tutorial lenguaje c

EL NUMERO ES CAPICUA ?

#include "stdio.h"

#include "conio.h"

#include <stdlib.h>

int main()

{

int opc;

{

int num[5];

long int n, n_temp;

int aux1, aux2, i;

i = 0;

aux1 = 0;

printf("Introduzca el numero a analizar si es capicua o no: ");

scanf("%i", &n);

printf("\n");

n_temp = n;

do

{

num[aux1] = n_temp%10;

n_temp = n_temp/10;

aux1++;

i++;

}

while (n_temp != 0);

aux1 = 0;

while (aux1 != i) {

printf("%i ", num[aux1]);

aux1++; }

Page 36: Tutorial lenguaje c

printf("\n\n");

aux1 = 0;

aux2 = i-1; /*2*/

while ((aux1 != aux2))

{

if (num[aux1] != num[aux2])

{

printf("El numero %i NO ES capicua\n\n", n);

getch();

return 0;

}

else

{

//printf("%i = %i\n", aux1, aux2);

aux1++;

aux2--;

}

}

printf("El numero %i ES capicua\n\n", n);

}

getch();

}

Page 37: Tutorial lenguaje c

VECTORESUn vector, también llamado array(arreglo) unidimensional, es una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno después de otro. A este grupo de elementos se les identifica por un mismo nombre y la posición en la que se encuentran. La primera posición del array es la posición 0.Podríamos agrupar en un array una serie de elementos de tipo enteros, flotantes, caracteres, objetos, etc.

Page 38: Tutorial lenguaje c

Ejemplo de vector

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

int main ()

{

int *pt, x[5]={3,2,9,1,6},i;

for(i=0;i<5;i++)

{

printf("\n Valor de x[%d]=%d",i,x[i]);

getchar(); // PARA PAUSAR EL PROGRAMA CON UN ENTER

}

}

Page 39: Tutorial lenguaje c

MATRICES Una matriz es un vector de vectores o un también llamado array bidimensional. La manera de declarar una matriz es C++ es similar a un vector:

int matrix[rows][cols];

int es el tipo de dato, matrix es el nombre del todo el conjunto de datos y debo de especificar el numero de filas y columnas.

Las matrices también pueden ser de distintos tipos de datos como char, float, double, etc. Las matrices en C++ se almacenan al igual que los vectores en posiciones consecutivas de memoria.

Page 40: Tutorial lenguaje c

EJEMPLO DE MATRIZ://consta en sumar números asignados

#include <stdio.h>

#include <conio.h>

const x=3;

const y=3;

void main()

{

int m[x][y]={{4,9,7},{5,2,1},{7,8,5}};

int n[x][y]={{5,7,3},{2,4,6},{9,1,8}};

int res[x][y];

int i,j;

for (i=0;i<x;i++)

{

for (j=0;j<y;j++)

{

res[i][j]=m[i][j]+n[i][j];

printf ( "%2d ",res[i][j]);

}

printf ("\n");

}

getch();

}

Page 41: Tutorial lenguaje c

PUNTEROSLos punteros permiten simular el paso por referencia, crear y manipular estructuras dinamicas de datos, tales como listas encadenadas, pilas, colas y árboles. Generalmente las variables contienen valores especificos.

Los punteros son variables pero en vez de contener un valor especifico, contienen las direcciones de las variables a las que apuntan. Para obtener o modificar el valor de la variable a la que apuntan se utiliza el operador de indirección. Los punteros, al ser variables deben ser declaradas como punteros antes de ser utilizadas.

Page 42: Tutorial lenguaje c

Sintaxisint *ptrID, ID;

ID = 8;

ptrID = &ID; // puntero a ID

ptrID es un puntero a int, mientras que la variable ID es solo una variable del tipo int. Todo puntero debe ser precedido por un asterisco (*) en la declaración.

Se puede declarar más de un puntero en la misma sentencia. Ejemplo “declaración de dos punteros a int”.

int *ptrY, *ptrX;

Page 43: Tutorial lenguaje c

OperadoresExisten dos operadores a tener en cuenta cuando trabajamos con punteros. El operador de dirección (&) que devuelve la dirección de memoria de su operando y el operador de indirección (*) que devuelve un alias para el objeto al cual apunta el operando del puntero.En el siguiente ejemplo vemos como se inicializa una variable X con el valor 15. Luego se crea un puntero a int y por último el puntero pasa a apuntar a la variable X. Esto es, ptrX es un puntero a X.

int X = 15; int *ptrX; ptrX = &X;

Page 44: Tutorial lenguaje c

Punteros y matricesLas matrices son punteros constantes. Una matriz sin subindice es un puntero al primer elemento de la matriz.

int X[15];

int *ptrX;

ptrX = X; // ptrX recibe la dirección del primer elemento ( 0 ) de X

Se pueden utilizar distintos elementos de la matriz teniendo en cuenta la sintaxis de punteros.

int X[15], Y, *ptrX;

ptrX = X;

Y = *( ptrX + 7 );

En este caso puede verse que Y toma el valor del elemento 7 de la matriz X, siendo 7 el desplazamiento dentro de la matriz. El operador de indirección queda fuera del paréntesis porque tiene una prioridad superior a la del operador +. De no existir los paréntesis, se sumaria 7 al elemento X[0]. Teniendo en cuenta que las matrices son punteros constantes, el nombre de la matriz puede tratarse como un puntero:

Y = *( X + 7 );

Page 45: Tutorial lenguaje c

Ejemplo de puntero// la función de este puntero es imprimir valores de un vector ya asignados asignados

#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<time.h>

int main (){ int *pt, x[5]={3,2,9,1,6},i; for(i=0;i<5;i++) { printf("\n Valor de x[%d]=%d",i,x[i]); getchar(); // pulsa enter para generar la impresion }}

Page 46: Tutorial lenguaje c

GRACIASESPERAMOS QUE NUESTRA

INFORMACION LES SEA UTIL .