C y C-|- -|-
Ahora comenzaremos a hablar sobre otro idioma de programación, de mediano y alto nivel que es bastante mas difícil que lo que hemos estado viendo, pero que es una herramienta que sigue siendo de actualidad y esta preparado para trabajar con objetos (POO). Estoy presentando al C++ y a su antesesor el CC
C++
C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programaciónC con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.
http://es.wikipedia.org/wiki/C++
En las referencias podemos ampliar un poco mas el conocimiento sobre estos idiomas, nosotros comenzaremos usando el C++ en un compilador de distribución libre el Turbo C++ de Borland Version 3
Para descargarlo, pueden usar este vínculo http://www.4shared.com/rar/m6Utfwln/TC_online.html
Como el instalador del programa original, fue diseñado para DOS o UNIX sobre 16 Bits, hay problemas en usarlo con los modernos sistemas operativos, por lo que esta en una carpeta comprimida, que tendremos que descomprimir y colocar en la raiz del disco C: y una vez alli, abrir la carpeta, dentro de ella abrir la carpeta BIN y dentro de ela ir al TC.EXE y con el boton derecho del mouse, enviar a ..> Escritorio(crear acceso directo)
Si bien se puede usar la pantalla completa, configurando el acceso directo en pantalla, es conveniente a veces usar la ventana para consola que provee windows, sobre todo para poder copiar texto desde windows, aunque bien podemos hacerlo, pegando en un documento de texto y luego cambiarle la extensión de txt a cpp
Seguiremos un manual bajado de internet, aunque este compilador tiene muy buena ayuda, claro que no en español, pero es entendible. (no me salgan con: " mi no spikear english")
https://www.4shared.com/office/7GBKLGp1/turboc.html
https://www.4shared.com/office/LVmGKC-0/lenguaje_c_manual_.html
Un cambio que notaremos con el compilador de Qbasic, es que tenemos que poner "archivos de cabecera " antes de cualquier código, porque las funciones y palabras claves en C y C++ provienen de lo que esta declarado en ellos. Además, el C++ diferencia mayúsculas de minúsculas, asi que debemos ser muy cuidadoso con los nombres de las variables, y por ultimo, debemos detener la presentacion en pantalla para poder ver los resultados antes de que el programa concluya, porque si no no alcanzaremos a ver lo que se presentó.
Tanto C como C++ no tiene como un tipo de variable las "cadenas " o "String", sino que las construye a partir de un puntero (un indicador a un lugar de memoria y tipo de dato) o de un vector (un conjunto de datos iguales dispuestos uno tras otro en la memoria).
Para igualar o comparar, no se pueden usar cadenas o strings, salvo mediante funciones declaradas en el archivo de cabecera string.h. Si queremos hacerlo debemos comparar valores numericos o un caracter alfanumerico (este ùltimo expresado entre comillas simples)
Los archivos de cabecera declaran cada una de las funciones que podremos usar, aqui un ejemplo de un archivo de cabecera, mostrado en TurboC++ de Borland con sus funciones:
Se trata de "stdio.h"
clearerr |
fclose |
fcloseall |
fdopen |
feof |
flux |
fgetc |
fgetchar |
fgetpos |
fgets |
flushall |
fopen |
fprintf |
fputc |
fputchar |
fread |
freopen |
fscanf |
fseek |
fsetpos |
fwrite |
getc |
getchar |
gets |
getw |
printf |
putc |
putchar |
puts |
putw |
rename |
rewind |
rmtmp |
scanf |
setbuf |
sprintf |
sscanf |
strerror |
_strerror |
tempnam |
tmpnam |
ungetc |
unlink |
vfprintf |
vfscanf |
vscanf |
vsprintf |
vsscanf |
|
|
Luego, al hacer doble click sobre una de las funciones, se nos detalla para que sirve y como se usa (parametros requeridos)
por ejemplo: fwrite
fwrite <STDIO.H> En azul traduccion al español
Writes to a stream Escribe en un flujo
Declaration: Declaración:
size_t fwrite(const void *ptr, size_t size, size_t n, FILE*stream); size_t fwrite (const void * ptr, size_t size, size_t n, FILE * stream);
Remarks: fwrite appends a specified number of equal-sized data items to an output file.
Observaciones: Fwrite anexa un número especificado de elementos de datos de igual tamaño a una salida archivo.
Argumen | What It Is/Does Argumento | Qué Es / Hace
ptr Pointer to any object; the data written begins at ptr ptr Puntero a cualquier objeto; Los datos escritos comienzan en ptr
size Length of each item of data size Longitud de cada elemento de datos
n Number of data items to be appended n Número de elementos de datos que se añadirán
stream Specifies output file stream Especifica el archivo de salida
The total number of bytes written is (n * size) El número total de bytes escritos es (n * tamaño)
Return Value: Valor Devuelto:
On success, returns the number of items (not bytes) actually written.
En caso de éxito, devuelve el número de elementos (no bytes) realmente escritos.
On error, returns a short count.
En caso de error, devuelve un recuento corto.
Portability:
DOS UNIX ANSI C C++ Only »
Yes Yes Yes
See Also: fopen fread
Example:
#include <stdio.h>
struct mystruct
{
int i;
char ch;
};
int main(void)
{
FILE *stream;
struct mystruct s;
if ((stream = fopen("TEST.$$$", "wb")) == NULL) /* open file TEST.$$$ */
{
fprintf(stderr, "Cannot open output file.\n");
return 1;
}
s.i = 0;
s.ch = 'A';
fwrite(&s, sizeof(s), 1, stream); /* write struct s to file */
fclose(stream); /* close file */
return 0;
}
El código base, se declara en una función que se llama main, en el TC++, a su vez las funciones de definen y declaran asi:
|tipo de dato devuelto| NombreFuncion (tipo dato parametro1 nombre parametro1, tipo de dato parámetro 2 nombre parámetro 2, Etc) { <-- corchete de apertura del codigo de la función
desarrollo de la función; (cada sentencia termina en punto y coma; )
} <-- corchete de cierre del codigo de la función
El tipo de dato devuelto, puede ser void (nada) los parámetros también pueden ser void.
El main por defecto devuelve un entero
Si no recibe paràmetros TC++ usa void, o nada, nosotros omitiremos el uso del void para hacerlo compatible con otros compiladores, si corresponde a void, no ponemos nada (paréntesis vacios)
Tambien los compiladores mas nuevos usan para el main que se devuelva un entero, que suele identificar como se ejecutó el programa, 0 si no hubo errores y cualquier otro número si tenemos un error en la ejecución del codigo. Asi que sería bueno que aunque este que estamos usando admita un void, usemos un entero para acostumbrarnos, y tendremos que poner antes del corchete de cierre poner un return 0; que es darle a la función el valor para que devuelva, (no como en otros idiomas que el return se usaba para volver a la función de origen). Los tipos de datos pueden ser int (entero) char (caracter) o algun tipo de dato creado por el usuario
Otra diferencia importante, cada orden termina en un punto y coma ";" o vá encerrada entre corchetes " { } "
Los " [ ]" se usan para definir las cantidad de elementos de un vector o matriz, y los paréntesis "( )" para definir lo que se le pasa a una funcion, vacio si nada, valores separados por comas si son parámetros.
Los archivos de cabecera, van despues de un " #include " y encerrados entre " < > ". El #include se puede usar para pegar un código de otra hoja de codigo que estara en el misnmo lugar para que la encuentre y si no con su ruta aunque esto no es lo mas conveniente ya que deja de funcionar al mover el ejecutable. En este caso el nombre del archivo, ira como una cadena de texto, es decir entre comillas dobles
#include "Presenta.cpp";
Los comentarios, (texto que no se ejecuta) se ponen para una sola linea, despues de barras dobles; comentario de una linea
cuando es toda una seccion se usa barra asteriscole y se cierra con asterisco barra
Las comillas simples se usan para indicar un solo caracter: 'A'
las comillas dobles para una cadena de caracteres: "Hola "
La barra inversa antes de una letra, indica una secuencia de escape (se usa para distintas letras cada una con un significado)
http://www.zator.com/Cpp/E3_2_3e.htm
Retornando con el tema de las (segun los experimentados, mal llamadas librerias) o archivos de cabecera...
Estos archivos de cabecera tienen determinadas funciones, algunas NO son totalmente compatibles con otras de otros archivos (pueden causar algun efecto indeseable) pero conocidas estas incompatibilidades, se pueden subsanar.
La libreria conio.h (Console input output) tiene funciones para manejo de presentacion por pantalla manejando las posibles variedades admitidas en formato de texto (25 x 80); (50 x 80); (25x40) mediante la funcion textmode
Para saber como usar esta funcion, abierta una nueva pagina de código, FILE -->NEW (escribimos textmode lo seleccionamos y presionamos el boton derecho y veremos esto:
▄▄▄▄▄▄▄▄
¦textmode Ì <CONIO.H>
▀▀▀▀▀▀▀▀
Changes screen mode (in text mode)
Declaration: void textmode(int newmode);
Remarks:
textmode selects a specific text mode.
You can give the text mode (the argument newmode) by using a symbolic
constant from the enumeration type text_modes (defined in CONIO.H).
If you use these constants, you must include CONIO.H.
When textmode is called, the current window is reset to the entire screen,
and the current text attributes are reset to normal, corresponding to a
call to normvideo.
Specifying LASTMODE to textmode causes the most recently selected text mode
to be reselected.
textmode should be used only when the screen is in text mode (presumably to
change to a different text mode).
When the screen is in graphics mode, use restorecrtmode to escape
temporarily to text mode.
Return Value: None
Portability:
╔ DOS T UNIX T ANSI C T C++ Only ╗
║ Yes │ │ │ ║
╚═════¤══════¤════════¤══════════╝
See Also:
gettextinfo window
Example:
#include <conio.h>
int main(void)
{
textmode(BW40);
cprintf("ABC");
getch();
textmode(C40);
cprintf("ABC");
getch();
textmode(BW80);
cprintf("ABC");
getch();
textmode(C80);
cprintf("ABC");
getch();
textmode(MONO);
cprintf("ABC");
getch();
return 0;
}
Vieron que aprender Inglés técnico es necesario? Ahh ?
En el código de ejemplo vemos el uso de cprintf("ABC"); donde cprintf es una funcion que crea una ventana de texto dentro de la pantalla de texto y alli escribe.
Para ejecutar el codigo, previamente hay que compilarlo para que indique errores, lo que se hace presinando AltGr y F9 (Alli si se pudo ejecutar, me dira al fin de la ventanita SUCESS caso contrario me indicara error, presione una tecla y dara en la parte inferior el listado de errores)
Si la compilacion fué exitosa, automaticamente se crea el ejecutable, es decir que si revisamos la carpeta donde esta destino de los ejecutables (C:TC) alli estará y si no lo ejecutamos con Ctrl + F9
En este ejemplo, si lo ejecutamos, se detendra en el primer getch(); y mostrará la nueva relación entre la pantalla de texto y el tamaño de la letra, si lo tenemos en pantalla completa veremos el cambio de la letra
Pero podemos ademas incluir otras ordenes para ver como trabaja con el tema de los colores, entonces el código nos quedaría
#include <conio.h>
int main(void)
{
textmode(BW40);
textcolor(14);
textbackground(1);
cprintf("ABC");
getch();
textmode(C40);
textcolor(14);
textbackground(1);
cprintf("ABC");
getch();
textmode(BW80);
textcolor(14);
textbackground(1);textmode(BW80);
cprintf("ABC");
getch();
textmode(C80);
textcolor(14);
textbackground(1);
cprintf("ABC");
getch();
textmode(MONO);
textcolor(14);
textbackground(1);
cprintf("ABC");
getch();
return 0;
}
Aqui usé otras funciones del mismo archivo de cabecera, y después de definir el tamaño de pantalla de texto doy una definicion de color de letra y de fondo de la ventana de texto.
Para saber cuales y como se usan las funciones de este archivo de cabecera, podemos hacer lo mismo que antes para que nos detalle una función de la misma, y donde se menciona el nombre del archivo de cabecera, si volvemos a hacer click con el derecho, nos dará el listado de funciones disponibles
▄▄▄▄▄▄▄▄▄
CONIO.H
▀▀▀▀▀▀▀▀▀
Functions
▀▀▀▀▀▀▀▀▀
cgets clreol clrscr cprintf
cputs cscanf delline getch
getche getpass gettext gettextinfo
gotoxy highvideo insline inp
inport inportb inpw kbhit
lowvideo movetext normvideo outp
outport outportb outpw putch
puttext _setcursortype textattr textbackground
textcolor textmode ungetch wherex
wherey window
y sobre cada una de las funciones, para que sirve, que parametros debo pasarle y a veces un ejemplo
Alguno quiere discutir porque elegí este compilador para enseñar los primeros pasos en C++? Espero que sus razones sean mejor que las mías.
Ahora que ya nos mojamos los pies, vamos a ver si nadamos un poco, unos manualcitos de C++ que no son para decir "Que manuales" pero si que aporta lo suyo y sobre todo esta aplicado el Turbo C++
Aqui mas documentacion:
http://www.4shared.com/zip/eU1UwlsH/turbo_c_plus_plus_3_dot_0594.html
Los códigos y los programas están a disposición del que quiera, sin ir contra los derechos de autoria y de propiedad vigentes. Use el formularo de contacto para que podamos ver como intercambiar la documentación-_ Gracias.-
Mas sobre C++ para los que quieran saber mas mas