Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso C
Curso C
Curso C
INTRODUCCION
INTROD......
Permite el manejo de datos: bits, bytes y de
direcciones
Es de fcil transportabilidad
Ofrece una enorme librera en ejecucin
Se emplea para escribir sistemas operativos,
compiladores, manejadores de bases de datos,
procesadores de textos, juegos, etc...
3
OBJETOS DE UN PROGRAMA
Forman un programa: objetos y separadores
Objetos:Smbolos especiales,identificadores
etiquetas, nmeros, constantes, variables,etc....
Identificadores.- Representan a constantes,
variables, tipos de datos, funciones, etc......
Secuencia de caracteres de cualquier tamao
comenzando con letra, sin blancos.
Diferencia las letras maysculas de las letras
minscula
Limite
Valor1
MENSAJE
N3
Numero-blanco
SUMA-total
suma-TOTAL
A
123-var
index $
Float
$total
OBJETOS .......
Constantes.- Mantienen su valor, pueden ser de
diferentes tipos
Variables.- Cambian de valor mediante sentencias
ejecutables
Sentencias.- Conforman las instrucciones,
funciones o definiciones.
Son simples o compuestas
Cada sentencias simple termina en ;
6
OBJETOS.....
Directiva..- Acta como una orden especial al
computador.
Va precedida por un # e indica una accin especifica a
ejecutar.
En cualquier parte y a plica partir de all.
7
TIPOS DE DATOS
OPERADORES ARITMETICOS
+ Suma
- Resta
* Multiplicacin
/ Divisin
++ Incremento en una unidad
-- Decremento en una unidad
= Asigna el valor de la expresin
9
OPERADORES LOGICOS
! Niega el valor de la expresin derecha.
= = Da verdad si las expresiones derecha e
izquierda son iguales.
! = Contrario al anterior.
< Verdad si izquierda menor que derecha.
> Contrario al anterior.
< = Verdad si izquierda es menor o igual
11
Y= (x=10,x*2,x+9)
Y = 29
12
OPERADORES DE BITS
&
>>
<<
Operador and.
Operador or
Operador or exclusivo
Operador complemento
Desplazar un lugar a la derecha
Desplazar un lugar a la izquierda.
13
ESTRUCTURA DE UN
PROGRAMA
Un programa se compone de uno o ms bloques de
sentencias llamados funciones.
Cada funcin tiene un nombre seguido por
parntesis entre los que hay o no, otros datos.
FUNCION MAIN( ).- Todo programa debe
contener al menos esta funcin.
Gobierna la ejecucin del programa.
14
ESTRUCTURA
DIRECTIVAS
main ( )
{ Declaracin de variables:
Cuerpo de la funcin principal
}
main es el nombre de la funcin principal
{ } Indica el comienzo y final del cuerpo de la
funcin.
15
EJEMPLO DE PROGRAMA
/*Programa de saludo*/
# define M1 Bienvenidos al C
# define M2 Estas alegre
main( )
{
char nombre[30];
printf(Cul es tu nombre?:);
gets(nombre);
printf (\a\z %s\n,nombre,M1,M2);
printf(OK?\n); getch( );
}
17
INDICACIONES GENERALES
18
CONSTANTES
Se declaran de dos formas:
- # define identificador valor ( antes del main)
- Con la palabra const
Ejemplos:
- # define MAX 200
- # define car *
- # define SUELDO 4578.6
- # define lnea \n
- const int max=200
- const char x=a
19
CONST........
El identificador puede ser con maysculas o
minsculas.
El dato puede ser de cualquier tipo ya definido.
Una const string debe estar entre comillas:
ESTO ES UN EJEMPLO DE CADENA
Una constante de tipo char debe estar entre
apstrofes. a, 9, \n.
20
VARIABLES
Es un identificador que sirve para guardar valores
de un tipo de datos en memoria.
Se puede declarar e inicializar su valor en la
declaracin, en forma opcional.
Una variable se declara antes de ser usada.
Puede ser local o global, si se declara dentro o
fuera de una funsion.
21
EJEMPLO DE VARIABLES
int a,b,c
float altura,base,area
char car
long numero,maximo
char texto[80]
22
ENTRADA DE DATOS
Scanf: Lee datos desde el teclado:
scanf(cadena de formato,lista de
direcciones de variables)
Cadena de formato :Lista de letras precedidas por %
que indica el tipo de dato.
d, D
entero decimal
o, O
entero octagonal
i
entero
l
entero largo
u, U
entero sin signo 23
X, x entero hexadecimal
e, E punto flotante
f, F reales
S
cadena de caracteres
C
carcter
% % carcter (no hay conversin)
n
ninguna
p
nmero hexadecimal (punteros)
Ejemplos:
scanf(%d %f,&ca,&b)
scanf(%c %s,car,nom)
24
ENTRADA.....
GETS Lee una cadena de caracteres desde el
teclado.
gets(cadena)
char nombre[15]
gets(nombre)
Existe el GETCHAR y GETCH: Lee un carcter
con o sin eco respectivamente .
char car
char car
car=getchar
car=getch
25
SALIDA (pantalla)
PRINTF Escribe con formato una lista de datos
printf(cadena de formato, datos)
La cadena de formato puede ser:
d
entero decimal
i
entero
u
entero sin signo
o
entero octal
26
X,x
F
e, E
g, G
c
s
n
p
entero hexadecimal.
float
float (notacin cientfica)
float
carcter simple
cadena
puntero en un entero
puntero (direccin de puntero)
27
Ejemplo:
# define suel 450.87569
main( )
{ char nom[15];
clrscr( );
printf(ingrese nombre:);
scanf(%s,nom);
printf(\n);
printf(Seor,%s su sueldo es =
%10.2f\n,nom,suel;
getch( ); }
30
31
SENTENCIA DE ASIGNACION
Es la que permite cargar un valor a una variable
que ha sido definida anteriormente.
identificador = valor
int total;
int j,precio = 15;
total = 125;
j = precio * 5;
float r,s,m;
m = r +s;
32
LIBRERIAS DE INPUT/OUTPUT
Para las operaciones de entrada y salida de datos
se tienen que utilizar libreras para dichos
procesos, las cuales deben incluirse al inicio del
programa.
#include <stdio.h>
para el C
#include <fstream.h>
para el C++
#include <iostream.h>
33
EJEMPLOS
Programa que lee un nombre y lo imprime:
# include <fstream.h>
#include <conio.h>
void main( )
{
char nombre[15];
clrscr( );
cout<< digite su nombre;
cin>>nombre;
cout<< su nombre es<<nombre;
36
SENTENCIAS DE CONTROL
En un programa siempre es necesario alterar el
orden de ejecucin de las instrucciones, ya sea en
funcin de una condicin o por que se desea repetir
un nmero de veces la ejecucin de un grupo de
instrucciones. Para atender estros requerimientos
se tiene:
SENTENCIAS SELECTIVAS
Sentencia IF.- Toma una decisin referente a la
accin a efectuar en un programa, basandose en el
resultado de la evaluacin ( V, F ) de una condicin
if (expresin)
sentencias;
else
sentencias;
40
IF ANIDADOS
Las sentencias IF y ELSE pueden estar anidadas,
quiere decir que una sentencia IF puede contener
otro u otros IF dentro de su dominio.
If (expresin)
...........
If(expresin)
sentencias;
else
sentencias;
42
43
EJEMPLOS
44
else
menor = c;
else
{ if (b<c)
menor = b;
else
menor = c;
}
cout<< el nmero menor es<<menor;
getch ( );
}
46
SENTENCIA SWITCH
Esta sentencia permite ejecutar una de varias
acciones en funcin del valor de una expresin.
switch (expresin)
{
case constante1:
sentencia1;
case constante2:
sentencia2;
........
default
sentencia por defecto;}
47
incorrecto;
}
cout<<esto es todo;
50
#include <fstream.h>
#include <float.h>
#include <conio.h>
void main ( )
{ int
sexo,edad,nh=0,nm=0,seh=0,sem=0,nr=1,na=1;
float peh,pem;
if (na<20)
{
cout<<Digite sexo (0=H,1=M) y edad;51
cin>>sexo>>edad;
switch (sexo)
{
case 0:
case 1:
nh = nh + 1;
seh = seh + edad; break;
nm = nm +1;
sem = sem + edad;
break;
} na=na+1;}
if (nh>0)
{
peh = seh / nh;
52
cout<<edades de hombres:
<<peh;
}
if (nm>0)
{
pem = sem / nm;
cout<<El promedio de \n;
cout<<edades mujeres: <<pem;
}
}
53
SENTENCIA REPETITIVA:
WHILE
Permite ejecutar una sentencia simple o compuesta,
cero o ms veces, dependiendo del valor de una
expresin, numrica, relacional o lgica.
El funcionamiento es el siguiente:
Se evala la condicin
Si el resultado es cero, la sentencia no se ejecuta,
y pasa a ejecutar la siguiente sentencia del
programa.
55
cout<<=====================\n;
i = 1;
while (i<=50)
{
cout<<i<< ;
i = i +2;
}
getch ( );
}
57
:<<total;
59
SENTENCIA DO-WHILE
Ejecuta una sentencia una o ms veces,
dependiendo del valor de una expresin. Su formato
es:
do
sentencia;
while (expresin)
Donde sentencia puede ser simple o compuesta.
60
62
cin>>num;
fact=1;
x=1;
do
{
fact *= x;
x++;
}
while(x<=num; cout<<\n<<fact; }
64
SENTENCIA FOR
Este comando generalmente se utiliza para ejecutar
sentencias simples o compuestas, repetidamente un
nmero de veces conocido
for ([exp1];[exp2];[exp3]) sentencia;
- exp1 Se utiliza para inicializar el ndice.
- exp2 El valor determina si el lazo se ejecuta o no.
- exp3 Incrementa el ndice.
67
{ cout<<con<<
++con;
<<var<<\n;
}
getch ( );
}
Ejemplo de un programa que imprime valores de los
enteros del 1 al 20 y sus respectivos cuadrados.
#include <fstream.h>
void main( )
{
69
int k;
clrscr;
cout<<cuadrado de nmeros \n;
for (k=1;K<=20;k++)
cout<<k<<
;<<k*k);
getch( );
}
Ejemplo de un programa de men
70
#include <fstream.h>
#include <float.h>
void main ( )
{
float x,y,z;
int select=0;
while (select!=5)
{
clrscr( );
cout<<1......Sumar \n;
cout<<2.......Restar \n;
cout<<3.......Multiplicar \n;
71
cout<<4.........Dividir \n;
cout<<5.........Salir \n;
cin>>select;
if (select !=5)
{ if (select>0 && select<=4)
{ switch(select)
{ case 1:clrscr( );
cout<<digite 1er sumando\n;
cin>>x;
cout<<digite 2do sumando\n
72
cin>>y;
z=x+y;
cout<<total:<<
<<z;
getch( ); break;
case 2:clrscr( );
cout<<digite minuendo \n;
cin>>x;
cout<<digite sustraendo \n;
cin>>y;
z=x-y;
73
cout<<total:<<
<<z;
getch( ); break;
case 3:clrscr( );
cout<<digite multiplicando \n;
cin>>x;
cout<<digite multiplicador \n
cin>>y;
z=x*y;
cout<<total:<< <<z;
getch( ); break;
74
case 4:clrscr( );
}
else
else
break;
}
}
Ejemplo de programa de conversin de segundos.
#include <fstream.h>
#include <string.h>
void main ( )
76
int nmin,nhor,nseg,min,seg;
char ope;
do
{
clrscr ( );
cout<<digite un nmero de segundos\n;
cin>>seg;
nhor=seg/3600;
min=seg % 3600;
nmin=min/60;
nseg=min % 60;
77
cout<<Horas
Minutos
Segundos \n;
cout<<nhor<<nmin<<nseg;
cout<<Desea continuar S o N;
ope=getch( );
}
while(ope!=N);
clrscr( );
}
NOTA:Es posible codificar un for de la siguiente
forma:
for (x=0,y=0;x+y<10;++x)
78
SENTENCIAS DE
TRANSFERENCIA
Existen dos sentencias de transferencia BREAK y
CONTINUE.
La sentencia BREAK finaliza la ejecucin del
while, do, for o switch ms interno que la contenga
y se prosigue con el resto del programa.
El CONTINUE transfiere la ejecucin a la parte
final de la preposicin afectada por el ciclo while,
do, for ms interno que la contenga.
79
Ejemplos:
#include <fstream.h>
void main ( )
{
int i;
clrscr( );
for (i=1;i<10;i++)
{
cout<<i;
if(i= =5) break;
cout<<la variable es distinta de 5 \n;
80
81
for (; ;)
{ cin>>c;
if (c = = a) break;
}
printf(digit la letra a);
82
FUNCIONES
Todo programa en C, por definicin, consta de una
ms funciones. Todos los subprogramas en C son
funciones.
Todos los programas en C deben llevar una y solo
una funcin main, que es la primera funcin que se
ejecuta (pero no necesariamente es la primera que
aparece en la lista) y que llama a todas las otras
funciones directa o indirectamente.
83
La definicin actual:
}
Tipo: Declara el tipo de dato o valor que devuelve
la funcin (es opcional), por defecto en int.
Nom_f : Es el nombre de la funcin (obligatorio).
Lista de parmetros puede ser vaca ( ), contiene
una lista de nombre de variables, a travs de las
cuales se espera pasar valores a la funcin.
85
DECLARACION DEL
PROTOTIPO DE LA FUNCION
Es necesario indicarle al compilador la existencia
de una funcin que lleva o no parmetros y cual es
el tipo de ellos. Tambien es necesario indicarle que
tipo de dato regresa al programa principal.
Todo esto se especifica en un prototipo
int ejem( int, int);
88
#include <fstream.h>
//PROTOTIPOS
int addt( int, int);
void main( )
{ int inu1=2, inum2=3, iresult;
iresult = addt( inum1, inum2);
cout<<El resultado es:;
cout<<iresult<<\n;
}
89
int resultado;
resultado = inumero1 + inumero2);
return resultado;
}
Llamada de funciones.- Una llamada a una funcin
consiste en la escritura del nombre de la funcin
seguido de parmetros . Los parmetros pueden
contener argumentos. Por ejemplo:
clrscr( ) ..... Llama a una funcin sin
argumentos
goto(10,5) .Llama a una funcin con
90
int escribir(int y)
{
return(y*3);
}
Ejemplo de un programa que utiliza la funcin rea
#include <fstream.h>
#include <float.h>
float rea(x,y)
float(x,y)
{
93
float res;
res= (x * y)/2;
return(res);
}
void main( )
{ float base,altura,r,area(float,float);
clrscr( );
cout<<ingrese la base y la altura;
cin>>base>>altura;
r=area(base,altura);
cout<<\n el rea es:<< <<r;
}
94
}
void main( )
{ int n, fact(int);
clrscr( );
cout<<ingrese entero positivo;
95
cin>>n;
}
Ejemplo de un programa que calcula la suma y la
imprime:
#include <fstream.h>
#include <conio.h>
void imprime (int s)
{ cout<< la suma es :;
96
cout<<
<<s;
}
int suma(int x, int y)
{ int s;
s= x + y;
return s;
}
void main( )
{ int (r, p);
cout<<digite dos nmeros enteros;
cin>>r>>p;
97
clrscr( );
sum= suma(r,p);
imprime(sum);
cout<<termin;
getch( );
98
{ int resultm;
101
void func1 ( )
{ int temp;
temp = cuenta;
func2 ( );
printf(cuenta es %d, cuenta); /* imprime 100*/
}
void func2 ( )
{ int cuenta;
for(cuenta=1;cuenta<10;cuenta++)
putchar(.); }
103
}
f1 (int n)
{ printf(%d, n);
return 0; }
f2 ( )
{ printf (es lo digitado);
return 0;
}
105
106
misma.
fact (int n)
{ int resp;
if (n<= 1) return (1);
resp = fact (n-1) * n;
return (resp);
}
107
CADENAS
Se usan para guardar textos.
El C++ no tiene un tipo de dato string.
Se construyen las cadenas carcter por carcter.
#include <string.h>
void main ( )
{ char ejem[100];
strcpy(ejem, ABC);
cout<<ejem<<\n; }
108
109
110
void contenido( )
{ char cad[30];
int x;
for(x=0;x<3 && strcmp(cad,clave);++x)
cin >>cad;
if(x= = 3) cerrar( );
}
Nota: strcmp devuelve 0 si son iguales.
El siguiente for elimina los espacios en blanco de
una cadena apuntada por cad.
for(; *cad= = ;cad++)
111
112
ARREGLOS
Un arreglo es una estructura homognea de datos
almacenados en forma consecutiva en la memoria.
Para definir un arreglo se debe especificar el tipo
de datos que contiene.
Se debe especificar un nombre que identificara al
arreglo.
Se deber especificar el nmero de elementos que
tendr el arreglo.
113
Ejemplo de arreglo:
int total[8]
int j[25]
Para hacer referencia a uno de los elementos del
arreglo, bastar con poner el nombre, y colocar
entre corchetes el nmero del elemento al que se
Inicializacin de Arreglos.-
cin>>num[i];
clrscr( );
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if (num[i]>num[j])
{
117
int aux=num[i];
num[i]=num[j];
num[j]=aux;
}
cout<<\n el arreglo ordenado es: ;
for(i=0;i<n;i++)
cout<<num[i]<< ;
getch( );
}
118
#include <fstream.h>
#include <ctype.h>
#include <stdlib.h>
void leer( );
void leer2( );
119
void ver( );
void ordenar ( );
void buscar ( );
int p[20][20];
int i,j,m,n;
void main( )
{int p;
char resp;
cout<<Este programa una vez digitado los
datos;
cout<<muestra los datos en intervalos de 5
120
sleep(2);
do
{ cout<<\nDigite el numero de columnas;
cin>>n;
cout<<\nDigite el numero de filas:
cin>>m;
cout<<\nDesea digitar los datos o que se
creen aleatoriamente;
cout <<\nSi es aleatoriamente digite: a;
cout<<\nSi es manual digite: m;
121
cin>>resp;
if(resp==m)
{ leer( );
if(resp==a)
{ leer2( ); }
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
{cout<<Digite los elementos de A<<
i+1<<,<<j+1<<
cin>>p[i][j];
}
}
}
void leer2 ( )
{ int r,a, x,s;
124
cout<<\n\n\n;
}
125
void ver( )
{ for(i=0;i<n;i++)
{ for(j=0;j<m;j++)
{ cout<<p[i][j];\\
}
}
}
void ordenar( )
{ int aux, k;
for( i=0;i<n;i++)
126
}
}
}
}
}
127
void buscar ( )
128
{ int t [10], i;
}
void mostrar (int *num)
{ int i;
for(i=0; i<10;i++)
printf(%d, num[i]);
}
131
{ int i;
for (i=0; i<=2; i++)
cin>>x [i];
}
void imp ( int x [ ])
{ int i;
for (i=0; i<=2; i++)
cout << x[i];
}
133
);
printf(%d, iarray[i]);
ipeq=iminimo(iarray, imax);
printf(\nEl valor mas pequeo es: %d , ipeq);
}
int iminimo (int iarray [ ], int imax)
{ int i, iminimo-actual;
iminimo-actual=ilimite-sup;
for(i=0; i<imax; i++)
if(iarray[i]<iminimo-actual)
iminimo-actual=iarray[i];
return (iminimo-actual);
}
135
{ printf (%d,t)
cin>>texto[t];
if(! *texto[t]) break; /*termina si lnea en blc
}
/*muestra el texto carcter por carcter */
for (i=0; i<t; i++)
{ for (j=0; texto[i][j]; j++)
printf(%c, texto[i][j]);
printf(%c, \n);
}}
138
PUNTEROS
Un puntero es una variable que contiene una
direccin de memoria. Normalmente esa direccin
es la posicin de otra variable de memoria.
Por ejemplo, si una variable en la posicin 1004
est apuntada por otra variable situada en la
posicin 1000, esa posicin 1000 contendr el valor
1004.
VARIABLE PUNTERO.- Si una variable va a
contener un puntero, entonces tiene que declararse
139
140
OPERADORES DE PUNTEROS
Existen dos operadores especiales de punteros & y
*. El & es un operador que devuelve la direccin de
memoria de su operando. Por ejemplo:
m = &cuenta
pone en m la direccin de memoria de la variable
cuenta. La direccin no tiene nada que ver con el
valor de la variable cuenta.
Suponga que la variable cuenta utiliza la posicin
141
#include <fstream.h>
void main( )
{
int cuenta, q;
int *m;
cuenta = 100;
m = &cuenta /*recibe la direccin*/
q = *m /*se asigna a q el valor de
cuenta*/
cout<<q;
getch ( );
}
143
ARITMETICA DE PUNTEROS
Existen slo dos operaciones aritmticas que se
pueden usar, la suma y la resta.
Sea p1 un puntero a un entero con valor actual de
2000 y asumamos que los enteros son de 2 bytes de
longitud. Despus de la expresin p1++, p1
contiene 2002 y no 2001. Cada vez que se
incremente p1, apunta al siguiente entero. Lo
mismo ocurre en el decremento.
144
void main ( )
if (p)
/* se ha encontrado*/
149
top = p1;
do
cout<<un numero (-1 ->terminar, 0 ->sacar;
cin >>valor;
if(valor !=0) guardar(valor);
else cout <<este es el << saca( );
}
while (valor != -1);
}
151
{ p1 ++;
if (p1 = = (top+tamano_pila))
{ cout<<pila desbordada;
exit;
}
*p1= i;
}
void saca ( )
{ if (p1 = = top)
152
exit;
}
pi --;
return *(p1 + 1);
}
NOTA.- Las funciones guardar y saca realizan una
prueba para determinar si p1 apunta al final de la
pila, o si p1 apunta a una pila que est vaca.
153
Punteros y arrays.
Char cad [80] , *p1;
p1 = cad;
p1 a sido asignado a la direccin del primer
elemento del arreglo cad. Para acceder al quinto
elemento se puede codificar:
cad[4]
o
*(p1+4)
Punteros y arrays de caracteres.int strcmp (char *s1, char *s2)
{ while (*s1)
154
if (*s1 - *s2)
return (*s1 - *s2);
else
{
s1++;
s2++;
}
return 0;
Recuerde que en C todas las cadenas terminan en
cero, que es un valor falso, por lo que el while (*s1)
es cierto mientras que no se llegue al final de la
cadena
155
ESTRUCTURAS
El C/C++ permiten declarar sus propias tipos de
datos.
//Declaracin de la estructura.
#include <iostream.h>
#include <fstream.h>
#include<string.h>
struct mi-estructura
{
156
char snom[100];
int edad;
};
void name( )
{
mi-estructura m-estruc;
strcpy(m-struc.snom, David);
m-struc.edad = 12;
cout<<Mi nombre es;
cout<<m-struc.snom;
157
float costo;
int saldo;
} info_inv[max];
void inicializa_lista(void), listar( ), borrar( );
void introduce(void);
int menu(void), busca_libre(void);
void main( )
{ char opcion;
inicializa_lista( );
for(; ;)
{ opcion = menu ( )
switch (opcion)
{ case 1: introduce ( ); break;
159
}
void inicializa_lista ( )
{ int t;
sitio = busca_libre ( );
160
int c;
cout<<\n;
cout<<1.- Introducir un articulo \n;
cout<<2.- Borrar un articulo \n;
cout<<3.- Listar el inventario \n;
cout<<4.- Salir \n;
do
{cout<<\n Digite su opcion:
;
cin>>s;
c=atoi (s) /*convierte la cadena a la que se
apunta en un valor int. La cadena debe contener un
valor entero */
162
sitio = busca_libre( );
163
if(sitio = = -1)
{ cout << lista llena;
return; }
cout <<digite articulo\n;
cin>>info_inv[sitio].nombre;
cout<<digite costo\n;
cin>>info_inv[sitio].costo;
cout<<digite cantidad disponible\n;
cin>>info_inv[sitio].saldo;
}
164
char s[80];
{ if (info_inv[t].nombre[0]
{cout <<articulo
<<info_inv[t].nombre<<\n;
cout<<costo <<info_inv[t].costo<<\n;
cout<<saldo <<info_inv[t].saldo<<\n;
}
}
}
167
ARCHIVOS
Es un concepto lgico que puede ser aplicado desde
un archivo hasta un terminal.
Se asocia un flujo con un archivo, realizando la
apertura del archivo, De esta forma puede fluir la
informacin entre ste y el programa.
fopen ( ).- Permite abrir un flujo y asociarlo a un
archivo. Por ejm si se desea abrir un archivo
llamado totales de modo escritura:
168
fp = fopen(totales, w)
donde fp es una variable de tipo FILE y w es el modo.
Para poder detectar un error al abrir un archivo se
debe codificar de la siguiente manera:
if ((fp=fopen(totales,w))= = NULL)
{ cout<<no se puede abrir el archivo\n;
exit(1); }
NULL es una macro definida en stdio.h
Si se utiliza fopen para un archivo para escritura,
cualquier archivo que ya exista con ese nombre se
borra y se abre; si no existe se crea.
169
Modo
Significado
a
rb
wb
ab
r+
w+
a+
#include <stdio.h>
do
{ car = getchar ( );
putc (car, fp); }
while (car != $);
fclose (fp);
return 0;
}
175
PROGRAMACION ORIENTADA A
OBJETOS
void setra(void);
~rectangulo( )
(destructor)
180
EJEMPLO S DE PROGRAMAS
CON CLASES
#include <iostream.h>
class circulo
{ public:
circulo (int r);
//CONSTRUCTOR
void setradio(int r);
void disparea(void);
~circulo( );
//DESTRUCTOR
182
private:
float calcularea(void);
int radio;
};
// FUNCION CONSTRUCTOR
circulo: : circulo( int r )
{ radio = r;
}
// FUNCION DESTRUCTOR
circulo: : ~circulo( )
{
}
183
//FUNCION DISPAREA
void circulo: :disparea( void )
{ float farea;
farea = calcularea ( );
cout<<El rea del circulo
es<<farea<<\n;
}
//FUNCION CALCULAREA
float circulo: : calcularea (void)
{
float f;
f = (float) (3.14 * radio * radio);
184
return f;
void main ( )
{
circulo micirculo( 10 );
//DISPLAYA EL AREA DEL CIRCULO
micirculo.disparea( );
}
185
fin=ppio=0;
if(ppio= =100) {
ppio++:
c[ppio]= i;
if (fin= =ppio)
189
return 0;
fin++;
return c[fin];
}
main(void)
{
cola a, b;
// crea dos objetos cola
a.ini ( );
b.ini ( );
a.meter(10);
b.meter(10);
190
191
193
en el men File.
2.- Seleccione C/C++ Header File en la lista de
tipos de proyectos.
3.- Digite un nombre en el cuadro File Name
con extensin h.
//circulo.h
class circulo
{
public:
circulo(int r);
void setradio(int r);
void disparea(void);
~circulo( );
private:
float calarea(void);
int radio;
};
195
circulo::circulo(int r)
radio=r;
circulo::~circulo ( )
{
}
void circulo::disparea(void)
{
float area;
area=calarea( );
cout<<esta es el rea<<area; }
float circulo::calarea(void)
{
float f; f=(float) (3.14*radio*radio);
return f;
}
196
micirculo.disparea ( );
cout<<\n;
tucirculo.disparea ( );
cout<<\n;
sucirculo.disparea ( );
cout<<\n;
}
198
PARAMETROS
PREDETERMINADOS
Una de las caractersticas del C++ es el de poder
utilizar parmetros predeterminados en el prototipo
de las funciones.
Int totales(a=10,b=20,c=30,d=40)
Desde el main se puede ejecutar esta funcin de las
siguientes maneras:
main( )
{ ..........
.........
199
int resultado;
resultado = totales;
tambin podra ser de la siguiente manera:
main( )
{
.......
.......
int resultado;
resultado = totales(50, 80);
En el primer caso asume los valores asignados en el
prototipo, y en el segundo los completar con los
dos ltimos.
200
JERARQUIA DE CLASES
El C++ le permite crear una nueva clase a partir
de una clase original.
A la clase original se le llama clase base y a la que
se crea se le llama clase derivada.
La clase derivada hereda los datos y funciones
miembro de su clase base
Cuando se crea una clase derivada se puede
adicionar otras funciones y datos miembro.
201
#include <iostream.h>
class rectangulo
{
public:
rectangulo(int b, int h); //Constructor
void disparea(void );
~rectangulo( );
//Destructor
int base; int altura;
};
//Declaracin de la clase derivada nrectangulo
class nrectangulo : public rectangulo
202
public:
nrectangulo(int b, int h)
void setbase (int b);
void setaltura(int h);
~nrectangulo( );
};
rectangulo::rectangulo(int b, int h)
{
base = b;
altura = h;
}
rectangulo::~rectangulo( )
{
}
203
void rectangulo::disparea(void)
int area;
void nrectangulo::setaltura(int h)
altura = h;
void main ( )
{
}
205
Ejm
a
b
c
d
e
g
207
USO DE APUNTADORES A
OBJETOS
En muchos casos es necesario utilizar apuntadores
a objetos. Utilizando como base el programa
anterior, vea como cambia la funcin main.
void main( )
{ nrectangulo mirectangulo (10,20);
nrectangulo* pmirectangulo =
&mirectangulo;
pmirectangulo->setbase (100);
208
pmirectangulo->setaltura (20);
pmirectangulo->disparea ( );
}
Nota: El nombre de la funcin miembro est separado
del apuntador al objeto con el carcter ->.
En la instruccin:
nrectangulo* pmirectangulo = &mirectangulo
la direccin del objeto mirectangulo es asignada al
puntero pmirectangulo.
209
DISEO VISUAL
Seleccione la opcin Workspace del men View.
Estando en la pantalla Developer Studio haga click
en el botn Resource View (inferior izquierda).
Haga click en el signo + de Resources que aparece
acompaado con el nombre que le asigno al
proyecto (izquierda de la pantalla). Mostrar los
elementos que contiene.
Haga click en el + del elemento Dialog.
213
217
221
APERTURA DE UN PROYECTO YA
EXISTENTE
Ingrezar al C++.
Seleccione Open Workspace del men File.
Utilizar el cuadro de dialogo del Open para
seleccionar el archivo que contiene el proyecto.
Haga click en el botn Resource View.
Una forma alternativa de abrir un proyecto en el
que se est trabajando recientemente es
selecionando Recent Workspace(File) y seleccionar
222
el que desee.
225
ADICION DE VARIABLES A
CONTROLES EDIT Y CHECK
Estas variables se utilizan para la lectura y
escritura de datos desde y hacia los controles.
Seleccione Class Wizard del men View
Seleccione Member Variables.
Seleccione de Conntrol Ids, el objeto con el que va
ha trabajar
Haga click en el botn Add Variable
226
227
INICIALIZACION DE CONTROLES
En algunos casos es necesario que algunos
controles estn inicializados, es decir que muestren
en la pantalla un check o una x, para lograrlo
efecte lo siguiente:
Seleccione Class Wizard del men View.
Seleccione Message Maps.
Seleccione en Objects Ids el objeto con el que va
ha trabajar.
228
231