ANEXOS DEL

 

MANUAL C++:

 

(Shuank)

 

 

EJEMPLOS DE

 

PROGRAMACIÓN  EN C+


3. - Tipos de datos

 

3.3. - Las variables

 

/* Uso de las variables */

#include <stdio.h>

main() /* Suma dos valores */

{

   int num1=4,num2,num3=6;

   printf("El valor de num1 es %d",num1);

   printf("\nEl valor de num3 es %d",num3);

   num2=num1+num3;

   printf("\nnum1 + num3 = %d",num2);

}

 

 

3.4. - ¿Dónde se declaran?

 

/* Declaración de variables */

#include <stdio.h>

int a;

main() /* Muestra dos valores */

{

   int b=4;

   printf("b es local y vale %d",b);

   a=5;

   printf("\na es global y vale %d",a);

}

 

 

3.5. – Constantes

 

/* Uso de las constantes */

#include <stdio.h>

#define pi 3.1416

#define escribe printf

main() /* Calcula el perímetro */

{

   int r;

   escribe("Introduce el radio: ");

   scanf("%d",&r);

   escribe("El perímetro es: %f",2*pi*r);

}

 

 

 

3.6. - Secuencias de escape

 

/* Uso de las secuencias de escape */

#include <stdio.h>

main() /* Escribe diversas sec. de escape */

{

   printf("Me llamo \"Nemo\" el grande");

   printf("\nDirección: C\\ Mayor 25");

   printf("\nHa salido la letra \'L\'");

   printf("\nRetroceso\b");

   printf("\n\tEsto ha sido todo");

}

 

4. - Operadores aritméticos y de asignación

 

4.1. - Operadores aritméticos

 

/* Uso de los operadores aritméticos */

#include <stdio.h>

 

main() /* Realiza varias operaciones */

{

       int a=1,b=2,c=3,r;

       r=a+b;

       printf("%d + %d = %d\n",a,b,r);

       r=c-a;

       printf("%d - %d = %d\n",c,a,r);

       b++;

       printf("b + 1 = %d",b);

}

 

4.2. - Operadores de asignación

 

/* Uso de los operadores de asignación */

 

#include <stdio.h>

 

main() /* Realiza varias operaciones */

{

       int a=1,b=2,c=3,r;

       a+=5;

       printf("a + 5 = %d\n",a);

       c-=1;

       printf("c - 1 = %d\n",c);

       b*=3;

       printf("b * 3 = %d",b);

}

 

4.3. - Jerarquía de los operadores

 

/* Jerarquía de los operadores */

 

#include <stdio.h>

 

main() /* Realiza una operación */

{

       int a=6,b=5,c=4,d=2,e=1,x,y,z,r;

       x=a*b;

       printf("%d * %d = %d\n",a,b,x);

       y=c/d;

       printf("%d / %d = %d\n",c,d,y);

       z=x+y;

       printf("%d + %d = %d\n",x,y,z);

       r=z-e;

       printf("%d = %d",r,a*b+c/d-e);

}

 

 

5. - Salida / Entrada

 

5.1. - Sentencia printf()

 

/* Uso de la sentencia printf() 1. */

#include <stdio.h>

main() /* Saca por pantalla una suma */

{

       int a=20,b=10;

       printf("El valor de a es %d\n",a);

       printf("El valor de b es %d\n",b);

       printf("Por tanto %d+%d=%d",a,b,a+b);

}

 

/* Uso de la sentencia printf() 2. */

#include <stdio.h>

main() /* Modificadores 1 */

{

       char cad[]="El valor de";

       int a=-15;

       unsigned int b=3;

       float c=932.5;

       printf("%s a es %d\n",cad,a);

       printf("%s b es %u\n",cad,b);

       printf("%s c es %e o %f",cad,c,c);

}

/* Uso de la sentencia printf() 3. */

#include <stdio.h>

main() /* Modificadores 2 */

{

       char cad[ ]="El valor de";

       int a=25986;

       long int b=1976524;

       float c=9.57645;

       printf("%s a es %9d\n",cad,a);

       printf("%s b es %ld\n",cad,b);

       printf("%s c es %.3f",cad,c);

}

 

5.2. - Sentencia scanf()

 

/* Uso de la sentencia scanf(). */

#include <stdio.h>

main() /* Solicita dos datos */

{

       char nombre[10];

       int edad;

       printf("Introduce tu nombre: ");

       scanf("%s",nombre);

       printf("Introduce tu edad: ");

       scanf("%d",&edad);

}

 

6. - Operadores relacionales

 

/* Uso de los operadores relacionales.  */

#include <stdio.h>

main() /* Compara dos números entre ellos */

{

   int a,b;

   printf("Introduce el valor de A: ");

   scanf("%d",&a);

   printf("Introduce el valor de B: ");

   scanf("%d",&b);

   if(a>b)

      printf("A es mayor que B");

   else if(a<b)

      printf("B es mayor que A");

   else

      printf("A y B son iguales");

}

7. - Sentencias condicionales

 

7.1. - Estructura IF...ELSE

 

/* Uso de la sentencia condicional IF. */

#include <stdio.h>

main() /* Simula una clave de acceso */

{

   int usuario,clave=18276;

   printf("Introduce tu clave: ");

   scanf("%d",&usuario);

   if(usuario==clave)

      printf("Acceso permitido");

   else

      printf("Acceso denegado");

}

 

/* Uso de la sentencia condicional ELSE...IF. */

#include <stdio.h>

main() /* Escribe bebé, niño o adulto */

{

   int edad;

   printf("Introduce tu edad: ");

   scanf("%d",&edad);

   if (edad<1)

      printf("Lo siento, te has equivocado.");

   else if (edad<3) printf("Eres un bebé");

   else if (edad<13) printf("Eres un niño");

   else printf("Eres adulto");

}

 

7.2. - Estructura SWITCH

 

/* Uso de la sentencia condicional SWITCH. */

#include <stdio.h>

main() /* Escribe el día de la semana */

{

   int dia;

   printf("Introduce el día: ");

   scanf("%d",&dia);

   switch(dia){

      case 1: printf("Lunes"); break;

      case 2: printf("Martes"); break;

      case 3: printf("Miércoles"); break;

      case 4: printf("Jueves"); break;

      case 5: printf("Viernes"); break;

      case 6: printf("Sábado"); break;

      case 7: printf("Domingo"); break;

   }

}

 

 

 

8. - Operadores lógicos

 

 

/* Uso de los op. lógicos AND,OR,NOT. */

#include <stdio.h>

main() /* Compara un número introducido */

{

   int numero;

   printf("Introduce un número: ");

   scanf("%d",&numero);

   if(!(numero>=0))

      printf("El número es negativo");

   else if((numero<=100)&&(numero>=25))

      printf("El número está entre 25 y 100");

   else if((numero<25)||(numero>100))

      printf("El número no está entre 25 y 100");

}

 

 

 

9. – Bucles

 

 

9.1. - Sentencia WHILE

 

/* Uso de la sentencia WHILE. */

#include <stdio.h>

main() /* Escribe los n£meros del 1 al 10 */

{

   int numero=1;

   while(numero<=10)

   {

      printf("%d\n",numero);

      numero++;

   }

}

 

 

 

 

9.2. - Sentencia DO...WHILE

 

 

/* Uso de la sentencia DO...WHILE. */

#include <stdio.h>

main() /* Muestra un menú si no se pulsa 4 */

{

   char seleccion;

   do{

      printf("1.- Comenzar\n");

      printf("2.- Abrir\n");

      printf("3.- Grabar\n");

      printf("4.- Salir\n");

      printf("Escoge una opción: ");

      seleccion=getchar();

      switch(seleccion){

        case '1':printf("Opción 1");

           break;

        case '2':printf("Opción 2");

           break;

        case '3':printf("Opción 3");

        }

 

   }while(seleccion!='4');

}

 

 

 

9.3. - Sentencia FOR          

 

 

/* Uso de la sentencia FOR. */

#include <stdio.h>

main() /* Escribe la tabla de multiplicar */

{

   int num,x,result;

   printf("Introduce un n£mero: ");

   scanf("%d",&num);

   for (x=0;x<=10;x++){

      result=num*x;

      printf("\n%d por %d = %d\n",num,x,result);

   }

}

 

 

 

9.5. - Sentencia CONTINUE

 

/* Uso de la sentencia CONTINUE. */

#include <stdio.h>

main() /* Escribe del 1 al 100 menos el 25 */

{

   int numero=1;

   while(numero<=100)

   {

      if (numero==25)

      {

        numero++;

        continue;

      }

   printf("%d\n",numero);

   numero++;

   }

}

 

 

