SABERMASJUSTODARACT
SABERMASJUSTODARACT Por una Facultad de provecho a la comunidad

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 C

C

es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.  Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

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


Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis