SlideShare a Scribd company logo
1 of 47
Henry moises Hernandez Espinoza
Manual C/C++
Facilitador: Ing. Elsner B. González.
MANUAL C/C++
1Henry Hernandez
Índice
Estructura básica deun programa C/C++.................................................................................... 3
Lectura y escritura en c.......................................................................................................... 4
Funcion printf().................................................................................................................. 4
Función scanf() .................................................................................................................. 6
lectura y escritura C++........................................................................................................... 7
Uso del cout....................................................................................................................... 7
Uso del cin......................................................................................................................... 8
Tipos de datos en C/C++........................................................................................................ 9
Tipos de datos C++ numéricos enteros ................................................................................ 9
Tipos de datos numéricos reales........................................................................................11
Tipo lógico........................................................................................................................12
Tipo carácter extendido.....................................................................................................12
identificadores .....................................................................................................................13
Declaración de variables en C/C++.........................................................................................14
Almacenamientoen memoria...............................................................................................15
Arreglos...............................................................................................................................16
Estructuras...........................................................................................................................18
Funciones enel interior de estructuras...............................................................................19
Inicialización de estructuras...............................................................................................22
Arrays de estructuras ........................................................................................................23
Estructuras anidadas.........................................................................................................24
Bibliotecas olibrerías en C++. Declaración y uso de librerías. Include en C++............................26
¿Qué son exactamente laslibrerías? ..................................................................................26
Sintaxis para declarar Libreríasen C++................................................................................27
Librerías Estandar de C++ (Standar Template Library o STL).................................................27
Bucles o Ciclos en c...............................................................................................................29
La estructura condicional IF...else......................................................................................29
La estructura condicional abierta y cerrada switch ... case...................................................30
El bucle while....................................................................................................................32
El bucle for.......................................................................................................................33
El bucle do...while.............................................................................................................34
MANUAL C/C++
2Henry Hernandez
Ficheros...............................................................................................................................35
Tipo FILE:..........................................................................................................................35
Función fopen:..................................................................................................................35
Función fclose:..................................................................................................................36
Tres funcionesjuntas(file,fopen, fclose).............................................................................36
Función fgetc:...................................................................................................................36
Función fputc:...................................................................................................................37
Función feof:.....................................................................................................................37
Función rewind:................................................................................................................37
Función fgets:...................................................................................................................38
Función fputs:...................................................................................................................38
Función fread:...................................................................................................................38
Función fwrite:..................................................................................................................39
Función fprintf:.................................................................................................................39
Función fscanf:..................................................................................................................39
Función fflush:..................................................................................................................39
Función fseek:...................................................................................................................40
Función ftell:.....................................................................................................................40
Funciones:............................................................................................................................40
sintaxis de una funciónes la siguiente:...............................................................................41
Paso de Parámetros ..........................................................................................................42
Por Valor..........................................................................................................................42
Variables locales y globales ...................................................................................................42
Una variable local..............................................................................................................42
Una variable global............................................................................................................42
Anexos.....................................................................................................................................43
Ejercicio de estructura..........................................................................................................43
Ficheros...............................................................................................................................44
ejercicios switch ciclosy funciones ........................................................................................45
MANUAL C/C++
3Henry Hernandez
ESTRUCTURA BÁSICA DE UN PROGRAMA C/C++
La mejor forma de aprender un lenguaje es programando con él; en la clase de laboratorio
de programación I usaremos el IDE Code::Blocks.
MANUAL C/C++
4Henry Hernandez
LECTURA Y ESCRITURA EN C
Para poder leer y escribir datos en el lenguaje de
programación C existen una serie de funciones
agrupadas en un conjunto de librerías de código
objeto, que constituyen la llamada biblioteca
estándar del lenguaje. En el caso concreto de las
funciones de entrada y salida (lectura y escritura), su archivo de cabecera es stdio.h.
Existen varias funciones que realizan la entrada y salida de datos en el lenguaje de
programación C, pero nos vamos a centrar solamente en dos de ellas: printf() y scanf().
FUNCION PRINTF()
La función printf() sirve para escribir datos en la pantalla con un formato determinado.El
prototipo de esta función es la siguiente:
MANUAL C/C++
5Henry Hernandez
int printf(const char *formato, arg1, arg2, …, argn)
donde:
formato:
Hace referencia a una cadena de caracteres que contiene información sobre el formato de
salida.
Arg1, arg2, …, argn: argumentos que representan los datos de salida
La cadena de control puede constar de hasta tres tipos de información:
por pantalla tal cual este escrito
'
y las más importantes son 'n' que introduce un salto de línea, y 't' que introduce un
tabulador.
n ciertos caracteres precedidos del carácter tanto por
ciento '%'.
A continuación semuestra una tabla con estos especificadores de formato dependiendo del
tipo de dato a los que representan:
Tipo de dato Especificadores de
formato
Comentario
Int %d Entero con signo
Float %f Real con signo
Char %c carácter
Char [n] %s Cadena de caracteres
MANUAL C/C++
6Henry Hernandez
FUNCIÓN SCANF()
La función scanf() se pude considerar de alguna manera como la inversa de la función
printf(), pues sirve para introducir datos desde el teclado con un formato determinado.
El prototipo de esta función es el siguiente:
int scanf(const char *formato, arg1, arg2, …, argn);
donde:
 formato: hace referencia a una cadena de caracteres (cadena de control) que
contiene información sobre elformato de los datos que sevan aintroducir mediante
el teclado.
 arg1, arg2, …, argn: son los argumentos que representan los datos de entrada.
La cadena de control puede constar de:
 Especificadores de formato, que son ciertos caracteres precedido por el carácter
tanto por ciento '%'.
 Caracteres de espacio

una tabla con estos especificadores de formato dependiendo del tipo de dato a los
que representan:
Tipo de dato Especificadores de formato Comentario
Int %d Entero con signo
Float %f Real con signo
Char %c carácter
Char [n] %s Cadena de caracteres
MANUAL C/C++
7Henry Hernandez
LECTURA Y ESCRITURA C++
USO DEL COUT
Biblioteca de entrada y salida fluidas "iostream"
En el contexto de C++ todo lo referente a
"streams" puede visualizarse mejor si usamos un
símil como un río o canal de agua.
Imagina un canal por el que circula agua, si
echamos al canal objetos que floten, estos se
moverán hasta el final de canal, siguiendo el flujo
del agua. Esta es la idea que se quiere transmitir cuando se llama "stream" a algo en C++.
Por ejemplo, en C++ el canal de salida es cout, los objetos flotantes serán los argumentos
que queremos extraer del ordenador o del programa, la salida del canal es la pantalla.
Sintaxis:
cout << <variable/constante> [<< <variable/constante>...];
Completando el símil, en la orden:
cout << "hola" << " " << endl;
MANUAL C/C++
8Henry Hernandez
Los operadores "<<" representarían el agua, y la dirección en que se mueve. Cualquier cosa
que soltemos en el agua: "hola", " " o endl, seguirá flotando hasta llegar a la pantalla, y
además mantendrán su orden.
USO DEL CIN
En esta biblioteca se definen algunas de las funciones aplicables a los "streams", pero aún
no estamos en disposición de acceder a ellas. Baste decir de momento que existen cuatro
"streams" predeterminados:
 cin, canal de entrada estándar.
 cout, canal de salida estándar.
 cerr, canal de salida de errores.