10. – Funciones

 

10.1. - Tiempo de vida de los datos

 

/* Variables globales y locales. */

#include <stdio.h>

int num1=1;

main() /* Escribe dos cifras */

{

       int num2=10;

       printf("%d\n",num1);

       printf("%d\n",num2);

}

 

 

10.3. - Declaración de las funciones

 

/* Declaración de funciones. */

#include <stdio.h>

void funcion(void); /* prototipo */

int num=5; /* variable global */

main() /* Escribe dos números */

{

       int num=10; /* variable local */

       printf("%d\n",num);

       funcion(); /* llamada */

}

 

void funcion(void)

{

       printf("%d\n",num);

}

 

 

10.4. - Paso de parámetros a una función

 

/* Paso de parámetros. */

 

#include <stdio.h>

 

int suma(int,int); /* prototipo */

main() /* Realiza una suma */

{

       int a=10,b=25,t;

       t=suma(a,b); /* guardamos el valor */

       printf("%d=%d",suma(a,b),t);

       suma(a,b); /* el valor se pierde */

}

 

int suma(int a,int b)

{

       return (a+b);

}

 

 

/* Paso por valor. */

#include <stdio.h>

void intercambio(int,int);

main() /* Intercambio de valores */

{

       int a=1,b=2;

       printf("a=%d y b=%d",a,b);

       intercambio(a,b); /* llamada */

       printf("a=%d y b=%d",a,b);

}

void intercambio (int x,int y)

{

       int aux;

       aux=x;

       x=y;

       y=aux;

       printf("a=%d y b=%d",x,y);

}

 

/* Paso por referencia. */

#include <stdio.h>

void intercambio(int *,int *);

main() /* Intercambio de valores */

{

       int a=1,b=2;

       printf("a=%d y b=%d",a,b);

       intercambio(&a,&b); /* llamada */

       printf("a=%d y b=%d",a,b);

}

 

void intercambio (int *x,int *y)

{

       int aux;

       aux=*x;

       *x=*y;

       *y=aux;

       printf("a=%d y b=%d",*x,*y);

}

 

 

/* Argumentos de la main. */

#include <stdio.h>

main(int argc,char *argv[]) /* argumentos */

{

       printf("\nCurso de Programación en C - Shuank");

       printf("Programa de ejemplo.\n\n");

       if (argc<2)

       {

             printf("Teclee: funcion6 su_nombre");

             exit(1); /* fin */

       }

       printf("Hola %s",argv[1]);

}

 

 

 

11. – Arrays

 

 

11.1. – Vectores

 

 

/* Declaración de un array. */

#include <stdio.h>

main() /* Rellenamos del 0 - 9 */

{

       int vector[10],i;

       for (i=0;i<10;i++) vector[i]=i;

       for (i=0;i<10;i++) printf(" %d",vector[i]);

}

 

 

/* Vector de tipo char. */

#include <stdio.h>

main() /* Rellenamos un vector char */

{

       char cadena[20];

       int i;

       for (i=0;i<19 && cadena[i-1]!=13;i++)

             cadena[i]=getche( );

       if (i==19) cadena[i]='\0';

       else cadena[i-1]='\0';

       printf("\n%s",cadena);

}

 

 

/* Envío de un array a una función. */

#include <stdio.h>

void visualizar(int []); /* prototipo */

main() /* rellenamos y visualizamos */

{

       int array[25],i;

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

       {

             printf("Elemento n§ %d",i+1);

             scanf("%d",&array[i]);

       }

       visualizar(&array[0]);

}

 

void visualizar(int array[]) /* desarrollo */

{

       int i;

       for (i=0;i<25;i++) printf("%d",array[i]);

}

 

 

 

 

 

11.2. – Matrices

 

 

/* Matriz bidimensional. */

#include <stdio.h>

main() /* Rellenamos una matriz */

{

       int x,i,numeros[3][4];

       /* rellenamos la matriz */

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

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

                    scanf("%d",&numeros[x][i]);

       /* visualizamos la matriz */

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

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

                    printf("%d",numeros[x][i]);

}

 

 

 

12. – Punteros

 

 

12.2. – Operadores

 

 

/* Asignaciones de punteros. */

#include <stdio.h>

main() /* Asignamos direcciones */

{

       int a;

       int *p1,*p2;

       p1=&a;

       p2=p1;

       printf("%p %p",p1,p2);

}

 

 

 

13. – Estructuras

 

 

13.2. - Estructuras y funciones

 

 

/* Paso de una estructura por valor. */

 

#include <stdio.h>

 

struct trabajador

{

       char nombre[20];

       char apellidos[40];

       int edad;

       char puesto[10];

};

 

void visualizar(struct trabajador);

main() /* Rellenar y visualizar */

{

       struct trabajador fijo;

       printf("Nombre: ");

       scanf("%s",fijo.nombre);

       printf("\nApellidos: ");

       scanf("%s",fijo.apellidos);

       printf("\nEdad: ");

       scanf("%d",&fijo.edad);

       printf("\nPuesto: ");

       scanf("%s",fijo.puesto);

       visualizar(fijo);

}

 

void visualizar(struct trabajador datos)

{

       printf("Nombre: %s",datos.nombre);

       printf("\nApellidos: %s",datos.apellidos);

       printf("\nEdad: %d",datos.edad);

       printf("\nPuesto: %s",datos.puesto);

}

 

 

/* Paso de una estructura por referencia. */

 

#include <stdio.h>

 

struct trabajador

{

       char nombre[20];

       char apellidos[40];

       int edad;

       char puesto[10];

};

 

void visualizar(struct trabajador *);

main() /* Rellenar y visualizar */

{

       struct trabajador fijo;

       printf("Nombre: ");

       scanf("%s",fijo.nombre);

       printf("\nApellidos: ");

       scanf("%s",fijo.apellidos);

       printf("\nEdad: ");

       scanf("%d",&fijo.edad);

       printf("\nPuesto: ");

       scanf("%s",fijo.puesto);

       visualizar(&fijo);

}

 

void visualizar(struct trabajador *datos)

{

       printf("Nombre: %s",datos->nombre);

       printf("\nApellidos: %s",datos->apellidos);

       printf("\nEdad: %d",datos->edad);

       printf("\nPuesto: %s",datos->puesto);

}

 

 

 

15. - Gestión dinámica de memoria

 

15.2. - Estructuras dinámicas de datos

 

/* Ejemplo de una pila. */

 

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <alloc.h>

 

void insertar(void);

void extraer(void);

void visualizar(void);

 

struct pila

{

       char nombre[20];

       struct pila *ant;

}*CAB=NULL,*AUX=NULL;

 

main() /* Rellenar, extraer y visualizar */

{

       char opc;

       do

       {

             clrscr(); /* borramos la pantalla */

             gotoxy(30,8); /* columna 30, fila 8 */

             printf("1.- Insertar");

             gotoxy(30,10);

             printf("2.- Extraer");

             gotoxy(30,12);

             printf("3.- Visualizar la pila");

             gotoxy(30,14);

             printf("4.- Salir");

             opc=getch( );

             switch(opc)

             {

                    case '1':

                           insertar( );

                           break;

                    case '2':

                           extraer( );

                           break;

                    case '3':

                           visualizar( );

             }

       }while (opc!='4');

}

 

void insertar(void)

{

       AUX=(struct pila *)malloc(sizeof(struct pila));

       clrscr();

       printf("Nombre: ");

       gets(AUX->nombre);

       if (CAB==NULL)

       {

             CAB=AUX;

             AUX->ant=NULL;

       }

       else

       {

             AUX->ant=CAB;

             CAB=AUX;

       }

}

 

void extraer(void)

{

       if (CAB==NULL) return;

       AUX=CAB;

       CAB=CAB->ant;

       free(AUX);

}

 

void visualizar(void)

{

       if (CAB==NULL) return;

       clrscr();

       AUX=CAB;

       while (AUX!=NULL)

       {

             printf("Nombre: %s\n",AUX->nombre);

             AUX=AUX->ant;

       }

       getch( );

}

 

 

/* Ejemplo de una cola. */

 

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <alloc.h>

 

void insertar(void);

void extraer(void);

void visualizar(void);

 

struct cola

{

       char nombre[20];

       struct cola *sig;

}*CAB=NULL,*AUX=NULL,*FIN=NULL;

 

main() /* Rellenar, extraer y visualizar */

{

       char opc;

       do

       {

             clrscr();

              gotoxy(30,8);

             printf("1.- Insertar");

             gotoxy(30,10);

             printf("2.- Extraer");

             gotoxy(30,12);

             printf("3.- Visualizar la cola");

             gotoxy(30,14);

             printf("4.- Salir");

             opc=getch( );

             switch(opc)

             {

                    case '1':

                           insertar( );

                           break;

                    case '2':

                           extraer( );

                           break;

                    case '3':

                           visualizar( );

             }

       }while (opc!='4');

}

 

