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