clog, canal de salida de diario o anotaciones.
Sobre eluso de cin,que es el único canal de entrada predefinido, tenemos que aclararcómo
se usa, aunque a lo mejor ya lo has adivinado.
cin >> <variable> [>> <variable>...];
Donde cada variable irá tomando el valor introducido mediante el teclado. Los espacios y
los retornos de línea actúan como separadores.
Ejemplo:
MANUAL C/C++
9Henry Hernandez
Escribir un programa que lea el nombre, la edad y el número de teléfono de un usuario y
los muestre en pantalla.
TIPOS DE DATOS EN C/C++
TIPOS DE DATOS C++ NUMÉRICOS ENTEROS
Eltipo de dato numérico entero es un subconjunto finito de los números enteros del mundo
real. Pueden ser positivos o negativos. En C++ los tipos de datos numéricos enteros son los
siguientes:
MANUAL C/C++
10Henry Hernandez
Tipo de Dato Descripción
Número de bytes
típico
Rango
short Entero corto 2 -32768 a 32767
int Entero 4 -2147483648 a +2147483647
long Entero largo 4 -2147483648 a +2147483647
char Carácter 1 -128 a 127
Con los tipos enteros pueden utilizarse los calificadores signed y unsigned. Estos
calificadores indican si el número tiene signo o no. Si se usan solos, sin indicar el tipo de
dato se asume int.
Por ejemplo, las siguientes declaraciones son equivalentes:
unsigned int x; equivale a: unsigned x;
MANUAL C/C++
11Henry Hernandez
Usando estos calificadores podemos tener los siguientes tipos enteros:
Podemos ver que los datos enteros de tipo signed son equivalentes a los enteros sin utilizar
el calificador:
signed int a; es equivalente a escribir int a;
TIPOS DE DATOS NUMÉRICOS REALES
El tipo de dato numérico real es un subconjunto finito de los números reales. Pueden ser
positivos o negativos.
En C++ los tipos de datos numéricos reales son los siguientes:
Tipo de
Dato
Descripción
Número de
bytes típico
Rango
Tipo de Dato Descripción
Número de
bytes típico
Rango
signed short Entero corto 2 -32768 a 32767
unsigned short Entero corto sin signo 2 0 a 65535
signed int Entero 4 -2147483648 a +2147483647
unsigned int Entero sin signo 4 0 a 4294967295
signed long Entero largo 4 -2147483648 a +2147483647
unsigned long Entero largo sin signo 4 0 a 4294967295
signed char Carácter 1 -128 a 127
unsigned char Carácter sin signo 1 0 a 255
MANUAL C/C++
12Henry Hernandez
float
Real (Número en coma
flotante)
4
Positivos: 3.4E-38 a 3.4E38
Negativos: -3.4E-38 a -3.4E38
double
Real doble(Número en
coma flotante de doble
precisión)
8
Positivos: 1.7E-308 a 1.7E308
Negativos: -1.7E-308 a -1.7E308
long double Real doble largo 10
Positivos: 3.4E-4932 a 1.1E4932
Negativos: -3.4E-4932 a -1.1E4932
TIPO LÓGICO
Los datos de este tipo sólo pueden contener dos valores: true ó false (verdadero ó falso). Si
se muestran como enteros, el valor true toma el valor 1 y false el valor 0.
Tipo de
Dato
Descripción
Número de
bytes típico
Rango
bool Dato de tipo lógico 1 0, 1
TIPO CARÁCTER EXTENDIDO
Estetipo seutiliza para representar caracteres UNICODE.Utiliza 2 bytes a diferencia del tipo
char que solo utiliza 1.
Tipo de
Dato
Descripción
Número de
bytes típico
Rango
wchar_t Carácter Unicode 2 0 a 65535
MANUAL C/C++
13Henry Hernandez
IDENTIFICADORES
Un identificador es una secuencia de caracteres alfabéticos, numéricos y el guión bajo. Con
ellos podemos dar nombre a variables, constantes, tipos de dato, nombres de funciones o
procedimientos, etcétera. Cada lenguaje de programación tiene sus propias características
del tamaño del identificador; el estándar de lenguaje C no especifica un límite de tamaño
para un identificador, pero para ciertas implementaciones de C11 sólo los primeros 31
caracteres son significativos (ANSI C). El programador tiene libertad para darle cualquier
nombre a un identificador, siguiendo estas reglas:
1. Debe comenzar con una letra (A aZ)mayúscula o minúscula y no puede contener espacios
en blanco.
En lenguaje C, el carácter “_” (guión bajo) es considerado como letra, por lo que se puede
utilizar como primer carácter.
2. El lenguaje C distingue mayúsculas de minúsculas porque tienen diferente código ASCII.
3. Letras, dígitos y el carácter guión bajo están permitidos después del primer carácter.
4. No pueden existir dos identificadores iguales, es decir, dos elementos de un programa no
pueden nombrarse de la misma forma. Sin embargo, un identificador puede aparecer más
de una vez en un programa.
5. No se puede utilizar una palabra reservada como identificador, sin embargo, los
identificadores estándar se pueden redefinir.
6. En lenguaje C existen identificadores que podrían tener uno o varios puntos, tales como:
persona.apellidoPaterno
El punto indica el acceso a un campo de una estructura.
Sugerencias:
1. El identificador debe tener un nombre que sea significativo, es decir, que dé una idea de
la información que almacena.
2. No utilizar nombres muy largos, es mejor utilizar abreviaturas estándar para que éstos
tengan una longitud razonable.
3. En lenguaje C es usual escribir variables en minúscula, dejando las mayúsculas para las
constantes. En
los casos de nombres compuestos se suele poner la inicial de la segunda palabra en
mayúscula.
MANUAL C/C++
14Henry Hernandez
DECLARACIÓN DE VARIABLES EN C/C++
Una característica de C++, es la necesidad de declarar las variables que se usarán en un
programa. Esto resulta chocante para los que se aproximan al C++ desde otros lenguajes de
programación en los que las variables de crean automáticamente la primera vez que se
usan. Se trata, es cierto, de una característica de bajo nivel, más cercana al ensamblador
que a lenguajes de alto nivel, pero en realidad una característica muy importante y útil de
C++, ya que ayuda a conseguir códigos más compactos y eficaces, y contribuye a facilitar la
depuración y la detección y corrección de errores y a mantener un estilo de programación
elegante.
Uno de los errores más comunes en lenguajes en los que las variables se crean de forma
automática se produce al cometer errores ortográficos. Por ejemplo, en un programa
usamos una variable llamada prueba, y en un punto determinado le asignamos un nuevo
valor, pero nos equivocamos y escribimos prueba. El compilador o intérprete no detecta el
error, simplemente crea una nueva variable, y continúa como si todo estuviese bien.
En C++ esto no puede pasar, yaque antes de usar cualquier variable es necesario declararla,
y si por error usamos una variable que no ha sido declarada, se producirá un error de
compilación.
La declaración de variables es uno de los tipos de sentencia de C++. La prueba más clara de
esto es que la declaración terminará con un ";". Sintaxis:
También es posible inicializar las variables dentro de la misma declaración. Por ejemplo:
int a = 1234;
bool seguir = true, encontrado;
Declararía las variables a, seguir y encontrado; y además iniciaría los valores de a y seguir
con los valores 1234 y true, respectivamente.
En C++, contrariamente a lo que sucede con otros lenguajes de programación, las variables
no inicializadas tienen un valor indeterminado (con algunas excepciones que veremos más
tarde), y contienen lo que normalmente se denomina "basura". Cuando se declara una
variable se reserva un espacio de memoria para almacenarla, pero no se hace nada con el
contenido de esa memoria, se deja el valor que tuviera previamente, y ese valor puede
interpretarse de distinto modo, dependiendo del tipo.
<Tipo> <lista de variables>;
MANUAL C/C++
15Henry Hernandez
ALMACENAMIENTO EN MEMORIA
A continuación, se muestran algunos ejemplos de declaración de variables en lenguaje C.
Ejemplo 1: Ladeclaración de una variable para almacenar laedad de una persona seescribe:
int edad;
Ejemplo 2: Para declarar varias variables del mismo tipo de dato se puede escribir:
int edad;
int numero_de_hijos;
Ejemplo 3: O también, en la misma línea separadas por el carácter coma (,):
int edad, numero_de_hijos;
MANUAL C/C++
16Henry Hernandez
Ejemplo 4: Si se desea declarar una variable para almacenar un número entero y que,
inicialmente, contenga el valor 35, se debe escribir:
int numero = 35;
Ejemplo 5: A continuación, se muestra la declaración de una variable para almacenar una
letra del alfabeto y que, inicialmente, contenga el valor 'Z':
char letra = 'Z';
ARREGLOS
Para declarar una variable que pueda almacenar el nombre de una persona y que,
inicialmente, contenga el valor "Isabel", escribiremos:
char nombre[7] = "Isabel";
Un dato de tipo cadena es un dato compuesto (estructurado), debido a que está formado
por una agrupación de caracteres. Pues bien, dicha agrupación se define por medio de un
array. Un array agrupa, bajo el mismo nombre de variable, a una colección de elementos
(datos) del mismo tipo.
Para declarar un array de caracteres, después del identificador de la variable, se tiene que
escribir, entre corchetes "[]", el número de caracteres que se van a almacenar en el array,
más uno. Por tanto, en este caso, puesto que "Isabel" tiene seis caracteres, hay que escribir
un 7 entre los corchetes.
MANUAL C/C++
17Henry Hernandez
Se tiene que escribir un número más, porque en la memoria se va a reservar espacio para
los seis caracteres de la cadena "Isabel", más uno, conocido éste como el carácter nulo, el
cual se representa mediante una barra invertida y un cero (0). El sistema se encarga de
"poner" dicho carácter, que indica el fin de la cadena.
Por consiguiente, en la memoria se almacenarán siete caracteres consecutivos:
Los caracteres del array pueden ser referenciados mediante el identificador del mismo,
seguido de un número entre corchetes. A dicho número, de manera formal, se le llama
"índice", y puede oscilarentre el valor 0 y n-1, siendo n el número de caracteres que pueden
ser almacenados en memoria en el array, en este caso 7.
<nombre_de_la_variable>[<índice>]
Por ejemplo, nombre[3] hace referencia al espacio de memoria donde está el carácter 'b'.
Si se declara la variable de tipo cadena:
char nombre[7] = "June";
En memoria tendremos:
MANUAL C/C++
18Henry Hernandez
Fíjese que, en esta ocasión, el array de caracteres nombre ha sido inicializado con el valor
"June". De manera que, el fin de la cadena se encuentra en nombre[4], y no en el último
espacio de memoria reservado para el array, ya que, "June" tiene, solamente, cuatro
caracteres.
ESTRUCTURAS
Las estructuras son el segundo tipo de datos estructurados que veremos (valga la
redundancia).
Al contrario que los arrays, las estructuras nos permiten agrupar varios datos, que
mantengan algún tipo de relación, aunque sean de distinto tipo, permitiendo manipularlos
todos juntos, usando un mismo identificador, o cada uno por separado.
Las estructuras son llamadas también muy a menudo registros, o en inglés records. Tienen
muchos aspectos en común con los registros usados en bases dedatos. Y siguiendolamisma
analogía, cada objeto de una estructura se denomina a menudo campo, o field.
Sintaxis:
struct [<identificador>] {
[<tipo> <nombre_objeto>[,<nombre_objeto>,...]];
} [<objeto_estructura>[,<objeto_estructura>,...];
MANUAL C/C++
19Henry Hernandez
El identificador de la estructura es un nombre opcional para referirse a la estructura.
Los objetos de estructura son objetos declarados del tipo de la estructura, y su inclusión
también es opcional. Sin bien, aún siendo ambos opcionales, al menos uno de estos
elementos debe existir.
En el interior de una estructura, entre las llaves, se pueden definir todos los elementos que
consideremos necesarios, del mismo modo que se declaran los objetos.
Las estructuras pueden referenciarse completas, usando su nombre, como hacemos con los
objetos que ya conocemos, y también se puede acceder a los elementos definidos en el
interior de la estructura, usando el operador de selección (.), un punto.
Una vez definida una estructura, es decir, si hemos especificado un nombre para ella, se
puede usar igual que cualquier otro tipo de C++. Esto significa que se pueden declarar más
objetos del tipo de estructura en cualquier parte del programa. Para ello usaremos la forma
normal de declaración de objetos, es decir:
[struct] <identificador> <objeto_estructura>
[,<objeto_estructura>...];
En C++ la palabra struct es opcional en la declaración de objetos, al contrario de lo que
sucede en C, en el que es obligatorio usarla.
Ejemplo:
ejemplo define la estructura Persona y declara a Fulanito como un objeto de ese tipo. Para
acceder al nombre de Fulanito, por ejemplo para visualizarlo, usaremos la forma:
cout << Fulanito.Nombre;
FUNCIONES EN EL INTERIOR DE ESTRUCTURAS
MANUAL C/C++
20Henry Hernandez
C++, permite incluir funciones en el interior de las estructuras. Normalmente estas
funciones tienen la misión de manipular los datos incluidos en la estructura, y su uso está
muy relacionado con la programación orientada a objetos.
Aunque esta característica se usa casi exclusivamente con las clases, como veremos más
adelante, también puede usarse en las estructuras. De hecho, en C++, las diferencias entre
estructuras y clases son muy tenues.
Dos funciones muy particulares son las de inicialización, o constructor, y el destructor.
Veremos con más detalle estas funciones cuando asociemos las estructuras y los punteros.
El constructor es una función sin tipo de retorno y con el mismo nombre que la estructura.
El destructor tiene la misma forma, salvo que el nombre va precedido el símbolo "~".
Nota: para aquellos que usen un teclado español, el símbolo "~" se obtiene pulsando las
teclas del teclado numérico 1, 2, 6, mientras se mantiene pulsada la tecla ALT, ([ALT]+126).
También mediante la combinación [Atl Gr]+[4] y un espacio (la tecla [4] de la zona de las
letras, no del teclado numérico).
Veamos un ejemplo sencillo para ilustrar el uso de constructores:
Forma 1:
MANUAL C/C++
21Henry Hernandez
Forma 2:
Si no usáramos un constructor, los valores de x e y para Punto1 y Punto2 estarían
indeterminados, contendrían la "basura" que hubiese en la memoria asignada a estas
estructuras durante la ejecución. Con las estructuras éste será el caso más habitual, ya que
sinecesitamos usarconstructores para asignarvalores iniciales,serámucho más lógico usar
clases que estructuras.
Mencionar aquí, sólo a título de información, que el constructor no tiene por qué ser único.
Se pueden definir varios constructores, pero veremos esto mucho mejor y con más detalle
cuando veamos las clases.
Usando constructores nos aseguramos los valores iniciales para los elementos de la
estructura. Veremos que esto puede ser una gran ventaja, sobre todo cuando combinemos
estructuras con punteros, en capítulos posteriores.
También podemos incluir otras funciones, que sedeclaran y definen como las funciones que
ya conocemos.
MANUAL C/C++
22Henry Hernandez
Otro ejemplo:
En este ejemplo podemos ver cómo sedefine una estructura con dos campos enteros, y dos
funciones para modificar y leer sus valores. El ejemplo es muy simple, pero las funciones de
guardar valores sepueden elaborar para que no permitan determinados valores, o para que
hagan algún tratamiento de los datos.
Por supuesto se pueden definir otras funciones y también constructores más elaborados e
incluso, redefinir operadores. Y en general, las estructuras admiten cualquiera de las
características de las clases, siendo en muchos aspectos equivalentes.
Veremos estas características cuando estudiemos las clases, y recordaremos cómo
aplicarlas a las estructuras.
INICIALIZACIÓN DE ESTRUCTURAS
De un modo parecido al que se inicializan los arrays, se pueden inicializar estructuras, tan
sólo hay que tener cuidado con las estructuras anidadas. Por ejemplo:
MANUAL C/C++
23Henry Hernandez
Cada nueva estructura anidada deberá inicializarse usando la pareja correspondiente de
llaves "{}", tantas veces como sea necesario.
ARRAYS DE ESTRUCTURAS
Lacombinación de las estructuras con los arrays proporciona una potente herramienta para
el almacenamiento y manipulación de datos.
Ejemplo:
MANUAL C/C++
24Henry Hernandez
Vemos en este ejemplo lo fácil que podemos declarar el array Plantilla que contiene los
datos relativos a doscientas personas.
Podemos acceder a los datos de cada uno de ellos:
cout << Plantilla[43].Direccion;
O asignar los datos de un elemento de la plantilla a otro:
Plantilla[0] = Plantilla[99];
ESTRUCTURAS ANIDADAS
También está permitido anidar estructuras, con lo cual se pueden conseguir
superestructuras muy elaboradas.
MANUAL C/C++
25Henry Hernandez
Ejemplo:
En general, no es una práctica corriente definir estructuras dentro de estructuras, ya que
tienen un ámbito local, y para acceder a ellas se necesita hacer referencia a la estructura
más externa.
Por ejemplo para declarar un objeto del tipo stNombre hay que utilizar el operador de
acceso (::):
stPersona::stNombre NombreAuxiliar;
Sin embargo para declarar un objeto de tipo stDireccion basta con declararla:
stDireccion DireccionAuxiliar;
MANUAL C/C++
26Henry Hernandez
BIBLIOTECAS O LIBRERÍAS EN C++. DECLARACIÓN Y USO DE LIBRERÍAS. INCLUDE EN C++
Junto con los compiladores de C y C++, seincluyen ciertos archivos llamados bibliotecas mas
comúnmente librerías. Las bibliotecas contienen el código objeto de muchos programas
que permiten hacer cosas comunes, como leer el teclado, escribir en la pantalla, manejar
números, realizar funciones matemáticas, etc.
Las bibliotecas están clasificadas por el tipo de trabajos que hacen, hay bibliotecas de
entrada y salida, matemáticas, de manejo de memoria, de manejo de textos y como
imaginarás existen muchísimas librerías disponibles y todas con una función especifica.
Nota: Existe una discusión sobre el nombre de estos archivos. Muchos personas consideran
que el nombre adecuado es archivos de biblioteca, y estan en lo correcto. Sin embargo, la
mayoría llamamos a estos archivos librerías, y también me incluyo entre estos. El error
proviene del nombre en inglés, que es library. Este término se traduce como biblioteca, y
no como librería. De este modo a lo largo de esta sección las llamaré de cualquiera de las
dos formas, para estár mas claros.
Hay un conjunto de bibliotecas (o librerías) muy especiales, que se incluyen con todos los
compiladores de C y de C++. Son las librerías (o bibliotecas) ANSI o estándar. También hay
librerías que no son parte del estándar pero en esta sección sólo usaremos algunas
bibliotecas (o librerías) ANSI.
Nota 2: Sé que esto pinta aburrido, pero es muy útil y realmente las libreróas nos facilitan
enormemente el trabajo de programar. Recuerda que antes de hablar librerías y demás es
necesario dominar algunos conceptos de fundamentación en general y otros temas
importantes (ciclos, condicionales y demás) Ahora veamos algunas librerías y como es su
sintaxis.
¿QUÉ SON EXACTAMENTE LAS LIBRERÍAS?
En C++, se conoce como librerías (o bibliotecas) a cierto tipo de archivos que podemos
importar o incluir en nuestro programa. Estos archivos contienen las especificaciones de
diferentes funcionalidades ya construidas y utilizables que podremos agregar a nuestro
programa, como por ejemplo leer del teclado o mostrar algo por pantalla entre muchas
otras más.
Al poder incluir estas librerías con definiciones de diferentes funcionalidades podremos
ahorrarnos gran cantidad de cosas, imaginemos por ejemplo que cada vez que necesitemos
leer por teclado, debamos entonces crear una función que lo haga (algo realmente
complejo), al poder contar con las librerías en C++, podremos hacer uso de una gran
MANUAL C/C++
27Henry Hernandez
variedad de funciones que nos facilitaran la vida y aumentarán la modularidad de nuestros
códigos.
Las librerías no son únicamente archivos externos creados por otros, también es posible
crear nuestras propias librerías y utilizarlas en nuestros programas. Las librerías pueden
tener varias extensiones diferentes, las más comunes son: .lib, .bpl, .a, .dll, .h y algunas más
ya no tan comunes.
En conclusión: Las librearías son archivos (no siempre externos) que nos permiten llevar a
cabo diferentes tareas sin necesidadde preocuparnos por cómo sehacen sino simplemente
entender cómo usarlas. Las librearías en C++ permiten hacer nuestros programas más
modulares y reutilizables, facilitando además crear programas con funcionalidades
bastante complejas en unas pocas líneas de código.
SINTAXIS PARA DECLARAR LIBRERÍAS EN C++
La declaración de librerías, tanto en C como en C++, se debe hacer al principio de todo
nuestro código, antes de la declaración de cualquier función o línea de código, debemos
indicarle al compilador que librerías usar, para el saber que términos estaran correctos en
la escritura de nuestro código y cuáles no. La sintaxis es la siguiente: #include <nombre de
la librería> o alternativamente #include "nombre de la librería". Cualquiera de las 2 formas
es válida en C++ (no estoy seguro si en C sea válido), ten en cuenta que siempre el nombre
de la librería debe ir entre " y " o entre < y >. En tu código puedes declarar todas las librerías
que quieras aunque en realidad no tienen sentido declarar una librería que no vas a usar en
tu programa, sin embargo no existe límite para esto.
LIBRERÍAS ESTANDAR DE C++ (STANDAR TEMPLATE LIBRARY O STL)
A continuación pondré algunas delas librerías de uso más común de C++y que forman parte
de las librerías estandar de este lenguaje.
 fstream:
Flujos hacia/desde ficheros. Permite la manipulación de archivos desde el programar, tanto
leer como escribir en ellos.
 iosfwd:
Contiene declaraciones adelantadas de todas las plantillas deflujos y sus typedefs estándar.
Por ejemplo ostream.
 iostream:
MANUAL C/C++
28Henry Hernandez
Parte del a STL que contiene los algoritmos estándar, es quizá la más usada e importante
(aunque no indispensable).
 La biblioteca list:
Parte de la STL relativa a contenedores tipo list; listas doblemente enlazadas
 math:
Contiene los prototipos de las funciones y otras definiciones para el uso y manipulación de
funciones matemáticas.
 memory:
Utilidades relativas a la gestión de memoria, incluyendo asignadores y punteros inteligentes
(auto_ptr).
"auto_ptr" es una clase que conforma la librería memory y permite un fácil manejo
de punteros y su destrucción automaticamente.
 Biblioteca new:
Manejo de memoria dinámica
 numeric:
Parte de la librería numérica de la STL relativa a operaciones numéricas.
 ostream:
Algoritmos estándar para los flujos de salida.
 queue:
Parte de la STL relativa a contenedores tipo queue (colas de objetos).
 Librería stdio:
Contiene los prototipos de las funciones, macros, y tipos para manipular datos de
entrada y salida.
 Librería stdlib:
Contiene los prototipos de las funciones, macros, y tipos para utilidades de uso general.
MANUAL C/C++
29Henry Hernandez
 string:
Parte de la STL relativa a contenedores tipo string; una generalización de las cadenas
alfanuméricas para albergar cadenas de objetos. Muy útil para el fácil uso de las cadenas de
caracteres, pues elimina muchas d elas dificultades que generan los char
 typeinfo:
Mecanismo de identificación de tipos en tiempo de ejecución
 vector:
Parte de la STL relativa a los contenedores tipo vector; una generalización de las matrices
unidimensionales C/C++
 forward_list
Esta librería es útil para implementar con gran facilidad listas enlazadas simples.
 list
Permite implementar listas doblemente enlzadas (listas enlazadas dobles) facilmente.
 iterator
Proporciona un conjunto de clases para iterar elementos.
 regex
Proporciona fácil acceso al uso de expresiones regulares para la comparación de patrones.
 thread
Útil para trabajar programación multihilos y crear múltiples hilos en nuestra aplicación.
BUCLES O CICLOS EN C
LA ESTRUCTURA CONDICIONAL IF... ELSE
La estructura condicional if ... else es la que nos permite tomar ese tipo de decisiones.
Traducida literalmente del inglés, se la podría llamar la estructura "si...si no", es decir, "si se
cumple la condición, haz esto, y sino, haz esto otro".
MANUAL C/C++
30Henry Hernandez
Un ejemplo sencillo sería el siguiente (no se trata de un programa completo, sino tan sólo
una porción de código):
LA ESTRUCTURA CONDICIONAL ABIERTA Y CERRADA SWITCH ... CASE
La estructura condicional switch ... case se utiliza cuando queremos evitarnos las llamadas
escaleras de decisiones. La estructura if nos puede proporcionar, únicamente, dos
resultados, uno para verdadero y otro para falso. Una estructura switch ... case, por su
parte, nos permite elegir entre muchas opciones. Ejemplo:
MANUAL C/C++
31Henry Hernandez
Laestructura anterior, de realizarsecon sentencias if,necesitaríacuatro de ellas,resultando
un enorme bloque muy difícil de leer. En la mayoría de los casos, además, la sentencia
switch proporciona una ganancia en velocidad del código, pues permite al compilador
trabajar en base a que se trata de una decisión múltiple para una única variable, cosa que
con sentencias if el compilador no tiene por qué detectar.
Como vemos, para cada valor de la variable se ejecuta un bloque de sentencias distinto, en
el que no necesitamos llaves. Hay un caso especial, default, que se ejecuta si ningún otro
corresponde, y que no es necesario poner. Es, en todo, equivalente al bloque else de una
sentencia if.
Las sentencias break son muy importantes, ya que el comportamiento normal de un bloque
switch es ejecutarlo todo desde la etiqueta case que corresponda hasta el final. Por ello, si
no queremos que se nos ejecute más de un bloque, pondremos sentencias break al final de
cada bloque excepto el último.
MANUAL C/C++
32Henry Hernandez
Es decir, las etiquetas case son puntos de entrada de la ejecución, y no implican que al
acabarse el bloque case la ejecución salte al final del bloque switch. Las etiquetas case
siguientes a la que hemos utilizado para entrar son, sencillamente, ignoradas.
EL BUCLE WHILE
El bucle while sirve para ejecutar código reiteradas veces.
La condición debe de ser una expresión lógica, similar a la de la sentencia if. Primero se
evalúa la condición. Si el resultado es verdadero, se ejecuta el bloque de código. Luego se
vuelve a evaluar la condición, y en caso de dar verdadero se vuelve a ejecutar el bloque. El
bucle se corta cuando la condición da falso.
Ejemplo: imprimir los números de 0 a 99:
MANUAL C/C++
33Henry Hernandez
EL BUCLE FOR
El bucle for es un bucle muy flexible y a la vez muy potente ya que tiene varias formas
interesantes de implementarlo, su forma más tradicional es la siguiente:
Inicialización: en esta parte se inicia la variable que controla el bucle y es la primera
sentencia que ejecuta el bucle. Sólo se ejecuta una vez ya que solo se necesita al principio
del bucle.
Expresión condicional: al igual que en el bucle while, esta expresión determina si el bucle
continuará ejecutándose o no.
Incremento: es una sentenciaque ejecuta alfinal de cadaiteración del bucle. Por lo general,
se utiliza para incrementar la variable con que se inicio el ciclo. Luego de ejecutar el
incremento, el bucle revisa nuevamente la condición, si es verdadera tiene lugar una
ejecución más del cuerpo del ciclo, si es falsa se termina el ciclo y así.
Aquí se muestra el mismo ejemplo visto para el bucle while, pero implementado con un
bucle for:
MANUAL C/C++
34Henry Hernandez
EL BUCLE DO...WHILE
El bucle do...while es un bucle que, por lo menos, se ejecuta una vez. Do significa
literalmente "hacer", y while significa "mientras"
Su forma es esta:
La verdad es que este ejemplo puede resultar un poco absurdo, pero es bastante intuitivo.
El código del bucle asignaun valor aleatorio a lavariable definida anteriormente, y mientras
esa variable no tenga el valor 25, el bucle sigue ejecutándose.
MANUAL C/C++
35Henry Hernandez
. Sólo en ocasiones muy excepcionales será recomendado eluso del goto alcrear iteraciones
muy complejas. Sin embargo, con el pasar de los años este comando ya ha quedado
prácticamente descartado del lenguaje de los programadores.
FICHEROS
TIPO FILE:
C define la estructura de datos FILE en el fichero de cabecera stdio.h para el manejo de
ficheros. Nosotros siempre usaremos punteros a estas estructuras.
La definición de ésta estructura depende del compilador, pero en general mantienen un
campo con la posición actual de lectura/escritura, un buffer para mejorar las prestaciones
de acceso al fichero y algunos campos para uso interno.
FUNCIÓN FOPEN:
Sintaxis:
FILE *fopen(char *nombre, char *modo);
Esta función sirve para abrir y crear ficheros en disco. El valor de retorno es un puntero a
una estructura FILE. Los parámetros de entrada son:
Nombre: una cadena que contiene un nombre de fichero válido, esto depende del sistema
operativo que estemos usando. El nombre puede incluir el camino completo.
Modo: especifica en tipo de fichero que se abrirá o se creará y el tipo de datos que puede
contener, de texto o binarios:
r: sólo lectura. El fichero debe existir.
w: se abre para escritura, se crea un fichero nuevo o se sobrescribe si ya existe.
a: añadir, se abre para escritura, el cursor se sitúa al final del fichero. Si el fichero no existe,
se crea.
r+: lectura y escritura. El fichero debe existir.
w+: lectura y escritura, se crea un fichero nuevo o se sobrescribe si ya existe.
a+: añadir, lectura y escritura, el cursor se sitúa al final del fichero. Si el fichero no existe, se
crea.
t: tipo texto, si no se especifica "t" ni "b", se asume por defecto que es "t"
MANUAL C/C++
36Henry Hernandez
b: tipo binario.
FUNCIÓN FCLOSE:
Sintaxis:
int fclose(FILE *fichero);
Es importante cerrar los ficheros abiertos antes de abandonar la aplicación. Esta función
sirve para eso. Cerrar un fichero almacena los datos que aún están en el buffer de memoria,
y actualiza algunos datos de la cabecera del fichero que mantiene el sistema operativo.
Además permite que otros programas puedan abrir el fichero para su uso. Muy a menudo,
los ficheros no pueden ser compartidos por varios programas.
Un valor de retorno cero indica que el fichero ha sido correctamente cerrado, si ha habido
algún error, el valor de retorno es la constante EOF. El parámetro es un puntero a la
estructura FILE del fichero que queremos cerrar.
TRES FUNCIONES JUNTAS (FILE,FOPEN, FCLOSE)
Ahí podemos ver cómo hacemos una comprobación para ver si lo creamos bien
FUNCIÓN FGETC:
Sintaxis:
int fgetc(FILE *fichero);
MANUAL C/C++
37Henry Hernandez
Esta función lee un carácter desde un fichero.
El valor de retorno es el carácter leído como un unsigned char convertido a int. Si no hay
ningún carácter disponible, el valor de retorno es EOF. El parámetro es un puntero a una
estructura FILE del fichero del que se hará la lectura.
FUNCIÓN FPUTC:
Sintaxis:
int fputc(int caracter, FILE *fichero);
Esta función escribe un carácter a un fichero.
El valor de retorno es el carácter escrito, si la operación fue completada con éxito, en caso
contrario será EOF. Los parámetros de entrada son el carácter a escribir, convertido a int y
un puntero a una estructura FILE del fichero en el que se hará la escritura.
FUNCIÓN FEOF:
Sintaxis:
int feof(FILE *fichero);
Esta función sirve para comprobar si se ha alcanzado el final del fichero. Muy
frecuentemente deberemos trabajar con todos los valores almacenados en un archivo de
forma secuencial, la forma que suelen tener los bucles para leer todos los datos de un
archivo es permanecer leyendo mientras no se detecte el fin de fichero. Esta función suele
usarse como prueba para verificar si se ha alcanzado o no ese punto.
El valor de retorno es distinto de cero sólo si no se ha alcanzado el fin de fichero. El
parámetro es un puntero a la estructura FILE del fichero que queremos verificar.
FUNCIÓN REWIND:
Sintaxis:
void rewind(FILE *fichero)
Es una función heredada de los tiempos de las cintas magnéticas. Literalmente significa
"rebobinar", y hace referencia a que para volver al principio de un archivo almacenado en
cinta, había que rebobinarla. Eso es lo que hace ésta función, sitúa el cursor de
lectura/escritura al principio del archivo.
El parámetro es un puntero a la estructura FILE del fichero que queremos rebobinar.
MANUAL C/C++
38Henry Hernandez
FUNCIÓN FGETS:
Sintaxis:
char *fgets(char *cadena, int n, FILE *fichero);
Esta función está diseñada para leer cadenas de caracteres. Leerá hasta n-1 caracteres o
hasta que lea un retorno de línea. En este último caso, el carácter de retorno de línea
también es leído.
El parámetro n nos permite limitar la lectura para evitar derbordar el espacio disponible en
la cadena.
El valor de retorno es un puntero a la cadena leída, si se leyó con éxito, y es NULL si se
detecta elfinal del fichero o sihay un error. Los parámetros son: lacadena a leer, el número
de caracteres máximo a leer y un puntero a una estructura FILE del fichero del que se leerá.
FUNCIÓN FPUTS:
Sintaxis:
int fputs(const char *cadena, FILE *stream);
La función fputs escribe una cadena en un fichero. No se añade el carácter de retorno de
línea ni el carácter nulo final.
El valor de retorno es un número no negativo o EOF en caso de error. Los parámetros de
entrada son la cadena a escribir y un puntero a la estructura FILE del fichero donde se
realizará la escritura.
FUNCIÓN FREAD:
Sintaxis:
size_t fread(void *puntero, size_t tamaño, size_t nregistros, FILE *fichero);
Esta función está pensada para trabajar con registros de longitud constante. Es capaz de
leer desde un fichero uno o varios registros de la misma longitud y a partir de una dirección
de memoria determinada. El usuario es responsable de asegurarse de que hay espacio
suficiente para contener la información leída.
El valor de retorno es el número de registros leídos, no el número de bytes. Los parámetros
son: un puntero a la zona de memoria donde se almacenarán los datos leídos, el tamaño de
cada registro, el número de registros a leer y un puntero a la estructura FILE del fichero del
que se hará la lectura.
MANUAL C/C++
39Henry Hernandez
FUNCIÓN FWRITE:
Sintaxis:
Esta función también está pensada para trabajar con registros de longitud constante y
forma pareja con fread. Es capaz de escribir hacia un fichero uno o varios registros de la
misma longitud almacenados a partir de una dirección de memoria determinada.
El valor de retorno es el número de registros escritos, no el número de bytes. Los
parámetros son: un puntero a la zona de memoria donde se almacenarán los datos leídos,
el tamaño de cada registro, el número de registros a leer y un puntero a la estructura FILE
del fichero del que se hará la lectura.
FUNCIÓN FPRINTF:
Sintaxis:
int fprintf(FILE *fichero, const char *formato, ...);
La función fprintf funciona igual que printf en cuanto a parámetros, pero la salida se dirige
a un fichero en lugar de a la pantalla.
FUNCIÓN FSCANF:
Sintaxis:
int fscanf(FILE *fichero, const char *formato, ...);
La función fscanf funciona igual que scanf en cuanto a parámetros, pero la entrada se toma
de un fichero en lugar del teclado.
FUNCIÓN FFLUSH:
Sintaxis:
int fflush(FILE *fichero);
Esta función fuerza la salida de los datos acumulados en el buffer de salida del fichero. Para
mejorar las prestaciones del manejo de ficheros se utilizan buffers, almacenes temporales
de datos en memoria, las operaciones de salida se hacen a través del buffer, y sólo cuando
el buffer se llena se realiza la escritura en el disco y se vacía el buffer. En ocasiones nos hace
falta vaciar ese buffer de un modo manual, para eso sirve ésta función.
MANUAL C/C++
40Henry Hernandez
El valor de retorno es cero si la función se ejecutó con éxito, y EOF si hubo algún error. El
parámetro de entrada es un puntero a la estructura FILE del fichero del que se quiere vaciar
el buffer. Si es NULL se hará el vaciado de todos los ficheros abiertos.
FUNCIÓN FSEEK:
Sintaxis:
int fseek(FILE *fichero, long int desplazamiento, int origen);
Esta función sirve para situar el cursor del fichero para leer o escribir en el lugar deseado.
El valor de retorno es cero si la función tuvo éxito, y un valor distinto de cero si hubo algún
error.
Los parámetros de entrada son: un puntero a una estructura FILE del fichero en el que
queremos cambiar el cursor de lectura/escritura, el valor del desplazamiento y el punto de
origen desde el que se calculará el desplazamiento.
El parámetro origen puede tener tres posibles valores:
SEEK_SET el desplazamiento se cuenta desde el principio del fichero. El primer byte del
fichero tiene un desplazamiento cero.
SEEK_CUR el desplazamiento se cuenta desde la posición actual del cursor.
SEEK_END el desplazamiento se cuenta desde el final del fichero.
FUNCIÓN FTELL:
Sintaxis:
long int ftell(FILE *fichero);
La función ftell sirve para averiguar la posición actual del cursor de lectura/escritura de un
fichero.
El valor de retorno será esa posición, o -1 si hay algún error.
El parámetro de entrada es un puntero a una estructura FILE del fichero del que queremos
leer la posición del cursor de lectura/escritura.
FUNCIONES:
Las funciones son un conjunto de procedimiento encapsulados en un bloque, usualmente
reciben parámetros, cuyos valores utilizan para efectuar operaciones y adicionalmente
MANUAL C/C++
41Henry Hernandez
retornan un valor. Esta definición proviene de la definición de función matemática la cual
posee un dominio y un rango, es decir un conjunto de valores que puede tomar y un
conjunto de valores que puede retornar luego de cualquier operación.
Complejo, en pequeños problemitas más sencillos, concentrándose en la solución por
separado, de cada uno de ellos.
En C, se conocen como funciones aquellos trozos de códigos utilizados para dividir un
programa con el objetivo que, cada bloque realice una tarea determinada.
En las funciones juegan un papel muy importe las variables, ya que como se ha dicho estas
pueden ser locales o globales.
Variables Globales: Estas se crean durante toda la ejecución del programa, y son globales,
ya que pueden ser llamadas, leídas, modificadas, etc; desde cualquier función. Se definen
antes del main().
Variables Locales: Estas, pueden ser utilizadas únicamente en la función que hayan sido
declaradas.
SINTAXIS DE UNA FUNCIÓN ES LA SIGUIENTE:
Donde:
Tipo_de_datos: Es el tipo de dato que devolverá esa función, que puede ser real, entera, o
tipo void(es decir que no devolverá ningún valor).
Nombre_de_la_funcion: Es el identificador que le damos a nuestra función, la cual debe
cumplir las reglas que definimos en un principio para los identificadores.
MANUAL C/C++
42Henry Hernandez
Tipo y nombre de argumentos: son los parámetros que recibe la función. Los argumentos
de una función no son más que variables locales que reciben un valor. Este valor se lo
enviamos al hacer la llamada a la función. Pueden existir funciones que no reciban
argumentos.
PASO DE PARÁMETROS
Las funciones pueden recibir datos como lo hemos observado, pero existen dos formas de
enviar los datos hacia una función por valor y por referencia, las cuales modifican en
diferente forma el comportamiento del programa.
POR VALOR
El paso por valor envía una copia de los parámetros a la función por lo tanto los cambios
que se hagan en ella no son tomados en cuenta dentro de la función main()
VARIABLES LOCALES Y GLOBALES
UNA VARIABLE LOCAL
Es aquella cuyo ámbito se restringe a la función que la ha declarado se dice entonces que la
variable es local a esa función. Esto implica que esa variable sólo va a poder ser manipulada
en dicha sección, y no se podrá hacer referencia fuera de dicha sección. Cualquier variable
que sedefina dentro de las llaves delcuerpo de una función seinterpreta como una variable
local a esa función.
UNA VARIABLE GLOBAL
Es aquella que se define fuera del cuerpo de cualquier función, normalmente al principio
del programa, después de la definición de los archivos de biblioteca (#include), de la
definición de constantes simbólicas y antes de cualquier función. El ámbito de una variable
globalson todas las funciones que componen elprograma, cualquier función puede acceder
a dichas variables para leer y escribir en ellas. Es decir, se puede hacer referencia a su
dirección de memoria en cualquier parde del programa.
MANUAL C/C++
43Henry Hernandez
ANEXOS
EJERCICIO DE ESTRUCTURA
MANUAL C/C++
44Henry Hernandez
FICHEROS
Ejer_violento1.0
MANUAL C/C++
45Henry Hernandez
EJERCICIOS SWITCH CICLOS Y FUNCIONES
Calculo del IR
MANUAL C/C++
46Henry Hernandez
Cajero automático

More Related Content

What's hot

Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Lenguaje de programacion_para_etiquetas_zpl_epl
Lenguaje de programacion_para_etiquetas_zpl_epl Lenguaje de programacion_para_etiquetas_zpl_epl
Lenguaje de programacion_para_etiquetas_zpl_epl David
 
Introducción a La Programación En C
Introducción a La Programación En CIntroducción a La Programación En C
Introducción a La Programación En Cpainni
 
Repaso del lenguaje
Repaso del lenguajeRepaso del lenguaje
Repaso del lenguajeg_torrealba
 
Eva luacion _parcial_computacion_2014-2015[1]2 jm
Eva luacion _parcial_computacion_2014-2015[1]2 jmEva luacion _parcial_computacion_2014-2015[1]2 jm
Eva luacion _parcial_computacion_2014-2015[1]2 jmCat Ayora Y Juan Montalvo
 
Introduccion al Turbo C++
Introduccion al Turbo C++Introduccion al Turbo C++
Introduccion al Turbo C++dasman
 
Formato de celdas
Formato de celdasFormato de celdas
Formato de celdasESPOCH
 
Curso de Lenguaje C
Curso de Lenguaje CCurso de Lenguaje C
Curso de Lenguaje Ctacubomx
 

What's hot (14)

Lenguaje C_Curso Secap
Lenguaje C_Curso SecapLenguaje C_Curso Secap
Lenguaje C_Curso Secap
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Lenguaje de programacion_para_etiquetas_zpl_epl
Lenguaje de programacion_para_etiquetas_zpl_epl Lenguaje de programacion_para_etiquetas_zpl_epl
Lenguaje de programacion_para_etiquetas_zpl_epl
 
Programacion c
Programacion cProgramacion c
Programacion c
 
Introducción a La Programación En C
Introducción a La Programación En CIntroducción a La Programación En C
Introducción a La Programación En C
 
PROGRAMACION EN C
PROGRAMACION EN CPROGRAMACION EN C
PROGRAMACION EN C
 
Repaso del lenguaje
Repaso del lenguajeRepaso del lenguaje
Repaso del lenguaje
 
C(++) programacion en c y c++
C(++)   programacion en c y c++C(++)   programacion en c y c++
C(++) programacion en c y c++
 
Eva luacion _parcial_computacion_2014-2015[1]2 jm
Eva luacion _parcial_computacion_2014-2015[1]2 jmEva luacion _parcial_computacion_2014-2015[1]2 jm
Eva luacion _parcial_computacion_2014-2015[1]2 jm
 
Introduccion al Turbo C++
Introduccion al Turbo C++Introduccion al Turbo C++
Introduccion al Turbo C++
 
Formato de celdas
Formato de celdasFormato de celdas
Formato de celdas
 
Programación en C
Programación en CProgramación en C
Programación en C
 
Curso de Lenguaje C
Curso de Lenguaje CCurso de Lenguaje C
Curso de Lenguaje C
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 

Viewers also liked

ใบความรู้+สำรวจกลุ่มสิ่งที่มีชีวิต2+ป.6+293+dltvscip6+54sc p06 f17-4page
ใบความรู้+สำรวจกลุ่มสิ่งที่มีชีวิต2+ป.6+293+dltvscip6+54sc p06 f17-4pageใบความรู้+สำรวจกลุ่มสิ่งที่มีชีวิต2+ป.6+293+dltvscip6+54sc p06 f17-4page
ใบความรู้+สำรวจกลุ่มสิ่งที่มีชีวิต2+ป.6+293+dltvscip6+54sc p06 f17-4pagePrachoom Rangkasikorn
 
How to create great boards
How to create great boardsHow to create great boards
How to create great boardsErich Stolz
 
Rompiendo el protocolo: Usos y abusos de TCP/IP
Rompiendo el protocolo: Usos y abusos de TCP/IPRompiendo el protocolo: Usos y abusos de TCP/IP
Rompiendo el protocolo: Usos y abusos de TCP/IPDaniel Torres
 
dance styles
dance stylesdance styles
dance styleskimvl
 
14 days Cuban Cardio fitness programme
14 days Cuban Cardio fitness programme 14 days Cuban Cardio fitness programme
14 days Cuban Cardio fitness programme Lazaro Almenares
 
SEMINARIO DE INFORMÁTICA- RESUMEN
SEMINARIO DE INFORMÁTICA- RESUMENSEMINARIO DE INFORMÁTICA- RESUMEN
SEMINARIO DE INFORMÁTICA- RESUMENcheflezcano
 
Algoritmos de ordenación grafos y caminos
Algoritmos de ordenación grafos y caminosAlgoritmos de ordenación grafos y caminos
Algoritmos de ordenación grafos y caminosJeiner Gonzalez Blanco
 
Sistema de tuberías
Sistema de tuberíasSistema de tuberías
Sistema de tuberíasWiwi Hdez
 
Mecanica de los Fluidos &lt;> "Tuberias"
Mecanica de los Fluidos &lt;> "Tuberias"Mecanica de los Fluidos &lt;> "Tuberias"
Mecanica de los Fluidos &lt;> "Tuberias"Juan_A_Pirela
 
Curso de Marketing, y sus implicaciones en la Promoción de Productos 2012
Curso de Marketing, y sus implicaciones en la Promoción de Productos 2012Curso de Marketing, y sus implicaciones en la Promoción de Productos 2012
Curso de Marketing, y sus implicaciones en la Promoción de Productos 2012Alberto Vivas
 
LABORATORIO N°5 (FLUJO EN SISTEMA DE TUBERIAS)-MECANICA DE FLUIDOS II- UNSAAC
LABORATORIO N°5 (FLUJO EN SISTEMA DE TUBERIAS)-MECANICA DE FLUIDOS II- UNSAACLABORATORIO N°5 (FLUJO EN SISTEMA DE TUBERIAS)-MECANICA DE FLUIDOS II- UNSAAC
LABORATORIO N°5 (FLUJO EN SISTEMA DE TUBERIAS)-MECANICA DE FLUIDOS II- UNSAACALEXANDER HUALLA CHAMPI
 

Viewers also liked (18)

ใบความรู้+สำรวจกลุ่มสิ่งที่มีชีวิต2+ป.6+293+dltvscip6+54sc p06 f17-4page
ใบความรู้+สำรวจกลุ่มสิ่งที่มีชีวิต2+ป.6+293+dltvscip6+54sc p06 f17-4pageใบความรู้+สำรวจกลุ่มสิ่งที่มีชีวิต2+ป.6+293+dltvscip6+54sc p06 f17-4page
ใบความรู้+สำรวจกลุ่มสิ่งที่มีชีวิต2+ป.6+293+dltvscip6+54sc p06 f17-4page
 
How to create great boards
How to create great boardsHow to create great boards
How to create great boards
 
Rompiendo el protocolo: Usos y abusos de TCP/IP
Rompiendo el protocolo: Usos y abusos de TCP/IPRompiendo el protocolo: Usos y abusos de TCP/IP
Rompiendo el protocolo: Usos y abusos de TCP/IP
 
dance styles
dance stylesdance styles
dance styles
 
Manual C/C++ Néstor Flores
Manual C/C++ Néstor FloresManual C/C++ Néstor Flores
Manual C/C++ Néstor Flores
 
Criptomonedas
CriptomonedasCriptomonedas
Criptomonedas
 
14 days Cuban Cardio fitness programme
14 days Cuban Cardio fitness programme 14 days Cuban Cardio fitness programme
14 days Cuban Cardio fitness programme
 
SEMINARIO DE INFORMÁTICA- RESUMEN
SEMINARIO DE INFORMÁTICA- RESUMENSEMINARIO DE INFORMÁTICA- RESUMEN
SEMINARIO DE INFORMÁTICA- RESUMEN
 
Manual de C/C++
Manual de C/C++Manual de C/C++
Manual de C/C++
 
Factores de riesgo
Factores de riesgoFactores de riesgo
Factores de riesgo
 
Tda y heaps
Tda y heapsTda y heaps
Tda y heaps
 
Algoritmos de ordenación grafos y caminos
Algoritmos de ordenación grafos y caminosAlgoritmos de ordenación grafos y caminos
Algoritmos de ordenación grafos y caminos
 
Sistema de tuberías
Sistema de tuberíasSistema de tuberías
Sistema de tuberías
 
Mecanica de los Fluidos &lt;> "Tuberias"
Mecanica de los Fluidos &lt;> "Tuberias"Mecanica de los Fluidos &lt;> "Tuberias"
Mecanica de los Fluidos &lt;> "Tuberias"
 
Curso de Marketing, y sus implicaciones en la Promoción de Productos 2012
Curso de Marketing, y sus implicaciones en la Promoción de Productos 2012Curso de Marketing, y sus implicaciones en la Promoción de Productos 2012
Curso de Marketing, y sus implicaciones en la Promoción de Productos 2012
 
Introducción a Internet de las Cosas
Introducción a Internet de las CosasIntroducción a Internet de las Cosas
Introducción a Internet de las Cosas
 
Cómo es el nuevo consumidor digital
Cómo es el nuevo consumidor digitalCómo es el nuevo consumidor digital
Cómo es el nuevo consumidor digital
 
LABORATORIO N°5 (FLUJO EN SISTEMA DE TUBERIAS)-MECANICA DE FLUIDOS II- UNSAAC
LABORATORIO N°5 (FLUJO EN SISTEMA DE TUBERIAS)-MECANICA DE FLUIDOS II- UNSAACLABORATORIO N°5 (FLUJO EN SISTEMA DE TUBERIAS)-MECANICA DE FLUIDOS II- UNSAAC
LABORATORIO N°5 (FLUJO EN SISTEMA DE TUBERIAS)-MECANICA DE FLUIDOS II- UNSAAC
 

Similar to Manual henry hernadez (20)

Programazion
ProgramazionProgramazion
Programazion
 
Programación en c y c++
Programación en c y c++Programación en c y c++
Programación en c y c++
 
Programación en c y c++
Programación en c y c++Programación en c y c++
Programación en c y c++
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
C
C C
C
 
Elemento1
Elemento1Elemento1
Elemento1
 
Evaluacion
EvaluacionEvaluacion
Evaluacion
 
Generalidades de la programacion
Generalidades de la programacionGeneralidades de la programacion
Generalidades de la programacion
 
Programación c
Programación cProgramación c
Programación c
 
taller psint.pdf
taller psint.pdftaller psint.pdf
taller psint.pdf
 
taller psint.pdf
taller psint.pdftaller psint.pdf
taller psint.pdf
 
1 entrada y salida estandar(1)
1 entrada y salida estandar(1)1 entrada y salida estandar(1)
1 entrada y salida estandar(1)
 
Programación en c
Programación en cProgramación en c
Programación en c
 
10 entrada y salida
10 entrada y salida10 entrada y salida
10 entrada y salida
 
Entrada de Datos
Entrada de DatosEntrada de Datos
Entrada de Datos
 
Sesion 1
Sesion 1Sesion 1
Sesion 1
 
Lenguaje c
Lenguaje c Lenguaje c
Lenguaje c
 
Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.
 
Operaciones de Entrada / Salida en C++
Operaciones de Entrada / Salida en C++Operaciones de Entrada / Salida en C++
Operaciones de Entrada / Salida en C++
 
Entrada y salida de datos en c
Entrada y salida de datos en cEntrada y salida de datos en c
Entrada y salida de datos en c
 

More from Estudiantes ISI_UCA (20)

Manual
ManualManual
Manual
 
Manual C/C++
Manual C/C++ Manual C/C++
Manual C/C++
 
Manual C/C++ Jason Martinez
Manual C/C++ Jason MartinezManual C/C++ Jason Martinez
Manual C/C++ Jason Martinez
 
Manual C-C++ Pablo
Manual C-C++ PabloManual C-C++ Pablo
Manual C-C++ Pablo
 
Manual C/C++ Carlos Diaz
Manual C/C++ Carlos Diaz Manual C/C++ Carlos Diaz
Manual C/C++ Carlos Diaz
 
Manual de usuario c
Manual de usuario  cManual de usuario  c
Manual de usuario c
 
Manual AGFV
Manual AGFVManual AGFV
Manual AGFV
 
Manual C / C++ Melvin
Manual C / C++ MelvinManual C / C++ Melvin
Manual C / C++ Melvin
 
Manual laboratorio de programación#1
Manual laboratorio de programación#1Manual laboratorio de programación#1
Manual laboratorio de programación#1
 
Manual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky BonillaManual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky Bonilla
 
Manual programación
Manual programaciónManual programación
Manual programación
 
Manual de usuario (C/C++)
Manual de usuario (C/C++)Manual de usuario (C/C++)
Manual de usuario (C/C++)
 
Manualito C/C++ - Leonardo Aquino
Manualito C/C++ - Leonardo AquinoManualito C/C++ - Leonardo Aquino
Manualito C/C++ - Leonardo Aquino
 
Manual de programación en C/C++
Manual de programación en C/C++Manual de programación en C/C++
Manual de programación en C/C++
 
Lenguaje de programacion en c
Lenguaje de programacion en cLenguaje de programacion en c
Lenguaje de programacion en c
 
Manual de c c++
Manual de c c++Manual de c c++
Manual de c c++
 
manualitoRodolfo
manualitoRodolfomanualitoRodolfo
manualitoRodolfo
 
Manual Francis Jarquin R
Manual Francis Jarquin RManual Francis Jarquin R
Manual Francis Jarquin R
 
Manual C/C++
Manual C/C++Manual C/C++
Manual C/C++
 
Manual c
Manual cManual c
Manual c
 

Recently uploaded

Tipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplosTipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplosandersonsubero28
 
Video sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptxVideo sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptxcarlosEspaaGarcia
 
TAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientosTAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientoscuentaparainvestigac
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptNombre Apellidos
 
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdfUC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdfrefrielectriccarlyz
 
Análisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECOAnálisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECOFernando Bravo
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalaciónQualityAdviceService
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologicaJUDITHYEMELINHUARIPA
 
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbb
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbbTema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbb
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbbantoniolfdez2006
 
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALESCAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALESJHONJAIROVENTURASAUC
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATevercoyla
 
ELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.pptELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.pptRobertoCastao8
 
entropia y neguentropia en la teoria general de sistemas
entropia y neguentropia en la teoria general de sistemasentropia y neguentropia en la teoria general de sistemas
entropia y neguentropia en la teoria general de sistemasDerlyValeriaRodrigue
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOeldermishti
 
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdfTRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdfVladimirWashingtonOl
 
Manual deresolucion de ecuaciones por fracciones parciales.pdf
Manual deresolucion de ecuaciones por fracciones parciales.pdfManual deresolucion de ecuaciones por fracciones parciales.pdf
Manual deresolucion de ecuaciones por fracciones parciales.pdfgonzalo195211
 
docsity-manzaneo-y-lotizacion para habilitacopm urbana
docsity-manzaneo-y-lotizacion para habilitacopm urbanadocsity-manzaneo-y-lotizacion para habilitacopm urbana
docsity-manzaneo-y-lotizacion para habilitacopm urbanaArnolVillalobos
 
5. MATERIALES petreos para concreto.pdf.
5. MATERIALES petreos para concreto.pdf.5. MATERIALES petreos para concreto.pdf.
5. MATERIALES petreos para concreto.pdf.davidtonconi
 
1. Equipos Primarios de una Subestaciones electricas
1. Equipos Primarios de una Subestaciones electricas1. Equipos Primarios de una Subestaciones electricas
1. Equipos Primarios de una Subestaciones electricasurAN077
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxwilliam801689
 

Recently uploaded (20)

Tipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplosTipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplos
 
Video sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptxVideo sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptx
 
TAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientosTAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientos
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
 
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdfUC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
 
Análisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECOAnálisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECO
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalación
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbb
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbbTema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbb
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbb
 
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALESCAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
ELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.pptELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
 
entropia y neguentropia en la teoria general de sistemas
entropia y neguentropia en la teoria general de sistemasentropia y neguentropia en la teoria general de sistemas
entropia y neguentropia en la teoria general de sistemas
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
 
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdfTRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
 
Manual deresolucion de ecuaciones por fracciones parciales.pdf
Manual deresolucion de ecuaciones por fracciones parciales.pdfManual deresolucion de ecuaciones por fracciones parciales.pdf
Manual deresolucion de ecuaciones por fracciones parciales.pdf
 
docsity-manzaneo-y-lotizacion para habilitacopm urbana
docsity-manzaneo-y-lotizacion para habilitacopm urbanadocsity-manzaneo-y-lotizacion para habilitacopm urbana
docsity-manzaneo-y-lotizacion para habilitacopm urbana
 
5. MATERIALES petreos para concreto.pdf.
5. MATERIALES petreos para concreto.pdf.5. MATERIALES petreos para concreto.pdf.
5. MATERIALES petreos para concreto.pdf.
 
1. Equipos Primarios de una Subestaciones electricas
1. Equipos Primarios de una Subestaciones electricas1. Equipos Primarios de una Subestaciones electricas
1. Equipos Primarios de una Subestaciones electricas
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 

Manual henry hernadez

  • 1. Henry moises Hernandez Espinoza Manual C/C++ Facilitador: Ing. Elsner B. González.
  • 2. MANUAL C/C++ 1Henry Hernandez Índice Estructura básica deun programa C/C++.................................................................................... 3 Lectura y escritura en c.......................................................................................................... 4 Funcion printf().................................................................................................................. 4 Función scanf() .................................................................................................................. 6 lectura y escritura C++........................................................................................................... 7 Uso del cout....................................................................................................................... 7 Uso del cin......................................................................................................................... 8 Tipos de datos en C/C++........................................................................................................ 9 Tipos de datos C++ numéricos enteros ................................................................................ 9 Tipos de datos numéricos reales........................................................................................11 Tipo lógico........................................................................................................................12 Tipo carácter extendido.....................................................................................................12 identificadores .....................................................................................................................13 Declaración de variables en C/C++.........................................................................................14 Almacenamientoen memoria...............................................................................................15 Arreglos...............................................................................................................................16 Estructuras...........................................................................................................................18 Funciones enel interior de estructuras...............................................................................19 Inicialización de estructuras...............................................................................................22 Arrays de estructuras ........................................................................................................23 Estructuras anidadas.........................................................................................................24 Bibliotecas olibrerías en C++. Declaración y uso de librerías. Include en C++............................26 ¿Qué son exactamente laslibrerías? ..................................................................................26 Sintaxis para declarar Libreríasen C++................................................................................27 Librerías Estandar de C++ (Standar Template Library o STL).................................................27 Bucles o Ciclos en c...............................................................................................................29 La estructura condicional IF...else......................................................................................29 La estructura condicional abierta y cerrada switch ... case...................................................30 El bucle while....................................................................................................................32 El bucle for.......................................................................................................................33 El bucle do...while.............................................................................................................34
  • 3. MANUAL C/C++ 2Henry Hernandez Ficheros...............................................................................................................................35 Tipo FILE:..........................................................................................................................35 Función fopen:..................................................................................................................35 Función fclose:..................................................................................................................36 Tres funcionesjuntas(file,fopen, fclose).............................................................................36 Función fgetc:...................................................................................................................36 Función fputc:...................................................................................................................37 Función feof:.....................................................................................................................37 Función rewind:................................................................................................................37 Función fgets:...................................................................................................................38 Función fputs:...................................................................................................................38 Función fread:...................................................................................................................38 Función fwrite:..................................................................................................................39 Función fprintf:.................................................................................................................39 Función fscanf:..................................................................................................................39 Función fflush:..................................................................................................................39 Función fseek:...................................................................................................................40 Función ftell:.....................................................................................................................40 Funciones:............................................................................................................................40 sintaxis de una funciónes la siguiente:...............................................................................41 Paso de Parámetros ..........................................................................................................42 Por Valor..........................................................................................................................42 Variables locales y globales ...................................................................................................42 Una variable local..............................................................................................................42 Una variable global............................................................................................................42 Anexos.....................................................................................................................................43 Ejercicio de estructura..........................................................................................................43 Ficheros...............................................................................................................................44 ejercicios switch ciclosy funciones ........................................................................................45
  • 4. MANUAL C/C++ 3Henry Hernandez ESTRUCTURA BÁSICA DE UN PROGRAMA C/C++ La mejor forma de aprender un lenguaje es programando con él; en la clase de laboratorio de programación I usaremos el IDE Code::Blocks.
  • 5. MANUAL C/C++ 4Henry Hernandez LECTURA Y ESCRITURA EN C Para poder leer y escribir datos en el lenguaje de programación C existen una serie de funciones agrupadas en un conjunto de librerías de código objeto, que constituyen la llamada biblioteca estándar del lenguaje. En el caso concreto de las funciones de entrada y salida (lectura y escritura), su archivo de cabecera es stdio.h. Existen varias funciones que realizan la entrada y salida de datos en el lenguaje de programación C, pero nos vamos a centrar solamente en dos de ellas: printf() y scanf(). FUNCION PRINTF() La función printf() sirve para escribir datos en la pantalla con un formato determinado.El prototipo de esta función es la siguiente:
  • 6. MANUAL C/C++ 5Henry Hernandez int printf(const char *formato, arg1, arg2, …, argn) donde: formato: Hace referencia a una cadena de caracteres que contiene información sobre el formato de salida. Arg1, arg2, …, argn: argumentos que representan los datos de salida La cadena de control puede constar de hasta tres tipos de información: por pantalla tal cual este escrito ' y las más importantes son 'n' que introduce un salto de línea, y 't' que introduce un tabulador. n ciertos caracteres precedidos del carácter tanto por ciento '%'. A continuación semuestra una tabla con estos especificadores de formato dependiendo del tipo de dato a los que representan: Tipo de dato Especificadores de formato Comentario Int %d Entero con signo Float %f Real con signo Char %c carácter Char [n] %s Cadena de caracteres
  • 7. MANUAL C/C++ 6Henry Hernandez FUNCIÓN SCANF() La función scanf() se pude considerar de alguna manera como la inversa de la función printf(), pues sirve para introducir datos desde el teclado con un formato determinado. El prototipo de esta función es el siguiente: int scanf(const char *formato, arg1, arg2, …, argn); donde:  formato: hace referencia a una cadena de caracteres (cadena de control) que contiene información sobre elformato de los datos que sevan aintroducir mediante el teclado.  arg1, arg2, …, argn: son los argumentos que representan los datos de entrada. La cadena de control puede constar de:  Especificadores de formato, que son ciertos caracteres precedido por el carácter tanto por ciento '%'.  Caracteres de espacio  una tabla con estos especificadores de formato dependiendo del tipo de dato a los que representan: Tipo de dato Especificadores de formato Comentario Int %d Entero con signo Float %f Real con signo Char %c carácter Char [n] %s Cadena de caracteres
  • 8. MANUAL C/C++ 7Henry Hernandez LECTURA Y ESCRITURA C++ USO DEL COUT Biblioteca de entrada y salida fluidas "iostream" En el contexto de C++ todo lo referente a "streams" puede visualizarse mejor si usamos un símil como un río o canal de agua. Imagina un canal por el que circula agua, si echamos al canal objetos que floten, estos se moverán hasta el final de canal, siguiendo el flujo del agua. Esta es la idea que se quiere transmitir cuando se llama "stream" a algo en C++. Por ejemplo, en C++ el canal de salida es cout, los objetos flotantes serán los argumentos que queremos extraer del ordenador o del programa, la salida del canal es la pantalla. Sintaxis: cout << <variable/constante> [<< <variable/constante>...]; Completando el símil, en la orden: cout << "hola" << " " << endl;
  • 9. MANUAL C/C++ 8Henry Hernandez Los operadores "<<" representarían el agua, y la dirección en que se mueve. Cualquier cosa que soltemos en el agua: "hola", " " o endl, seguirá flotando hasta llegar a la pantalla, y además mantendrán su orden. USO DEL CIN En esta biblioteca se definen algunas de las funciones aplicables a los "streams", pero aún no estamos en disposición de acceder a ellas. Baste decir de momento que existen cuatro "streams" predeterminados:  cin, canal de entrada estándar.  cout, canal de salida estándar.  cerr, canal de salida de errores. clog, canal de salida de diario o anotaciones. Sobre eluso de cin,que es el único canal de entrada predefinido, tenemos que aclararcómo se usa, aunque a lo mejor ya lo has adivinado. cin >> <variable> [>> <variable>...]; Donde cada variable irá tomando el valor introducido mediante el teclado. Los espacios y los retornos de línea actúan como separadores. Ejemplo:
  • 10. MANUAL C/C++ 9Henry Hernandez Escribir un programa que lea el nombre, la edad y el número de teléfono de un usuario y los muestre en pantalla. TIPOS DE DATOS EN C/C++ TIPOS DE DATOS C++ NUMÉRICOS ENTEROS Eltipo de dato numérico entero es un subconjunto finito de los números enteros del mundo real. Pueden ser positivos o negativos. En C++ los tipos de datos numéricos enteros son los siguientes:
  • 11. MANUAL C/C++ 10Henry Hernandez Tipo de Dato Descripción Número de bytes típico Rango short Entero corto 2 -32768 a 32767 int Entero 4 -2147483648 a +2147483647 long Entero largo 4 -2147483648 a +2147483647 char Carácter 1 -128 a 127 Con los tipos enteros pueden utilizarse los calificadores signed y unsigned. Estos calificadores indican si el número tiene signo o no. Si se usan solos, sin indicar el tipo de dato se asume int. Por ejemplo, las siguientes declaraciones son equivalentes: unsigned int x; equivale a: unsigned x;
  • 12. MANUAL C/C++ 11Henry Hernandez Usando estos calificadores podemos tener los siguientes tipos enteros: Podemos ver que los datos enteros de tipo signed son equivalentes a los enteros sin utilizar el calificador: signed int a; es equivalente a escribir int a; TIPOS DE DATOS NUMÉRICOS REALES El tipo de dato numérico real es un subconjunto finito de los números reales. Pueden ser positivos o negativos. En C++ los tipos de datos numéricos reales son los siguientes: Tipo de Dato Descripción Número de bytes típico Rango Tipo de Dato Descripción Número de bytes típico Rango signed short Entero corto 2 -32768 a 32767 unsigned short Entero corto sin signo 2 0 a 65535 signed int Entero 4 -2147483648 a +2147483647 unsigned int Entero sin signo 4 0 a 4294967295 signed long Entero largo 4 -2147483648 a +2147483647 unsigned long Entero largo sin signo 4 0 a 4294967295 signed char Carácter 1 -128 a 127 unsigned char Carácter sin signo 1 0 a 255
  • 13. MANUAL C/C++ 12Henry Hernandez float Real (Número en coma flotante) 4 Positivos: 3.4E-38 a 3.4E38 Negativos: -3.4E-38 a -3.4E38 double Real doble(Número en coma flotante de doble precisión) 8 Positivos: 1.7E-308 a 1.7E308 Negativos: -1.7E-308 a -1.7E308 long double Real doble largo 10 Positivos: 3.4E-4932 a 1.1E4932 Negativos: -3.4E-4932 a -1.1E4932 TIPO LÓGICO Los datos de este tipo sólo pueden contener dos valores: true ó false (verdadero ó falso). Si se muestran como enteros, el valor true toma el valor 1 y false el valor 0. Tipo de Dato Descripción Número de bytes típico Rango bool Dato de tipo lógico 1 0, 1 TIPO CARÁCTER EXTENDIDO Estetipo seutiliza para representar caracteres UNICODE.Utiliza 2 bytes a diferencia del tipo char que solo utiliza 1. Tipo de Dato Descripción Número de bytes típico Rango wchar_t Carácter Unicode 2 0 a 65535
  • 14. MANUAL C/C++ 13Henry Hernandez IDENTIFICADORES Un identificador es una secuencia de caracteres alfabéticos, numéricos y el guión bajo. Con ellos podemos dar nombre a variables, constantes, tipos de dato, nombres de funciones o procedimientos, etcétera. Cada lenguaje de programación tiene sus propias características del tamaño del identificador; el estándar de lenguaje C no especifica un límite de tamaño para un identificador, pero para ciertas implementaciones de C11 sólo los primeros 31 caracteres son significativos (ANSI C). El programador tiene libertad para darle cualquier nombre a un identificador, siguiendo estas reglas: 1. Debe comenzar con una letra (A aZ)mayúscula o minúscula y no puede contener espacios en blanco. En lenguaje C, el carácter “_” (guión bajo) es considerado como letra, por lo que se puede utilizar como primer carácter. 2. El lenguaje C distingue mayúsculas de minúsculas porque tienen diferente código ASCII. 3. Letras, dígitos y el carácter guión bajo están permitidos después del primer carácter. 4. No pueden existir dos identificadores iguales, es decir, dos elementos de un programa no pueden nombrarse de la misma forma. Sin embargo, un identificador puede aparecer más de una vez en un programa. 5. No se puede utilizar una palabra reservada como identificador, sin embargo, los identificadores estándar se pueden redefinir. 6. En lenguaje C existen identificadores que podrían tener uno o varios puntos, tales como: persona.apellidoPaterno El punto indica el acceso a un campo de una estructura. Sugerencias: 1. El identificador debe tener un nombre que sea significativo, es decir, que dé una idea de la información que almacena. 2. No utilizar nombres muy largos, es mejor utilizar abreviaturas estándar para que éstos tengan una longitud razonable. 3. En lenguaje C es usual escribir variables en minúscula, dejando las mayúsculas para las constantes. En los casos de nombres compuestos se suele poner la inicial de la segunda palabra en mayúscula.
  • 15. MANUAL C/C++ 14Henry Hernandez DECLARACIÓN DE VARIABLES EN C/C++ Una característica de C++, es la necesidad de declarar las variables que se usarán en un programa. Esto resulta chocante para los que se aproximan al C++ desde otros lenguajes de programación en los que las variables de crean automáticamente la primera vez que se usan. Se trata, es cierto, de una característica de bajo nivel, más cercana al ensamblador que a lenguajes de alto nivel, pero en realidad una característica muy importante y útil de C++, ya que ayuda a conseguir códigos más compactos y eficaces, y contribuye a facilitar la depuración y la detección y corrección de errores y a mantener un estilo de programación elegante. Uno de los errores más comunes en lenguajes en los que las variables se crean de forma automática se produce al cometer errores ortográficos. Por ejemplo, en un programa usamos una variable llamada prueba, y en un punto determinado le asignamos un nuevo valor, pero nos equivocamos y escribimos prueba. El compilador o intérprete no detecta el error, simplemente crea una nueva variable, y continúa como si todo estuviese bien. En C++ esto no puede pasar, yaque antes de usar cualquier variable es necesario declararla, y si por error usamos una variable que no ha sido declarada, se producirá un error de compilación. La declaración de variables es uno de los tipos de sentencia de C++. La prueba más clara de esto es que la declaración terminará con un ";". Sintaxis: También es posible inicializar las variables dentro de la misma declaración. Por ejemplo: int a = 1234; bool seguir = true, encontrado; Declararía las variables a, seguir y encontrado; y además iniciaría los valores de a y seguir con los valores 1234 y true, respectivamente. En C++, contrariamente a lo que sucede con otros lenguajes de programación, las variables no inicializadas tienen un valor indeterminado (con algunas excepciones que veremos más tarde), y contienen lo que normalmente se denomina "basura". Cuando se declara una variable se reserva un espacio de memoria para almacenarla, pero no se hace nada con el contenido de esa memoria, se deja el valor que tuviera previamente, y ese valor puede interpretarse de distinto modo, dependiendo del tipo. <Tipo> <lista de variables>;
  • 16. MANUAL C/C++ 15Henry Hernandez ALMACENAMIENTO EN MEMORIA A continuación, se muestran algunos ejemplos de declaración de variables en lenguaje C. Ejemplo 1: Ladeclaración de una variable para almacenar laedad de una persona seescribe: int edad; Ejemplo 2: Para declarar varias variables del mismo tipo de dato se puede escribir: int edad; int numero_de_hijos; Ejemplo 3: O también, en la misma línea separadas por el carácter coma (,): int edad, numero_de_hijos;
  • 17. MANUAL C/C++ 16Henry Hernandez Ejemplo 4: Si se desea declarar una variable para almacenar un número entero y que, inicialmente, contenga el valor 35, se debe escribir: int numero = 35; Ejemplo 5: A continuación, se muestra la declaración de una variable para almacenar una letra del alfabeto y que, inicialmente, contenga el valor 'Z': char letra = 'Z'; ARREGLOS Para declarar una variable que pueda almacenar el nombre de una persona y que, inicialmente, contenga el valor "Isabel", escribiremos: char nombre[7] = "Isabel"; Un dato de tipo cadena es un dato compuesto (estructurado), debido a que está formado por una agrupación de caracteres. Pues bien, dicha agrupación se define por medio de un array. Un array agrupa, bajo el mismo nombre de variable, a una colección de elementos (datos) del mismo tipo. Para declarar un array de caracteres, después del identificador de la variable, se tiene que escribir, entre corchetes "[]", el número de caracteres que se van a almacenar en el array, más uno. Por tanto, en este caso, puesto que "Isabel" tiene seis caracteres, hay que escribir un 7 entre los corchetes.
  • 18. MANUAL C/C++ 17Henry Hernandez Se tiene que escribir un número más, porque en la memoria se va a reservar espacio para los seis caracteres de la cadena "Isabel", más uno, conocido éste como el carácter nulo, el cual se representa mediante una barra invertida y un cero (0). El sistema se encarga de "poner" dicho carácter, que indica el fin de la cadena. Por consiguiente, en la memoria se almacenarán siete caracteres consecutivos: Los caracteres del array pueden ser referenciados mediante el identificador del mismo, seguido de un número entre corchetes. A dicho número, de manera formal, se le llama "índice", y puede oscilarentre el valor 0 y n-1, siendo n el número de caracteres que pueden ser almacenados en memoria en el array, en este caso 7. <nombre_de_la_variable>[<índice>] Por ejemplo, nombre[3] hace referencia al espacio de memoria donde está el carácter 'b'. Si se declara la variable de tipo cadena: char nombre[7] = "June"; En memoria tendremos:
  • 19. MANUAL C/C++ 18Henry Hernandez Fíjese que, en esta ocasión, el array de caracteres nombre ha sido inicializado con el valor "June". De manera que, el fin de la cadena se encuentra en nombre[4], y no en el último espacio de memoria reservado para el array, ya que, "June" tiene, solamente, cuatro caracteres. ESTRUCTURAS Las estructuras son el segundo tipo de datos estructurados que veremos (valga la redundancia). Al contrario que los arrays, las estructuras nos permiten agrupar varios datos, que mantengan algún tipo de relación, aunque sean de distinto tipo, permitiendo manipularlos todos juntos, usando un mismo identificador, o cada uno por separado. Las estructuras son llamadas también muy a menudo registros, o en inglés records. Tienen muchos aspectos en común con los registros usados en bases dedatos. Y siguiendolamisma analogía, cada objeto de una estructura se denomina a menudo campo, o field. Sintaxis: struct [<identificador>] { [<tipo> <nombre_objeto>[,<nombre_objeto>,...]]; } [<objeto_estructura>[,<objeto_estructura>,...];
  • 20. MANUAL C/C++ 19Henry Hernandez El identificador de la estructura es un nombre opcional para referirse a la estructura. Los objetos de estructura son objetos declarados del tipo de la estructura, y su inclusión también es opcional. Sin bien, aún siendo ambos opcionales, al menos uno de estos elementos debe existir. En el interior de una estructura, entre las llaves, se pueden definir todos los elementos que consideremos necesarios, del mismo modo que se declaran los objetos. Las estructuras pueden referenciarse completas, usando su nombre, como hacemos con los objetos que ya conocemos, y también se puede acceder a los elementos definidos en el interior de la estructura, usando el operador de selección (.), un punto. Una vez definida una estructura, es decir, si hemos especificado un nombre para ella, se puede usar igual que cualquier otro tipo de C++. Esto significa que se pueden declarar más objetos del tipo de estructura en cualquier parte del programa. Para ello usaremos la forma normal de declaración de objetos, es decir: [struct] <identificador> <objeto_estructura> [,<objeto_estructura>...]; En C++ la palabra struct es opcional en la declaración de objetos, al contrario de lo que sucede en C, en el que es obligatorio usarla. Ejemplo: ejemplo define la estructura Persona y declara a Fulanito como un objeto de ese tipo. Para acceder al nombre de Fulanito, por ejemplo para visualizarlo, usaremos la forma: cout << Fulanito.Nombre; FUNCIONES EN EL INTERIOR DE ESTRUCTURAS
  • 21. MANUAL C/C++ 20Henry Hernandez C++, permite incluir funciones en el interior de las estructuras. Normalmente estas funciones tienen la misión de manipular los datos incluidos en la estructura, y su uso está muy relacionado con la programación orientada a objetos. Aunque esta característica se usa casi exclusivamente con las clases, como veremos más adelante, también puede usarse en las estructuras. De hecho, en C++, las diferencias entre estructuras y clases son muy tenues. Dos funciones muy particulares son las de inicialización, o constructor, y el destructor. Veremos con más detalle estas funciones cuando asociemos las estructuras y los punteros. El constructor es una función sin tipo de retorno y con el mismo nombre que la estructura. El destructor tiene la misma forma, salvo que el nombre va precedido el símbolo "~". Nota: para aquellos que usen un teclado español, el símbolo "~" se obtiene pulsando las teclas del teclado numérico 1, 2, 6, mientras se mantiene pulsada la tecla ALT, ([ALT]+126). También mediante la combinación [Atl Gr]+[4] y un espacio (la tecla [4] de la zona de las letras, no del teclado numérico). Veamos un ejemplo sencillo para ilustrar el uso de constructores: Forma 1:
  • 22. MANUAL C/C++ 21Henry Hernandez Forma 2: Si no usáramos un constructor, los valores de x e y para Punto1 y Punto2 estarían indeterminados, contendrían la "basura" que hubiese en la memoria asignada a estas estructuras durante la ejecución. Con las estructuras éste será el caso más habitual, ya que sinecesitamos usarconstructores para asignarvalores iniciales,serámucho más lógico usar clases que estructuras. Mencionar aquí, sólo a título de información, que el constructor no tiene por qué ser único. Se pueden definir varios constructores, pero veremos esto mucho mejor y con más detalle cuando veamos las clases. Usando constructores nos aseguramos los valores iniciales para los elementos de la estructura. Veremos que esto puede ser una gran ventaja, sobre todo cuando combinemos estructuras con punteros, en capítulos posteriores. También podemos incluir otras funciones, que sedeclaran y definen como las funciones que ya conocemos.
  • 23. MANUAL C/C++ 22Henry Hernandez Otro ejemplo: En este ejemplo podemos ver cómo sedefine una estructura con dos campos enteros, y dos funciones para modificar y leer sus valores. El ejemplo es muy simple, pero las funciones de guardar valores sepueden elaborar para que no permitan determinados valores, o para que hagan algún tratamiento de los datos. Por supuesto se pueden definir otras funciones y también constructores más elaborados e incluso, redefinir operadores. Y en general, las estructuras admiten cualquiera de las características de las clases, siendo en muchos aspectos equivalentes. Veremos estas características cuando estudiemos las clases, y recordaremos cómo aplicarlas a las estructuras. INICIALIZACIÓN DE ESTRUCTURAS De un modo parecido al que se inicializan los arrays, se pueden inicializar estructuras, tan sólo hay que tener cuidado con las estructuras anidadas. Por ejemplo:
  • 24. MANUAL C/C++ 23Henry Hernandez Cada nueva estructura anidada deberá inicializarse usando la pareja correspondiente de llaves "{}", tantas veces como sea necesario. ARRAYS DE ESTRUCTURAS Lacombinación de las estructuras con los arrays proporciona una potente herramienta para el almacenamiento y manipulación de datos. Ejemplo:
  • 25. MANUAL C/C++ 24Henry Hernandez Vemos en este ejemplo lo fácil que podemos declarar el array Plantilla que contiene los datos relativos a doscientas personas. Podemos acceder a los datos de cada uno de ellos: cout << Plantilla[43].Direccion; O asignar los datos de un elemento de la plantilla a otro: Plantilla[0] = Plantilla[99]; ESTRUCTURAS ANIDADAS También está permitido anidar estructuras, con lo cual se pueden conseguir superestructuras muy elaboradas.
  • 26. MANUAL C/C++ 25Henry Hernandez Ejemplo: En general, no es una práctica corriente definir estructuras dentro de estructuras, ya que tienen un ámbito local, y para acceder a ellas se necesita hacer referencia a la estructura más externa. Por ejemplo para declarar un objeto del tipo stNombre hay que utilizar el operador de acceso (::): stPersona::stNombre NombreAuxiliar; Sin embargo para declarar un objeto de tipo stDireccion basta con declararla: stDireccion DireccionAuxiliar;
  • 27. MANUAL C/C++ 26Henry Hernandez BIBLIOTECAS O LIBRERÍAS EN C++. DECLARACIÓN Y USO DE LIBRERÍAS. INCLUDE EN C++ Junto con los compiladores de C y C++, seincluyen ciertos archivos llamados bibliotecas mas comúnmente librerías. Las bibliotecas contienen el código objeto de muchos programas que permiten hacer cosas comunes, como leer el teclado, escribir en la pantalla, manejar números, realizar funciones matemáticas, etc. Las bibliotecas están clasificadas por el tipo de trabajos que hacen, hay bibliotecas de entrada y salida, matemáticas, de manejo de memoria, de manejo de textos y como imaginarás existen muchísimas librerías disponibles y todas con una función especifica. Nota: Existe una discusión sobre el nombre de estos archivos. Muchos personas consideran que el nombre adecuado es archivos de biblioteca, y estan en lo correcto. Sin embargo, la mayoría llamamos a estos archivos librerías, y también me incluyo entre estos. El error proviene del nombre en inglés, que es library. Este término se traduce como biblioteca, y no como librería. De este modo a lo largo de esta sección las llamaré de cualquiera de las dos formas, para estár mas claros. Hay un conjunto de bibliotecas (o librerías) muy especiales, que se incluyen con todos los compiladores de C y de C++. Son las librerías (o bibliotecas) ANSI o estándar. También hay librerías que no son parte del estándar pero en esta sección sólo usaremos algunas bibliotecas (o librerías) ANSI. Nota 2: Sé que esto pinta aburrido, pero es muy útil y realmente las libreróas nos facilitan enormemente el trabajo de programar. Recuerda que antes de hablar librerías y demás es necesario dominar algunos conceptos de fundamentación en general y otros temas importantes (ciclos, condicionales y demás) Ahora veamos algunas librerías y como es su sintaxis. ¿QUÉ SON EXACTAMENTE LAS LIBRERÍAS? En C++, se conoce como librerías (o bibliotecas) a cierto tipo de archivos que podemos importar o incluir en nuestro programa. Estos archivos contienen las especificaciones de diferentes funcionalidades ya construidas y utilizables que podremos agregar a nuestro programa, como por ejemplo leer del teclado o mostrar algo por pantalla entre muchas otras más. Al poder incluir estas librerías con definiciones de diferentes funcionalidades podremos ahorrarnos gran cantidad de cosas, imaginemos por ejemplo que cada vez que necesitemos leer por teclado, debamos entonces crear una función que lo haga (algo realmente complejo), al poder contar con las librerías en C++, podremos hacer uso de una gran
  • 28. MANUAL C/C++ 27Henry Hernandez variedad de funciones que nos facilitaran la vida y aumentarán la modularidad de nuestros códigos. Las librerías no son únicamente archivos externos creados por otros, también es posible crear nuestras propias librerías y utilizarlas en nuestros programas. Las librerías pueden tener varias extensiones diferentes, las más comunes son: .lib, .bpl, .a, .dll, .h y algunas más ya no tan comunes. En conclusión: Las librearías son archivos (no siempre externos) que nos permiten llevar a cabo diferentes tareas sin necesidadde preocuparnos por cómo sehacen sino simplemente entender cómo usarlas. Las librearías en C++ permiten hacer nuestros programas más modulares y reutilizables, facilitando además crear programas con funcionalidades bastante complejas en unas pocas líneas de código. SINTAXIS PARA DECLARAR LIBRERÍAS EN C++ La declaración de librerías, tanto en C como en C++, se debe hacer al principio de todo nuestro código, antes de la declaración de cualquier función o línea de código, debemos indicarle al compilador que librerías usar, para el saber que términos estaran correctos en la escritura de nuestro código y cuáles no. La sintaxis es la siguiente: #include <nombre de la librería> o alternativamente #include "nombre de la librería". Cualquiera de las 2 formas es válida en C++ (no estoy seguro si en C sea válido), ten en cuenta que siempre el nombre de la librería debe ir entre " y " o entre < y >. En tu código puedes declarar todas las librerías que quieras aunque en realidad no tienen sentido declarar una librería que no vas a usar en tu programa, sin embargo no existe límite para esto. LIBRERÍAS ESTANDAR DE C++ (STANDAR TEMPLATE LIBRARY O STL) A continuación pondré algunas delas librerías de uso más común de C++y que forman parte de las librerías estandar de este lenguaje.  fstream: Flujos hacia/desde ficheros. Permite la manipulación de archivos desde el programar, tanto leer como escribir en ellos.  iosfwd: Contiene declaraciones adelantadas de todas las plantillas deflujos y sus typedefs estándar. Por ejemplo ostream.  iostream:
  • 29. MANUAL C/C++ 28Henry Hernandez Parte del a STL que contiene los algoritmos estándar, es quizá la más usada e importante (aunque no indispensable).  La biblioteca list: Parte de la STL relativa a contenedores tipo list; listas doblemente enlazadas  math: Contiene los prototipos de las funciones y otras definiciones para el uso y manipulación de funciones matemáticas.  memory: Utilidades relativas a la gestión de memoria, incluyendo asignadores y punteros inteligentes (auto_ptr). "auto_ptr" es una clase que conforma la librería memory y permite un fácil manejo de punteros y su destrucción automaticamente.  Biblioteca new: Manejo de memoria dinámica  numeric: Parte de la librería numérica de la STL relativa a operaciones numéricas.  ostream: Algoritmos estándar para los flujos de salida.  queue: Parte de la STL relativa a contenedores tipo queue (colas de objetos).  Librería stdio: Contiene los prototipos de las funciones, macros, y tipos para manipular datos de entrada y salida.  Librería stdlib: Contiene los prototipos de las funciones, macros, y tipos para utilidades de uso general.
  • 30. MANUAL C/C++ 29Henry Hernandez  string: Parte de la STL relativa a contenedores tipo string; una generalización de las cadenas alfanuméricas para albergar cadenas de objetos. Muy útil para el fácil uso de las cadenas de caracteres, pues elimina muchas d elas dificultades que generan los char  typeinfo: Mecanismo de identificación de tipos en tiempo de ejecución  vector: Parte de la STL relativa a los contenedores tipo vector; una generalización de las matrices unidimensionales C/C++  forward_list Esta librería es útil para implementar con gran facilidad listas enlazadas simples.  list Permite implementar listas doblemente enlzadas (listas enlazadas dobles) facilmente.  iterator Proporciona un conjunto de clases para iterar elementos.  regex Proporciona fácil acceso al uso de expresiones regulares para la comparación de patrones.  thread Útil para trabajar programación multihilos y crear múltiples hilos en nuestra aplicación. BUCLES O CICLOS EN C LA ESTRUCTURA CONDICIONAL IF... ELSE La estructura condicional if ... else es la que nos permite tomar ese tipo de decisiones. Traducida literalmente del inglés, se la podría llamar la estructura "si...si no", es decir, "si se cumple la condición, haz esto, y sino, haz esto otro".
  • 31. MANUAL C/C++ 30Henry Hernandez Un ejemplo sencillo sería el siguiente (no se trata de un programa completo, sino tan sólo una porción de código): LA ESTRUCTURA CONDICIONAL ABIERTA Y CERRADA SWITCH ... CASE La estructura condicional switch ... case se utiliza cuando queremos evitarnos las llamadas escaleras de decisiones. La estructura if nos puede proporcionar, únicamente, dos resultados, uno para verdadero y otro para falso. Una estructura switch ... case, por su parte, nos permite elegir entre muchas opciones. Ejemplo:
  • 32. MANUAL C/C++ 31Henry Hernandez Laestructura anterior, de realizarsecon sentencias if,necesitaríacuatro de ellas,resultando un enorme bloque muy difícil de leer. En la mayoría de los casos, además, la sentencia switch proporciona una ganancia en velocidad del código, pues permite al compilador trabajar en base a que se trata de una decisión múltiple para una única variable, cosa que con sentencias if el compilador no tiene por qué detectar. Como vemos, para cada valor de la variable se ejecuta un bloque de sentencias distinto, en el que no necesitamos llaves. Hay un caso especial, default, que se ejecuta si ningún otro corresponde, y que no es necesario poner. Es, en todo, equivalente al bloque else de una sentencia if. Las sentencias break son muy importantes, ya que el comportamiento normal de un bloque switch es ejecutarlo todo desde la etiqueta case que corresponda hasta el final. Por ello, si no queremos que se nos ejecute más de un bloque, pondremos sentencias break al final de cada bloque excepto el último.
  • 33. MANUAL C/C++ 32Henry Hernandez Es decir, las etiquetas case son puntos de entrada de la ejecución, y no implican que al acabarse el bloque case la ejecución salte al final del bloque switch. Las etiquetas case siguientes a la que hemos utilizado para entrar son, sencillamente, ignoradas. EL BUCLE WHILE El bucle while sirve para ejecutar código reiteradas veces. La condición debe de ser una expresión lógica, similar a la de la sentencia if. Primero se evalúa la condición. Si el resultado es verdadero, se ejecuta el bloque de código. Luego se vuelve a evaluar la condición, y en caso de dar verdadero se vuelve a ejecutar el bloque. El bucle se corta cuando la condición da falso. Ejemplo: imprimir los números de 0 a 99:
  • 34. MANUAL C/C++ 33Henry Hernandez EL BUCLE FOR El bucle for es un bucle muy flexible y a la vez muy potente ya que tiene varias formas interesantes de implementarlo, su forma más tradicional es la siguiente: Inicialización: en esta parte se inicia la variable que controla el bucle y es la primera sentencia que ejecuta el bucle. Sólo se ejecuta una vez ya que solo se necesita al principio del bucle. Expresión condicional: al igual que en el bucle while, esta expresión determina si el bucle continuará ejecutándose o no. Incremento: es una sentenciaque ejecuta alfinal de cadaiteración del bucle. Por lo general, se utiliza para incrementar la variable con que se inicio el ciclo. Luego de ejecutar el incremento, el bucle revisa nuevamente la condición, si es verdadera tiene lugar una ejecución más del cuerpo del ciclo, si es falsa se termina el ciclo y así. Aquí se muestra el mismo ejemplo visto para el bucle while, pero implementado con un bucle for:
  • 35. MANUAL C/C++ 34Henry Hernandez EL BUCLE DO...WHILE El bucle do...while es un bucle que, por lo menos, se ejecuta una vez. Do significa literalmente "hacer", y while significa "mientras" Su forma es esta: La verdad es que este ejemplo puede resultar un poco absurdo, pero es bastante intuitivo. El código del bucle asignaun valor aleatorio a lavariable definida anteriormente, y mientras esa variable no tenga el valor 25, el bucle sigue ejecutándose.
  • 36. MANUAL C/C++ 35Henry Hernandez . Sólo en ocasiones muy excepcionales será recomendado eluso del goto alcrear iteraciones muy complejas. Sin embargo, con el pasar de los años este comando ya ha quedado prácticamente descartado del lenguaje de los programadores. FICHEROS TIPO FILE: C define la estructura de datos FILE en el fichero de cabecera stdio.h para el manejo de ficheros. Nosotros siempre usaremos punteros a estas estructuras. La definición de ésta estructura depende del compilador, pero en general mantienen un campo con la posición actual de lectura/escritura, un buffer para mejorar las prestaciones de acceso al fichero y algunos campos para uso interno. FUNCIÓN FOPEN: Sintaxis: FILE *fopen(char *nombre, char *modo); Esta función sirve para abrir y crear ficheros en disco. El valor de retorno es un puntero a una estructura FILE. Los parámetros de entrada son: Nombre: una cadena que contiene un nombre de fichero válido, esto depende del sistema operativo que estemos usando. El nombre puede incluir el camino completo. Modo: especifica en tipo de fichero que se abrirá o se creará y el tipo de datos que puede contener, de texto o binarios: r: sólo lectura. El fichero debe existir. w: se abre para escritura, se crea un fichero nuevo o se sobrescribe si ya existe. a: añadir, se abre para escritura, el cursor se sitúa al final del fichero. Si el fichero no existe, se crea. r+: lectura y escritura. El fichero debe existir. w+: lectura y escritura, se crea un fichero nuevo o se sobrescribe si ya existe. a+: añadir, lectura y escritura, el cursor se sitúa al final del fichero. Si el fichero no existe, se crea. t: tipo texto, si no se especifica "t" ni "b", se asume por defecto que es "t"
  • 37. MANUAL C/C++ 36Henry Hernandez b: tipo binario. FUNCIÓN FCLOSE: Sintaxis: int fclose(FILE *fichero); Es importante cerrar los ficheros abiertos antes de abandonar la aplicación. Esta función sirve para eso. Cerrar un fichero almacena los datos que aún están en el buffer de memoria, y actualiza algunos datos de la cabecera del fichero que mantiene el sistema operativo. Además permite que otros programas puedan abrir el fichero para su uso. Muy a menudo, los ficheros no pueden ser compartidos por varios programas. Un valor de retorno cero indica que el fichero ha sido correctamente cerrado, si ha habido algún error, el valor de retorno es la constante EOF. El parámetro es un puntero a la estructura FILE del fichero que queremos cerrar. TRES FUNCIONES JUNTAS (FILE,FOPEN, FCLOSE) Ahí podemos ver cómo hacemos una comprobación para ver si lo creamos bien FUNCIÓN FGETC: Sintaxis: int fgetc(FILE *fichero);
  • 38. MANUAL C/C++ 37Henry Hernandez Esta función lee un carácter desde un fichero. El valor de retorno es el carácter leído como un unsigned char convertido a int. Si no hay ningún carácter disponible, el valor de retorno es EOF. El parámetro es un puntero a una estructura FILE del fichero del que se hará la lectura. FUNCIÓN FPUTC: Sintaxis: int fputc(int caracter, FILE *fichero); Esta función escribe un carácter a un fichero. El valor de retorno es el carácter escrito, si la operación fue completada con éxito, en caso contrario será EOF. Los parámetros de entrada son el carácter a escribir, convertido a int y un puntero a una estructura FILE del fichero en el que se hará la escritura. FUNCIÓN FEOF: Sintaxis: int feof(FILE *fichero); Esta función sirve para comprobar si se ha alcanzado el final del fichero. Muy frecuentemente deberemos trabajar con todos los valores almacenados en un archivo de forma secuencial, la forma que suelen tener los bucles para leer todos los datos de un archivo es permanecer leyendo mientras no se detecte el fin de fichero. Esta función suele usarse como prueba para verificar si se ha alcanzado o no ese punto. El valor de retorno es distinto de cero sólo si no se ha alcanzado el fin de fichero. El parámetro es un puntero a la estructura FILE del fichero que queremos verificar. FUNCIÓN REWIND: Sintaxis: void rewind(FILE *fichero) Es una función heredada de los tiempos de las cintas magnéticas. Literalmente significa "rebobinar", y hace referencia a que para volver al principio de un archivo almacenado en cinta, había que rebobinarla. Eso es lo que hace ésta función, sitúa el cursor de lectura/escritura al principio del archivo. El parámetro es un puntero a la estructura FILE del fichero que queremos rebobinar.
  • 39. MANUAL C/C++ 38Henry Hernandez FUNCIÓN FGETS: Sintaxis: char *fgets(char *cadena, int n, FILE *fichero); Esta función está diseñada para leer cadenas de caracteres. Leerá hasta n-1 caracteres o hasta que lea un retorno de línea. En este último caso, el carácter de retorno de línea también es leído. El parámetro n nos permite limitar la lectura para evitar derbordar el espacio disponible en la cadena. El valor de retorno es un puntero a la cadena leída, si se leyó con éxito, y es NULL si se detecta elfinal del fichero o sihay un error. Los parámetros son: lacadena a leer, el número de caracteres máximo a leer y un puntero a una estructura FILE del fichero del que se leerá. FUNCIÓN FPUTS: Sintaxis: int fputs(const char *cadena, FILE *stream); La función fputs escribe una cadena en un fichero. No se añade el carácter de retorno de línea ni el carácter nulo final. El valor de retorno es un número no negativo o EOF en caso de error. Los parámetros de entrada son la cadena a escribir y un puntero a la estructura FILE del fichero donde se realizará la escritura. FUNCIÓN FREAD: Sintaxis: size_t fread(void *puntero, size_t tamaño, size_t nregistros, FILE *fichero); Esta función está pensada para trabajar con registros de longitud constante. Es capaz de leer desde un fichero uno o varios registros de la misma longitud y a partir de una dirección de memoria determinada. El usuario es responsable de asegurarse de que hay espacio suficiente para contener la información leída. El valor de retorno es el número de registros leídos, no el número de bytes. Los parámetros son: un puntero a la zona de memoria donde se almacenarán los datos leídos, el tamaño de cada registro, el número de registros a leer y un puntero a la estructura FILE del fichero del que se hará la lectura.
  • 40. MANUAL C/C++ 39Henry Hernandez FUNCIÓN FWRITE: Sintaxis: Esta función también está pensada para trabajar con registros de longitud constante y forma pareja con fread. Es capaz de escribir hacia un fichero uno o varios registros de la misma longitud almacenados a partir de una dirección de memoria determinada. El valor de retorno es el número de registros escritos, no el número de bytes. Los parámetros son: un puntero a la zona de memoria donde se almacenarán los datos leídos, el tamaño de cada registro, el número de registros a leer y un puntero a la estructura FILE del fichero del que se hará la lectura. FUNCIÓN FPRINTF: Sintaxis: int fprintf(FILE *fichero, const char *formato, ...); La función fprintf funciona igual que printf en cuanto a parámetros, pero la salida se dirige a un fichero en lugar de a la pantalla. FUNCIÓN FSCANF: Sintaxis: int fscanf(FILE *fichero, const char *formato, ...); La función fscanf funciona igual que scanf en cuanto a parámetros, pero la entrada se toma de un fichero en lugar del teclado. FUNCIÓN FFLUSH: Sintaxis: int fflush(FILE *fichero); Esta función fuerza la salida de los datos acumulados en el buffer de salida del fichero. Para mejorar las prestaciones del manejo de ficheros se utilizan buffers, almacenes temporales de datos en memoria, las operaciones de salida se hacen a través del buffer, y sólo cuando el buffer se llena se realiza la escritura en el disco y se vacía el buffer. En ocasiones nos hace falta vaciar ese buffer de un modo manual, para eso sirve ésta función.
  • 41. MANUAL C/C++ 40Henry Hernandez El valor de retorno es cero si la función se ejecutó con éxito, y EOF si hubo algún error. El parámetro de entrada es un puntero a la estructura FILE del fichero del que se quiere vaciar el buffer. Si es NULL se hará el vaciado de todos los ficheros abiertos. FUNCIÓN FSEEK: Sintaxis: int fseek(FILE *fichero, long int desplazamiento, int origen); Esta función sirve para situar el cursor del fichero para leer o escribir en el lugar deseado. El valor de retorno es cero si la función tuvo éxito, y un valor distinto de cero si hubo algún error. Los parámetros de entrada son: un puntero a una estructura FILE del fichero en el que queremos cambiar el cursor de lectura/escritura, el valor del desplazamiento y el punto de origen desde el que se calculará el desplazamiento. El parámetro origen puede tener tres posibles valores: SEEK_SET el desplazamiento se cuenta desde el principio del fichero. El primer byte del fichero tiene un desplazamiento cero. SEEK_CUR el desplazamiento se cuenta desde la posición actual del cursor. SEEK_END el desplazamiento se cuenta desde el final del fichero. FUNCIÓN FTELL: Sintaxis: long int ftell(FILE *fichero); La función ftell sirve para averiguar la posición actual del cursor de lectura/escritura de un fichero. El valor de retorno será esa posición, o -1 si hay algún error. El parámetro de entrada es un puntero a una estructura FILE del fichero del que queremos leer la posición del cursor de lectura/escritura. FUNCIONES: Las funciones son un conjunto de procedimiento encapsulados en un bloque, usualmente reciben parámetros, cuyos valores utilizan para efectuar operaciones y adicionalmente
  • 42. MANUAL C/C++ 41Henry Hernandez retornan un valor. Esta definición proviene de la definición de función matemática la cual posee un dominio y un rango, es decir un conjunto de valores que puede tomar y un conjunto de valores que puede retornar luego de cualquier operación. Complejo, en pequeños problemitas más sencillos, concentrándose en la solución por separado, de cada uno de ellos. En C, se conocen como funciones aquellos trozos de códigos utilizados para dividir un programa con el objetivo que, cada bloque realice una tarea determinada. En las funciones juegan un papel muy importe las variables, ya que como se ha dicho estas pueden ser locales o globales. Variables Globales: Estas se crean durante toda la ejecución del programa, y son globales, ya que pueden ser llamadas, leídas, modificadas, etc; desde cualquier función. Se definen antes del main(). Variables Locales: Estas, pueden ser utilizadas únicamente en la función que hayan sido declaradas. SINTAXIS DE UNA FUNCIÓN ES LA SIGUIENTE: Donde: Tipo_de_datos: Es el tipo de dato que devolverá esa función, que puede ser real, entera, o tipo void(es decir que no devolverá ningún valor). Nombre_de_la_funcion: Es el identificador que le damos a nuestra función, la cual debe cumplir las reglas que definimos en un principio para los identificadores.
  • 43. MANUAL C/C++ 42Henry Hernandez Tipo y nombre de argumentos: son los parámetros que recibe la función. Los argumentos de una función no son más que variables locales que reciben un valor. Este valor se lo enviamos al hacer la llamada a la función. Pueden existir funciones que no reciban argumentos. PASO DE PARÁMETROS Las funciones pueden recibir datos como lo hemos observado, pero existen dos formas de enviar los datos hacia una función por valor y por referencia, las cuales modifican en diferente forma el comportamiento del programa. POR VALOR El paso por valor envía una copia de los parámetros a la función por lo tanto los cambios que se hagan en ella no son tomados en cuenta dentro de la función main() VARIABLES LOCALES Y GLOBALES UNA VARIABLE LOCAL Es aquella cuyo ámbito se restringe a la función que la ha declarado se dice entonces que la variable es local a esa función. Esto implica que esa variable sólo va a poder ser manipulada en dicha sección, y no se podrá hacer referencia fuera de dicha sección. Cualquier variable que sedefina dentro de las llaves delcuerpo de una función seinterpreta como una variable local a esa función. UNA VARIABLE GLOBAL Es aquella que se define fuera del cuerpo de cualquier función, normalmente al principio del programa, después de la definición de los archivos de biblioteca (#include), de la definición de constantes simbólicas y antes de cualquier función. El ámbito de una variable globalson todas las funciones que componen elprograma, cualquier función puede acceder a dichas variables para leer y escribir en ellas. Es decir, se puede hacer referencia a su dirección de memoria en cualquier parde del programa.
  • 46. MANUAL C/C++ 45Henry Hernandez EJERCICIOS SWITCH CICLOS Y FUNCIONES Calculo del IR