void insertar(void)

{

       AUX=(struct cola *)malloc(sizeof(struct cola));

       clrscr();

       printf("Nombre: ");

       gets(AUX->nombre);

       AUX->sig=NULL;

       if (FIN==NULL)

             FIN=CAB=AUX;

       else

       {

             FIN->sig=AUX;

             FIN=AUX;

       }

}

 

void extraer(void)

{

       if (CAB==NULL) return;

       AUX=CAB;

       CAB=CAB->sig;

       free(AUX);

}

 

void visualizar(void)

{

       if (CAB==NULL) return;

       clrscr();

       AUX=CAB;

       while (AUX!=NULL)

       {

             printf("Nombre: %s\n",AUX->nombre);

             AUX=AUX->sig;

       }

       getch();

}

 

 

/* Ejemplo de una lista. */

 

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <alloc.h>

 

void insertar(void);

void extraer(void);

void visualizar(void);

 

struct lista

{

       int num;

       struct lista *sig;

}*CAB=NULL,*AUX=NULL,*F=NULL,*P=NULL;

 

main() /* Rellenar, extraer y visualizar */

{

       char opc;

       do

       {

             clrscr( );

             gotoxy(30,8);

             printf("1.- Insertar");

             gotoxy(30,10);

             printf("2.- Extraer");

             gotoxy(30,12);

             printf("3.- Visualizar la lista");

             gotoxy(30,14);

             printf("4.- Salir");

             opc=getch( );

             switch(opc)

             {

                    case '1':

                           insertar( );

                           break;

                    case '2':

                           extraer( );

                           break;

                    case '3':

                           visualizar( );

             }

       }while (opc!='4');

}

 

 

/* A continuación insertaremos el elemento que vamos a crear en la posición que le corresponda, teniendo en cuenta que la lista deber  quedar ordenada de menor a mayor. El puntero P comprueba si el campo num de un elemento es menor que el campo num del elemento introducido. El puntero F se quedar  apuntando al elemento de la posición anterior al elemento que hemos insertado */

 

void insertar(void)

{

       AUX=(struct lista *)malloc(sizeof(struct lista));

       clrscr( );

       printf("Introduce un número: ");

       scanf("%d",&AUX->num);

       AUX->sig=NULL;

       if (CAB==NULL)

             CAB=AUX;

       else if (CAB->num > AUX->num)

       {

             AUX->sig=CAB;

             CAB=AUX;

       }

       else

       {

             P=F=CAB;

             while (P->num < AUX->num && P!=NULL)

             {

                    if (P==CAB) P=P->sig;

                    else

                    {

                           P=P->sig;

                           F=F->sig;

                    }

             }

             AUX->sig=F->sig;

             F->sig=AUX;

       }

}

 

void extraer(void)

{

       int var;

       if (CAB==NULL) return;

       clrscr( );

       printf("Introduce el número a extraer: ");

       scanf("%d",&var);

       if (CAB->num==var)

       {

             P=CAB;

             CAB=CAB->sig;

             free(P);

       }

       else

       {

             P=F=CAB;

             while (P->num != var && P!=NULL)

             {

                    if (P==CAB) P=P->sig;

                    else

                    {

                           P=P->sig;

                           F=F->sig;

                    }

             }

             if (P==NULL) return;

             F->sig=P->sig;

             free(P);

       }

}

 

void visualizar(void)

{

       if (CAB==NULL) return;

       clrscr( );

       AUX=CAB;

       while (AUX!=NULL)

       {

             printf("N£mero: %d\n",AUX->num);

             AUX=AUX->sig;

       }

       getch( );

}

 

16. - Programación gráfica

 

16.1. - Conceptos básicos

 

/* Inicialización del modo gráfico. */

 

#include <graphics.h>

 

main() /* Inicializa y finaliza el modo gráfico. */

{

       int tarjeta, modo, error;

       detectgraph(&tarjeta,&modo);

       initgraph(&tarjeta,&modo,"C:\\TC\\BGI");

       error=graphresult( );

       if (error)

       {

             printf("%s",grapherrormsg(error));

       }

       else

       {

             getch( );

             closegraph( );

       }

}

 

1