Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Intro A Lenguaje C PDF
Intro A Lenguaje C PDF
Borland: C++: Ejecutar: Bcc32 Turbo C++: Viene con IDE integrado: Ejecutar Tcc
Vers obsoleta gratuita en: Embarcadero.com
G++ para Linux: Ejecutar: gcc
MS Visual C ++: Crear el proyecto (File New Project - Win32 Console aplication) Crear New
Works pace y luego crear C++ Source file. Microsoft Visual C++ 6: New: C++ Source code
Dev C++: Compilador de software libre con IDE de www.bloodshed.net: File - New Source File
La funcin main debe ser int.
Caractersticas:
Es un lenguaje de propsito genera, de medio nivel. Permite programar a alto nivel y a bajo nivel.
Es un lenguaje porttil. Los programas escritos en C son fcilmente transportables a otros sistemas.
Pasos para crear y ejecutar un programa en C:
1. Escribirlo en un editor: Cualquier editor que genere ficheros de texto: sern los ficheros fuentes.
2. Compilarlo en un compilador: El compilador produce ficheros objetos a partir de los ficheros
fuentes. Los ficheros objetos contienen cdigo mquina.
3. Enlazarlo(Linkar): El enlazador produce un fichero ejecutable a partir de los ficheros objetos.
4. Ejecutarlo.
#include <stdio.h>
main ( ) /* Tercer ejemplo */
{
int horas, minutos;
//se declaran las variables
horas = 3;
//se asignan las variables
minutos = 60 * horas;
printf ("Hay %d minutos en %d horas.", minutos, horas);
getchar ();
}
int horas, minutos; -> es una sentencia de declaracin y las variables son de tipo entero (integer)
/*Comentarios: todo aquello que vaya entre un /* y un */ es ignorado En TC++ tambin se usa: //
Clase 3: Variables:
Declaracin: La declaracin de
variables deben ir al principio de
la funcin,
signacin: Una vez declarada la
variable ya puede usarla
almacenando algo en ella.
El smbolo % avisa a la funcin printf que se va a imprimir una variable en esta posicin;
la letra d informa que la variable a imprimir es entera (digit). /*
int Valor nmero entero.
flotante - valor de punto flotante, con una parte fraccional.
doble - un valor de punto flotante de doble precisin.
char - un solo carcter.
vaco - Tipo de valor para fines especiales.
main ()
{
printf ("Hola mundo");
}
main()
{
clscr() //en libreria conio - limpia pantalla
printf("hola mundo");
getch(); //en libreria stdio - pausa
}
Getchar
getchar () es una funcin que espera la pulsacin de la tecla return. se encuentra en la librera
stdio.h, por lo tanto, siempre que la utilicemos es necesario incluir la lnea: #include <stdio.h>
Los programas C estn compuestos de unidades de programa llamadas funciones, las cuales son
los mdulos bsicos del programa.
Un programa en C contiene al menos una funcin, la funcin main
//---- TERCER PROGRAMA C ---#include <stdio.h>
main ()
{
printf ("_Tercer programa en C\n");
printf ("Pulsa la tecla RETURN para terminar.");
getchar ();
}
Secuencias de escape:
Los caracteres empezados por \ se les llaman secuencias de escape. Representan
caracteres no imprimibles. Hemos visto \n para salto de lnea.
Otras secuencias de escape:
\r para el retorno de carro, \t para el tabulador, \b para retroceso, \" para la comilla, \' para el
apstrofe y \\ para la barra diagonal invertida.
Tipo
Descripcin
Long.en bytes
Rango
char
carcter
1
0 a 255
int
entero
2
-32768 a 32767
float
coma flotante
4
aprox. 6 dgitos de precisin
double
coma flotante doble precisin
8
aprox. 12 dgitos de precisin
void
sin valor
0
sin valor
Secuencias de escape:
Cdigo
Significado
-------------------------------------------------------------\b
retroceso
\f
salto de pgina
\n
nueva lnea
\r
retorno de carro
\t
tabulacin horizontal
\"
comillas (")
\'
apstrofo (')
\0
carcter nulo
\\
barra invertida (\)
\v
tabulacin vertical
\a
alerta (bell, campanilla)
\ddd
constante octal (ddd son tres dgitos como mximo)
\xddd
constante hexadecimal (ddd son tres dgitos como mximo)
Tipo entero:
Es un nmero sin parte fraccionaria.
Las constantes enteras se pueden escribir de uno de los tres modos siguientes:
- Decimal: escribiendo el nmero sin empezar por 0 (excepcin sel propio 0). Ej: 1, 0, -2.
- Hexadecimal: empezando el nmero por 0x. Ejemplos: 0xE, 0x1d, 0x8.
- Octal: empezando el nmero por 0. Ejemplos: 02, 010.
Tienen parte real y parte fraccionaria (num. decimal). Los dos tipos son casi iguales pero
El tipo double tiene doble precisin que el tipo float.
La sintaxis correcta de las constantes de estos dos tipos es:
[signo] [dgitos] [.] [dgitos] [exponente [signo] dgitos]
donde:
signo
es + o -;
dgitos
es una secuencia de dgitos;
.
es el punto decimal;
exponente
es E o e.
Los elementos que estn entre [] son opcionales, pero el nmero no puede empezar por e o E, ya
que el compilador lo interpretara en este caso como un identificador y no como un nmero.
Algunos ejemplos de constantes de este tipo: 1.0e9, -3E-8, -10.1.
Tipo void
Significa sin valor, sin tipo.
Uno de los usos de void se puede observar al comparar estos dos programas:
#include <stdio.h>
main ()
{
printf ("Versin 1.");
getchar ();
}
#include <stdio.h>
void main (void)
{
printf ("Versin 2.");
getchar ();
}
Al poner void entre los parntesis de la definicin de una funcin, se define a sta como funcin que
no tiene argumentos. Si se pone delante indica que la funcin no retorna nada (procedure).
PROGRAMA EJEMPLO
#include <stdio.h>
void main (void)
{
int i = 1;
char c = 'c';
float f = 1.0;
double d = 1e-1;
printf (" i = %d\n c = %c\n f = %f\n d = %lf\n", i, c, f, d);
getchar ();
}
Especificadotes o argumentos
Codigo
Formato o variable
%c
Char 1 caracter simple
%d o %i
Entero decimal
%e
Flotante o doble notacin cientfica
%f
Flotante o doble decimal con signo
%g
Usa el mas corto de los anteriores
%o
Entero octal sin signo
%s
Cadena de varios caracteres
%u
Entero decimal sin signo
%x
Entero hexadecimal sin signo
%
Signo de tanto por ciento: %
%p
Pointer, puntero de direccin
%n
puntero a entero con n caracteres
#include <stdio.h>
int main(void)
{
int c;
while ((c = getchar()) != '\n')
printf("%c", c);
return 0;
}
Operadores
Aritmticos: + mas - menos * por / divisin
% resto
Relacionales: >= mayor o igual != diferente de = = igual que
Lgicos:
NO negacin: !, Y AND lgico: && O OR lgico: ||
Incrementales:
++
-+=
Otros operadores:
& Direccin a un objeto * Direccionamiento indirecto [ ] Direccionamiento indexado
Sizeof( ) Tamao de la variable , reunir varias expresiones en una funcin
EJERCICIOS
#include <stdio.h>
//ok edu
main ()
{
int nume1,nume2,suma=0;
printf ("Suma en C.\n");
printf ("Escriba el primer numero:");
scanf("%d",&nume1);
printf ("Escriba el segundo numero:");
scanf("%d",&nume2);
suma=nume1+nume2;
printf ("%d mas %d son %d",nume1,
nume2,suma);
printf("\n");
printf ("Pulsa RETURN para terminar.");
scanf("%d"); //o getchar()
}
//ok edu
// pide el radio
El siguiente
programa
pide el radio del
crculo y
calcula su
longitud y rea .
Para ello declara
una constante Pi
y tres variables
del tipo float
longitud = 2 * pi * radio;
area = pi * radio * radio;
printf ("Calculo de la longitud y area de un circulo de radio %g:\n\n", radio);
printf ("LONGITUD: %f\n", longitud);
printf ("AREA : %f\n", area);
getchar ();
}
Funciones comunes:
Abs
Asin
Cos
Exit
Exp
Fabs
Fclose
Feof
Fgetc/getc
Floor
Fmod
Fopen
Fputc
Log
Pow
Rand
Srand
Sqrt
Strcat
Strcmp
Strcomp
StrCpy
Strlen
System
Tan
Time
Toupper
Fabs
Eleva a la potencia
Retorna valor aleatorio
Pone punto de inicio para Rand
Raz cuadrada
Concatena cadenas de texto
Compara cadenas de texto
Compara cadenas de texto
Copia cadenas de texto
Cuenta caracteres del texto
Pasa la orden al sistema Op.
Retorna la tangente
Retorna segundos transcurridos
Convierte letra a maysculas
Retorna valor absoluto
#include <string.h>
#include <stdio.h>
int main(void)
{
char destination[25];
char *source = " States";
strcpy(destination, "United");
strncat(destination, source, 7);
printf("%s\n", destination);
return 0;
}
En C++ a diferencia de C las entradas y salidas se leen desde streams (canal, flujo o corriente)
Para su uso hay que incluir: #include <iostream.h> entonces de pueden introducir y sacar datos con
Cin:
Cout:
>> :
<< :
Int i=1;
Double tiempo=2;
Float acel=9.8;
Const float Vo=5;
Cout <<Resultado numero:<<i<< en el instante << tiempo << la velocidad vale <<
v0+acel*tiempo <<\n;
#include <stdio.h>
// (Comprobado con Dev-C++)
#include <iostream>
/* Se pueden cambiar las dos lneas anteriores de cabecera por: using namespace std; */
contador++;
if (x < y)
z = x;
else
z = y;
}
#include <stdio.h>
main ()
/* Division */
{
int num1, num2;
printf("\nPrimer nmero");
scanf("%d",&num1);
printf("\nSegundo nmero ");
scanf("%d",&num2);
if (num2 ==0) printf("\n\nNodivisible por cero\n\n");
else
printf("\n\nRerspuesta:
%d\n\n",num1/num2);
}
if (ch == '\n')
{
numero_de_lineas++;
numero_de_caracteres++;
/* Ejemplo 1 con ?: */
z = x <= y ? x : y;
/* Ejemplo 2 con ?: */
n == 1 ?
printf ("Mensaje 1"):
printf ("Mensaje 2");
Sentencia switch
Es un If con mltiples ramificaciones (equivalente al case en pascal)
int main ()
{
char salir;
salir = '\0';
while (salir != 'q')
{
cout << "Hola, Esta es una aplicacin con bucle while" << endl;
cout << "Muestra mensaje con cout y pide con cin " << endl;
cout << "Con cin pide y guarda la variable salir" << endl;
cout << "mietras la variable salir no sea la letra q" << endl;
cout << "Pulse q para salir " << endl;
cin >> salir;
}
return 0;
}
Forma general:
switch (expresin)
{
case expresin_constante_1:
sentencias_1
break; //
-> para que pare de leer
case expresin_constante_2:
sentencias_2
break;
case expresin_constante_3:
sentencias_3
break;
.
.
default:
sentencias_n
}
Ejemplo:
switch (operando)
{
case 1:
x *= y;
break;
case 2:
x /= y;
break;
case 3:
x += y;
break;
case 4:
x -= y;
break;
default:
printf ("ERROR!");
}
SECUENCIAS DE BUCLE:
Sentencia while:
Evala y ejecuta mientras es cierta.
Ejemplo:
imprime los cinco primeros nmeros naturales:
Sentencia for
9
#include <stdio.h>
int main (void)
{
int i;
i = 1;
while (i <= 5)
{
printf ("\ni = %d", i);
i++;
}
getchar ();
}
Sintaxis general:
for (expresin_1; expresin_2; expresin_3)
sentencia
En la sentencia for, a expresin_1 se le llama inicializacin, a
expresin_2 se le llama condicin, y a expresin_3 se le
llama incremento.
Ejemplo. Contar hasta 100:
#include <stdio.h>
main()
{
int fahr;
for ( fahr = 0 ; fahr <= 300 ; fahr = fahr + 20)
printf("%4d %6.1f\n" , fahr , (5.0/9.0)*(fahr-32));
}
Sentencia do-while:
Primero ejecuta y despus evala
Sintaxis general:
do
sentencia
while (expresin);
Sentencia: Continue: Salta el resto del bucle
#include <stdio.h>
main (void)
{
printf ("Lista de los 100 primeros"
"nmeros naturales:\n");
int x;
for (x = 1; x <= 100; x++)
printf ("%d ", x);
getchar();
}
10
Nota alfabtica
MUY DEFICIENTE
INSUFICIENTE
SUFICIENTE
NOTABLE
SOBRESALIENTE
11
12
#include <stdio.h>
int maximo (int, int);
long potencia (int, int);
La salida de este
programa es:
El mximo de 2 y 3 es 3.
4 elevado a 5 es 1024
FUNCION exit()
Clase 9:
FUNCIONES Y VARIABLES
FUNCION abort ()
Aborta el programa. Es muy similar a la funcin exit.
La diferencia es que no acepta parmetros, no vaca los buffers ni cierra ningn fichero.
Ejemplo:
#include <stdlib.h> /* para poder utilizar la funcin exit () */
/* las funciones tarjeta_color () y jugar () han de estar definidas en
algn lado */
void main (void)
{
/* tarjeta_color () es una funcin que devuelve 0 (falso) si la tarjeta
del sistema no es color y 1 (cierto) si lo es */
if (tarjeta_color ())
exit (1); /* terminacin anormal: la tarjeta no es color */
jugar (); /* llamada a funcin para jugar */
exit (0); /* terminacin normal, esta sentencia no es necesaria */
}
13
14
FUNCION assert ()
Clase 11:
Esta funcin testea la expresin dada; si la expresin es cierta no hace nada; si la expresin es falsa
escribe un mensaje en la salida de error estndar y termina la ejecucin del programa.
Sintaxis:
Assertion failed: <expresin>, file <fichero>, line <num_lnea>
Abnormal program termination
Este programa dibuja un grfico de una forma recursiva. Est implementado En Turbo C.
La atractiva forma grfica que muestra en la ejecucin del programa est formada por la
superposicin de cinco curvas. Estas siguen un
Curva de Hilbert de orden 1:
esquema regular y sugieren que deben poder dibujarse
+------por un plotter controlado por computador. El objetivo
Ejemplo:
Ejemplo:
Se ejecuta el programa de la
siguiente forma:
/* fichero ejemplo.c */
#include <stdio.h> /* para: getchar (), putchar (), EOF */
void main (void)
{
int ch;
while ((ch = getchar ()) != EOF)
putchar (ch);
}
Se leen caracteres de teclado y se escriben en pantalla. Se leen caracteres hasta que se encuentra
el carcter de marca de fin de fichero que en el DOS se escribe con: CONTROL-Z.
Si se ejecuta el programa con redireccin:
ejemplo: < fichero_fuente > fichero_destino
se produce una copia del fichero_fuente al fichero_destino.
Ejemplo: >> fichero_destino
en este caso se leen caracteres de teclado y
se aaden al fichero_destino.
#include <stdio.h> /* printf(), scanf()*/ -> OK
DIBUJO DE UN GRFICO
++->
A:
D <- A _
+-+
_
B:
C _
<-+
-+ C:
_
+-+
D:
B -> B _
B -> C _
A _
A -> B
C <- D
D <- D _
procedimiento A (i es entero)
si i > 0 entonces
D (i-1); x = x - h; plot;
A (i-1); y = y - h; plot;
A (i-1); x = x + h; plot;
B (i-1);
finsi
finprocedimiento
15
En Turbo C, siempre que se vaya a utilizar el modo grfico, es necesario inicializarlo y cerrarlo.
La inicializacin se hace con la funcin: initgraph().
los valores que puede tomar son:
CGA
MCGA
EGA
EGA64
EGAMONO
IBM8514
HERCMONO ATT400
VGA
PC3270
DETECT (autodeteccin)
16
#include <graphics.h> /* lineto (), moveto (),
setviewport (), initgrah (), graphresult (), grOk,
getmaxx (), getmaxy ()
*/
#include <stdio.h> /* printf () */
#include <conio.h> /* geth () */
#include <stdlib.h> /* exit (),EXIT_FAILURE/
int h0, h, x, y;
void a (int), b (int), c (int), d (int);
void inicializar_grafico (void);
Tipo
Resolucin
Colores
CGAC0
320 x 200
paleta 0
2 colores
CGAC1
320 x 200
paleta 1
ATT400C0
320 x 200
paleta 0
CGAC2
320 x 200
paleta 2
ATT400C1
320 x 200
paleta 1
EGALO
640 x 200
16 colores
ATT400C2
320 x 200
paleta 2
EGAHI
640 x 350
16 colores
VGALO
640 x 200
16 colores
EGA64LO
640 x 200
16 colores
VGAMED
640 x 350
16 colores
IBM8514LO
640 x 480
1024 x 768
256 colores
En pathtodriver debe estar el path del directorio donde estn los ficheros con extensin
.BGI. Su sintaxis es: "..\\bgi\\drivers"
El modo grfico se cierra con la funcin: closegraph() cuyo prototipo es:
void closegraph (void);
La esquina izquierda superior de la pantalla grfica tiene coordenadas: 0, 0
Funciones grficas utilizadas en este programa:
1) void lineto (int x, int y): Dibuja una lnea desde la posicin actual del cursor hasta (x,y).
2) void moveto (int x, int y): Mueve el cursor grfico a (x,y).
3) int graphresult (void): Devuelve un
Los cdigos de error devueltos por
cdigo de error para la ltima operacin
graphresult()
grfica no exitosa o grOk si la ltima
grOk
grNoInitGraph
operacin grfica ha tenido xito.
grNotDetected
grFileNotFound
4) char *grapherrormsg (int errorcode);
grInvalidDriver
grNoLoadMem
Devuelve un puntero a un string con
grNoScanMem
grNoFloodMem
el mensaje de error.
grFontNotFound
grNoFontMem
5) void setviewport (int izq, int ar, int der,
grInvalidMode
grError
int ab, int clip): Crea un viewport para la
grIOerror
grInvalidFont
salida grfica. Un viewport es una
grInvalidFontNum
grInvalidDeviceNum
ventana de trabajo en la pantalla grfica
grInvalidVersion
de tal modo que la coordenada (0,0)
corresponde a la esquina izquierda
superior del viewport y no de la pantalla.
El parmetro clip especifica si los valores fuera del viewport son recortados.
Las caractersticas grficas de Turbo C se estudiar en lecciones posteriores
Aqu slo hemos dado los conceptos bsicos sobre ellas para comprender cmo est hecho
el programa. */
}
void a (int i)
{
if (i > 0)
{
d (i-1); x -= h; plot;
a (i-1); y -= h; plot;
a (i-1); x += h; plot;
b (i-1);
}
}
void b (int i)
{
if (i > 0)
{
c (i-1); y += h; plot;
b (i-1); x += h; plot;
b (i-1); y -= h; plot;
a (i-1);
}
}
void c (int i)
{
if (i > 0)
{
b (i-1); x += h; plot;
c (i-1); y += h; plot;
c (i-1); x -= h; plot;
d (i-1);
}
}
void d (int i)
{
if (i > 0)
{
a (i-1); y -= h; plot;
d (i-1); x -= h; plot;
d (i-1); y += h; plot;
c (i-1);
}
}
17
18
ARRAYS UNIDIMENSIONALES
#include <stdio.h>
ARRAYS BIDIMENSIONALES
Un array bidimensional es, en realidad, un array unidimensional donde cada elemento es otro
array unidimensional. Los arrays bidimensionales son un caso particular de los arrays
multidimensionales.
As como a los arrays unidimensionales se les suele llamar vectores, a los arrays
bidimensionales se les suele llamar matrices.
La forma general de declaracin es:
especificador_de_tipo nombre_variable [tamao_1] [tamao_2];
y se accede a los elementos del array:
nombre_variable [indice_1] [indice_2]
Inicializar arrays multidimensionales: 2 formas:
int m [3] [4]
{
1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12
};
int v[5] = { 1, 2, 3, 4, 5 };
19
20
int x, y;
El programa representa la matriz de tres en raya como un array de caracteres de 3 por 3. El jugador
siempre es X y la computadora O.
Cuando mueve el jugador, el carcter X se coloca en la posicin especificada de la matriz. Cuando
le toca mover a la computadora, recorre la matriz y pone O en la primera posicin vaca de la matriz.
Si no encuentra una posicin vaca, lo indica y sale.
*/
#include <stdio.h> /* printf (), scanf () */
#include <stdlib.h> /* exit ()
*/
#include <conio.h> /* getch ()
*/
#define ESPACIO ' '
char matriz[3][3] =
{
ESPACIO, ESPACIO, ESPACIO,
ESPACIO, ESPACIO, ESPACIO,
ESPACIO, ESPACIO, ESPACIO
};
}
void obtener_movimiento_de_computadora (void)
{
int encontrado = 0;
register int i, j;
for (i = 0; ! encontrado && i < 3; i++)
for (j = 0; ! encontrado && j < 3; j++)
if (matriz[i][j] == ESPACIO)
encontrado = 1;
if (encontrado)
matriz[i-1][j-1] = 'O';
else
{
printf ("Tablero completo.\n");
exit (0);
}
}
void mostrar_matriz (void)
{
register int i;
printf ("\n 1 2 3");
printf ("\n +-----------+");
for (i = 0; i < 3; i++)
{
printf ("\n%d %c %c %c ", i+1, matriz[i][0], matriz[i][1], matriz[i][2]);
if (i != 2)
printf ("\n +---+---+---");
}
printf ("\n +-----------+");
}
char comprobar (void)
{
register int t;
/* comprobar filas */
for (t = 0; t < 3; t++)
if (matriz[t][0] == matriz[t][1] && matriz[t][1] == matriz[t][2])
return matriz[t][0];
21
/* comprobar columnas */
for (t = 0; t < 3; t++)
if (matriz[0][t] == matriz[1][t] && matriz[1][t] == matriz[2][t])
return matriz[0][t];
22
VISUALIZADOR DE MEMORIA
Estos programas visualizan 256 bytes de memoria a partir de la direccin de comienzo especificada.
#include <stdio.h>
#include <conio.h>
main (void)
{
register int i;
unsigned char ch, *p;
return ESPACIO;
}
Operadores especiales:
De resolucin de visibilidad (::) Permite acceder a una variable global oculta en una variable
local del mismo nombre.
De direccin e indireccin:
*expresin: devuelve la direccin de memoria donde est almacenada
&variable: devuelve el dato almacenado en la direccin de memoria
Ejemplo:
#include <stdio.h>
void main (void)
{
int x = 10;
printf (" x = %d\n &x = %p\n", x, &x) ;
}
Salida del ejemplo:
x = 10
&x = 8FBC:0FFE
OPERADOR *
El operador * es el complemento de &.
Es un operador monario que devuelve el valor de la variable
localizada en la direccin que le sigue.
Ejemplo 1:
#include <stdio.h>
void main (void)
{
int x = 10;
printf (" x = %d\n", x);
printf (" *&x = %d", *&x);
}
Salida de ejemplo 1:
x = 10
*&x = 10
#include <stdio.h>
OK
#include <iostream.h> /para cout
int main(void)
{
cout <<"Uso de punteros\n";
char str1[]="programando";
//puntero del string:
char *pstr1=str1;
cout << str1 <<endl;
while (*pstr1)
{
cout <<" *pstr1="<< *pstr1++
<< endl;
}
getchar();
}
char nombre[25];
int edad;
int sueldo;
};
char nombre[25];
int edad;
int sueldo;
} empleado;
En el segundo caso, se define la estructura empleados y se declara una variable llamada empleado
escrita al final antes del ;
Mejor usar: struct emplados empleado donde empleado es una variable del tipo empleados.
Luego se podr asignar valores como: empleado.edad=32 para un valor entero;
o empleado.nombre [2] = 'X'; para un array.
23
//Tested Dev-C++
int main(void)
{
struct Coordenadas coo;
coo.Cargar();
coo.Mostrar();
getchar ();
}
{
int x;
int y;
int z;
}
#include <iostream>
using namespace std ;
struct Coordenadas
{
int x,y,z;
void Cargar(void)
{
x=8;
y=9;
z=10;
}
void Mostrar(void)
{
cout << x <<endl;
cout << y <<endl;
cout << z <<endl;
}
};
#include <iostream>
<iostream.h>
using namespace std ;
24
class Coordenadas
{
int x,y,z;
public:
void Cargar(void)
{
x=8;
y=9;
z=10;
}
void Mostrar(void)
{
cout << x <<endl;
cout << y <<endl;
cout << z <<endl;
}
};
void main(void)
{
Coordenadas coo;
coo.Cargar();
coo.Mostrar();
}
En el ejemplo izquierdo: La
estructura, adems de definir
sus datos, tambin define las
funciones para manipularlos
Carga(void) o Muestra(void)
25
FUNCIONES
Es una parte del cdigo independiente del principal. Se pueden pasar o no datos.
Declaracin de una funcin:
Por Declaracin explcita: Mediante el prototipo de la forma:
(void no retorna)
26
#include<stdio.h>
#include<conio.h>
#include <math.h> //para funcion pow y raiz
27
28
ALMACENA LOS DATOS DE UN NUMERO DEFINIDO DE ALUMNOS HASTA 10 UTILIZANDO
UNA ESTRUCTURA DE REGISTRO Y AL FINAL DICE CUANTOS APROBADOS Y REPROBADOS
FUERON UTILIZANDO ACUMULADORES (Ejemplo Struct)
#include"stdio.h" //Tested by Ofimega
#include"conio.h"
#include"iostream.h"
void main()
{
int apro=0,rep=0;
int cont=0,n;
char op;
clrscr();
struct agenda
{
char nombre[40];
char mat[10];
int tel;
float cal;
float pro;
}a[10];
do
{
clrscr();
float acal=0;
cout<<"\t\tREGISTRO DE ALUMNOS Y PROMEDIOS"<<endl<<endl;
cout<<"INTRODUZCA EL NOMBRE: ";
gets(a[cont].nombre);
cout<<endl<<"INTRODUZCA SU NO. TELEFONICO: ";
cin>>a[cont].tel;
cout<<endl<<"INTRODUZCA LA MATRICULA DEL ALUMNO: ";
gets(a[cont].mat);
for(int c=0;c<3;c++)
{
cout<<endl<<"\tINTRODUZCA CALIFICACION "<<c+1<<": ";
cin>>a[cont].cal;
cout<<endl<<endl;
acal+=a[cont].cal;
}
a[cont].pro=acal/3;//Aqui se calcula el promedio conforme al acumulador de calificaciones
"acal"
if(a[cont].pro<6)
{
rep+=1;
}
if(a[cont].pro>=6)
{
apro+=1;
}
cout<<endl<<endl<<"QUIERE ALMACENAR OTRO REGISTRO? S/N";
cin>>op;
if(op=='S' || op=='s')
{
cont+=1;
}
if(op=='N' || op=='n')
{
cont=cont+10;
29
30
}
while(cont<10);
clrscr();
cont-=10;
for(int i=0;i<=cont;i++)
{
cout<<"REGISTRO NUMERO: "<<i+1<<endl<<endl;
cout<<"El nombre es: "<<a[i].nombre<<endl<<endl;
cout<<"El telefono es: "<<a[i].tel<<endl<<endl;
cout<<"No. de matricula: "<<a[i].mat<<endl<<endl;
cout<<"Su promedio es: "<<a[i].pro<<endl<<endl<<endl<<endl;
getch();
}
clrscr();
cout<<"\tEL NUMERO DE APROBADOS ES DE---------"<<apro<<endl;
cout<<"\tEL NUMERO DE REPROBADOS ES DE--------"<<rep;
getch();
}
Funciones de texto:
Equivalencia entre punteros y vectores (arrays) para buscar cadenas:
Funcin que recorre para copiar
la cadena t sobre la cadena s
usando arrays [ ]
//---ejemplo de printf
#include <stdio.h>
int main()
{
printf("Hola mundo");
}
//---ejemplo de printf con salto de linea y pausa con GETCH de la librera conio
#include <stdio.h>
//son como los diccionarios que va a emplear
#include <conio.h>
//necesaria para que entienda el GETCH
int main()
// programa principal
{
printf("Hola mundo\n");
//Poner \n dentro de las comillas para que haga salto de lnea
getch();
//hacer pausa
}
//---ejemplo de scanf
#include <stdio.h>
//son como los diccionarios que va a emplear
#include <conio.h>
int main()
// programa principal
{
int edad;
//declaramos la variable edad del tipo numerica entera
printf("Cuantos aos tienes?\n");
scanf("%d",&edad); //sintaxis:%d=formato numerico y &edad=argumento que contiene a la variable
getch(); //hacer pausa
}
//----ejemplo de scanf y bifurcacin IF
#include <stdio.h>
//es como el vocabulario
#include <conio.h>
int main()
// programa principal
{
int edad;
//declaramos la variable edad del tipo numerica entera
printf("Cuantos aos tienes?\n");
scanf("%d",&edad); //sintaxis:%d=formato numerico y &edad=argumento que contiene a la variable
if (edad>18)
// si es mayor a 18
printf("mayor de edad\n");
else
// y si no....
printf("menor de edad\n");
getch();
// hacer pausa
}
//----ejemplo de pedir nombre
#include <stdio.h> //es como el vocabulario
#include <conio.h>
int main() // programa principal
{
int edad; //declaramos la variable edad del tipo numerica entera
char nombre[40];
printf("Hola, Cmo te llamas?\n");
scanf("%s",&nombre); //sintaxis:%d=formato numerico y &edad=argumento que contiene a la
variable
printf("Pues encantado de conocerte %s\n",nombre);
getch(); //hacer pausa
}