Documentos de Académico
Documentos de Profesional
Documentos de Cultura
C++
INICIO CARACTE
RIZACION
DE LAS
SALIDAS
CARACTERIZ
ALGORITMO DESEADA
ACION DE
S COMO
TOAS LAS
UNA
ENTRADAS
FUNCION
LEGALES
DE LA
FINAL ENTRADA
introducción a los códigos que se utilizan para trabajar en DEV C++.
C++
Lenguage de
programació
n
Caracteres: char
(también es un entero),
wchar_t
Vacío: void
LIBRERIA (Iostream).
Es una librería de entrada y salida que provee los códigos fundamentales para
la ejecución del programa, se incluye así: # incluye <iostream.h>
LIBRERÍA (conio)
Es una librería de entrada y salida lleva funciones muy útiles para el programa.
De esta librería depende la funcion de (pause) en la pantalla, se incluye así: #
incluye <conio.h>
LIBRERÍA (Stdio)
Es una librería de tipo cabecera que contiene las definiciones de macros y las
constantes. Las declaraciones de funciones y usados por operaciones
estándar de entrada y salida.
FUNCION (main)
# include <iostream.h>
Int main ( )
Int año_act=2010;
Int año_nac,edad;
Cin>>año_nac;
Edad=año_act – año_nac;
Getch()
Return 0;
}
CONDICIONES
Condiciones: Una condición es una proposición que se debe cumplir para que se
cumpla otra. Igualmente, en programación las condiciones son expresiones que se
deben cumplir para que se ejecute un determinado bloque de acciones.
Estructura en pseudocódigo:
if (condición)
ejecuta esto si la condición es verdadera
else
ejecuta esto si la condición es falsa
int edad;
cout<<”Ingrese su edad: ”;
cin>>edad;
if (edad>=18)
{
cout<<“Usted es mayor de edad. ”;
}
else
{
cout<<“Usted es menor de edad. ”;
};
Las expresiones lógicas simples son aquéllas que se construyen mediante los
operadores relacionales aplicados a dos expresiones (variables, constantes, etc)
de un mismo tipo. En la siguiente tabla puedes ver una lista de los operadores
relacionales, mostrando el equivalente en C++, así como un ejemplo de una
expresión lógica simple utilizando cada operador:
Las expresiones lógicas compuestas son aquéllas que se construyen mediante los
operadores lógicos aplicados a variables o expresiones lógicas. En la siguiente
tabla puedes ver una lista de los operadores lógicos, mostrando el equivalente en C+
+ de los que has visto en pseudocódigo, así como un ejemplo de una expresión
lógica compuesta utilizando cada operador:
La siguiente table nos muestra es codigo que se debe utilizar para manejar
condiciones en c++.
Verdader
Falso o
Se
forman
Operadores Operadores
relacionales lógicos
SWITCH
Muchas veces nos metemos en aprietos cuando necesitamos tener el control sobre
muchas opciones que pudiese tomar el usuario, porque resulta muy complicado
pensar en varios if/else anidados, para esos casos tenemos otra herramienta muy
Acciones a ejecutar;
Acciones a ejecutar
EJEMPLO
#include <iostream.h>
int main(){
int opcion;
cout<<"Menu de opciones"<<endl;
cout<<"1.Opcion1"<<endl;
cout<<"2.Opcion 2"<<endl;
cout<<"3.Opcion 3"<<endl;
cin>>opcion;
switch(opcion){
case 1:
cout<<"ejecucion 1"<<endl;
break;
case 2:
cout<<"ejecucion 2"<<endl;
break;
case 3:
cout<<"ejecucion 3"<<endl;
break;
default:
break;
cin.ignore();
cin.get();
return 0;
CICLOS REPETITIVOS
Sirve para hacer que una cierta parte de un programa se repita un cierto número de
veces o mientras se cumpla una condición (lo que llamamos un “bucle”). En C++
tenemos varias formas de conseguirlo.
for
Ésta es la orden que usaremos habitualmente para crear partes del programa que se
repitan un cierto número de veces.
Sentencia;
Así, para contar del 1 al 10, tendríamos 1 como valor inicial, <=10 como condición
de repetición, y el incremento sería de 1 en 1. Por tanto, el programa quedaría:
#include <iostream.h>
main()
int contador;
cout<< contador;
WHILE
Otra forma de lograr que una estructura se repita si y solo si se cumple una condición
es el bucle o ciclo “while”.
Sentencia;
Un ejemplo que nos diga si cada número que tecleemos es positivo o negativo, y que
pare cuando tecleemos el número 0, podría ser:
#include <stdio.h>
#include <iostream.h>
Int main()
int numero;
cin>>numero;
while (numero!=0)
if (numero > 0)
Cout<<”Es positivo\n”;
else
{
Cout<<”Es negativo\n”;
Cin>>numero;
Otra de las formas para cumplir una sentencia con condición es DO – WHILE.
DO-WHILE
Cuando necesitamos que un ciclo se ejecute por lo menos una vez, es necesaria
do {
Acciones a ejecutar;
while(condicion a cumplir);
Necesitamos que por lo menos una vez lea la opción que elige, y en caso de que
Elija una no disponible, en lugar de aparecer el mensaje “es una opción no válida” y
termine el programa, espere a que el usuario escoja una de la lista.
El programa de ejemplo:
#include <iostream.h>
int main()
int opcion;
do
cout<<"1.opcion
1"<<endl;
cout<<"2.opcion
2"<<endl;
cout<<"3.opcion
3"<<endl;
cin>>opcion;
}while((opcion<1)||(opcion>3));
cin.ignore();
cin.get();
return 0;
aplicaciones de ellos.
FUNCIONES
Una función es como un miniprograma dentro de un programa. Las funciones
contienen varias sentencias bajo un solo nombre, que un programa puede utilizar
una o más veces para ejecutar dichas sentencias. El objetivo de estas funciones es
ahorrar espacio y evitar repeticiones en un programa.
… // cuerpo de la función
return expresión
Una función puede retornar cualquier tipo de dato, tal como int, float, char, e incluso
tipos de datos definidos por el usuario (concepto que se clarificará con los objetos).
Si la función no devuelve ningún valor, el tipo de resultado será void, y no será
necesario un valor devuelto (es decir, utilizaremos return;).
La llamada a una función se puede hacer desde el main o desde otra función,
siempre y cuando esta esté referenciada arriba de su llamada (mas adelante
aclararemos este concepto).
El paso de parámetros por valor (también llamado por copia) significa que cuando el
código llama la función, se crea una copia en memoria de los valores enviados, a los
cuales sólo puede acceder la función (ninguna otra podrá modificar esas “copias”). Si
la función cambia los valores que se le han enviado, los originales se conservarán sin
modificaciones, aun si usamos el mismo nombre para ambas variables (cosa que es
muy común).
Si queremos que una función modifique las variables originales de los parámetros
que les enviamos, utilizamos el paso de parámetros por referencia. En este tipo de
parámetros, no se realiza una copia, sino que se le envía a la función la dirección de
memoria de la variable. Es como si le colocáramos un sobrenombre a la variable,
que solo usaremos en esta función. El nombre que le coloquemos al recibir el
parámetro puede ser igual o distinto al enviado, similar que en los parámetros por
valor, pero con la diferencia que esta variable no será del mismo tipo que el enviado,
sino que será un puntero (más adelante veremos qué es un puntero, por ahora
diremos que es una referencia).
ARRREGLOS
Un arreglo es una colección ordenada de variables del mismo tipo. Las variables que
pertenecen a un arreglo se conocen por el nombre de elementos. El término
ordenado significa que en la colección hay un primer elemento, un segundo
elemento, un tercer elemento, y así sucesivamente. Además, los elementos pueden
a su vez organizarse en subgrupos llamadas dimensiones. El subgrupo más pequeño
posible se conoce como un arreglo de una dimensión. Un arreglo de dos
dimensiones se subdivide en arreglos de una dimensión. Un arreglo de tres
dimensiones se subdivide en arreglos de dos dimensiones los cuales a su vez se
dividen en arreglos de una dimensión. Un arreglo de cuatro dimensiones se
subdivide en arreglos de tres dimensiones los cuales a su vez se dividen en arreglos
de dos dimensiones los cuales a su vez se dividen en arreglos de una dimensión. La
misma idea se aplica en arreglos de más dimensiones.
En resumen, un arreglo:
· No es una variable; es un grupo de variables conocidas como elementos
computadora
· Las dimensiones no tienen relación con el plano Cartesiano; nada que ver con
matemática
· Las dimensiones indican como están organizados los elementos dentro del grupo
· Los valores que se guarden en el arreglo se almacenan en los elementos ya que los
1. el tipo de los elementos (ejemplo, int, char, double, bool o un tipo definido por
el programador)
Para nombrar un elemento en un arreglo hay que indicar el nombre del arreglo,
seguido de tantas parejas de corchetes [ ] como dimensiones declaradas. Dentro de
cada pareja de corchetes tiene que haber un índice. La combinación de los índices
indica la posición del elemento dentro del grupo. El valor mínimo para un índice es 0.
El valor máximo es uno menos que el tamaño de la dimensión correspondiente en la
declaración del arreglo.
Declaración
Declaración
Declaración
// los arreglos de dos dimensiones tienen a su vez dos arreglos de una dimensión
arreglo w: 2x2x3=12).
VECTORES
Ejm:
int a[4] = 30; // le asigno el valor 30 a la posición 4 del vector, es decir, al 5to
1
elemento.
01 #include <iostream>
03
04 int main()
05 {
06 int dim;
10
11 for(int i=0;i < dim;i++){
12 vector[i] = i * 10;
14 }
15
16 return 0;
17 }
MATRICES
1 int matriz[fils][cols];
Bueno y para recorrer una matriz podemos usar igualmente un bucle. En este caso 2
for
1 for(int i=0;i<fils;i++){
2 for(int j=0;j<cols;j++){
3 matriz[i][j] = i % j;
4 }
5}
ARRAY MULTIDIMENCIONAL
MEMORIA DINAMICA
Una de las formas en que podemos asegurarnos que una variable declarada dentro
de un bloque no sea borrada al término de éste, es mediante la utilización del
calificador static. De ésta manera, la variable perdurará hasta el término de todo el
programa.
Pero en algunos casos esto nos será insuficiente, vamos a necesitar “destruir”
variables antes de terminar el programa, para hacer esto contamos con los
operadores new y delete.
Se puede utilizar el operador new para crear cualquier tipo de variables, en todos los
casos devuelve un puntero a la variable creada. En el momento en que se quiera
borrar esta variable deberemos utilizar el operador delete, todas las variables
creadas mediante el operador new deben de ser borradas con el otro operador.
EJEMPLO:
PUNTEROS
Un apuntador se define como una variable que contiene una dirección de memoria.
Para declarar un apuntador se hace uso del operador desreferencia o indirección (*),
no se debe confundir con la multiplicación.
tipo *nombre;
int *MiApuntador;
int arreglo[10];
int *apuntador;
apuntador = arreglo;
sucede que, pasamos la dirección del primer elemento del arreglo a la
variable“apuntador” que está determinada para almacenar una dirección de memoria.
El uso de los apuntadores sirve para hacer uso de una variable con la cual no se
tiene contacto directo, por medio del operador desreferencia. Por ejemplo, podemos
asignar un nuevo valor a esta variable referenciada.
*MiApuntador=9;
Como podemos ver podemos usar un apuntador para asignar cantidades (o lo que
sea) a la variable referenciada ya sea por instrucción o por medio del teclado.
En la última instrucción cout se imprime el valor de “lo que apunta ‘apuntador’ ”.
ARCHIVOS
Para empezar con el manejo de archivos es necesario recordar el concepto de flujo,
el cual se define como un dispositivo que consume o produce información. En
nuestros programas hechos hasta el momento hemos utilizado los flujos estándar
cin y cout el resto de los flujos que se deseen deberán ser creados por el
programador. Todos los flujos se comportan de forma análoga,
Independientemente del dispositivo que se trate.
Para poder usar un flujo estándar basta con incluir la biblioteca iostream.h como lo
hemos hecho hasta ahora. Cuando decidimos utilizar la función cin.get() no
sabíamos exactamente el porque de la utilización del punto(.), ahora que hemos visto
un poco el concepto de estructura podemos decir que se trata de la invocación a una
función miembro del flujo cin. Sí, el flujo es un objeto, viéndolo desde la perspectiva
de las estructuras y no precisamente de las clases como debería de ser, se trata de
un tipo de dato que contiene variables y funciones que pueden ser invocadas.
Las estructuras (en realidad clases) para la entrada y salida de datos tienen un orden
jerárquico, en ellas existe la herencia que básicamente consiste en que una de orden
inferior obtiene las mismas variables y funciones que la de orden mayor, además
deque puede agregar más.
Para poder trabajar los ficheros como flujos es necesario incluir la librería
fstream.h, y según la utilización que queramos dar a este fichero (lectura o
escritura) deberemos declarar el tipo de flujo.
Para crear un archivo de salida declaramos una variable de tipo ofstream, el cualya
está declarado dentro de nuestra librería.
#include<fstream.h>
int main()
{
ofstream archivo;
archivo.open("miarchivo.txt");
archivo<<"hola desde este archivo\n";
archivo<<"ya he escrito algo\n";
archivo.close();
}
ofstream archivo(“miarchivo.txt”);
#include<iostream.h>
#include<fstream.h>
int main(){
ofstream archivo("miarchivo.txt", ios::app);
archivo<<"hola desde este archivo de nuevo\n";
archivo<<"ya he escrito algo de nuevo\n";
archivo.close();
}
El método para abrir un archivo en modo lectura es muy similar, pero en este caso
utilizaremos ifstream. Para tener el control del fichero, aparte de conocer los
modos de apertura de un archivo, debemos de conocer el delimitador, así como en
las cadenas existe el carácter de fin de cadena('\0'), en los archivos está el fin de
archivo (EOF).
ESQUEMA
PROGRAMACION
BASICA
UTILIZA
LENGUAJE DE FUNCION
SW
PROGRAMACI ES
APOYA CREAR
ON C++
COMO
DEV C++
HERRAMIENTAS
TURBO C SINTAXI ARREGLOS
S
VISUAL C+ ESTRUCTURA
+ S DE DATOS PUNTEROS
TIENE
TIPOS DE
ESTRUCTURA
DATOS ESTRUCTURA
DIRECTIVAS DE PRINCIPAL
S DE
PROCESADOR CICLOS
CONTROL
REPETITIVOS
NUMERICO
MAIN VOID S CONDICIONALE IF, IF ELSE, SWITCH
CARACTERE S
# INCLUDES S
INT, FLOAT,
DOUBLE
CHAR
FOR WHILE DO WHILE
WHILE {
FOR
SENTENCIA:
DE= 1 {
HASTA=10 NUM=NUM+1;
AUMENTO=1 EN 1 } }
FUNCIÓN
ES UN MINIPROGRAMA
DENTRO DE UN
PROGRAMA
CONTIENE
VARIAS SENTENCIAS
CON UN SOLO NOMBRE,
QUE UN PROGRAMA
PUEDE UTILIZAR PARA
EJECUTAR DICHAS
SENTENCIAS
SIN PARAMETROS
PARAMETROS
ARREGLOS
SECUENCIA DE
OBJETOS DEL MISMO
TIPOS
COMO
ENTEROS,
CARACTERES,
FLOTANTES Y TIPOS
DE DATOS ELEGIDOS
POR EL USUARIO
INICIALIZACIÓN
Los arreglos
Una cadena de texto es
multidimensionales son
un conjunto de caracteres
aquello que, como su
consecutivos que pueden
nombre lo indica, tienen
ser manejados como
más de una dimensión, y
palabras o frases en ves
por lo tanto más de un
de cómo caracteres
índice. Los arreglos
separados.
multidimensionales más
utilizados son los
bidimensionales o mejor
llamados matrices, sin de
este modo excluir el
posible uso de tres o
cuatro dimensiones en un
arreglo.
MEMORIA
ESTATICA DINAMICA
HACE
REFERENCIA A:
Lista de nodos (es uno de los elementos
de una lista enlazada, de un árbol o de
Arreglos, vectores o un grafo. Cada nodo será una estructura
o registro que dispondrá de varios
matrices campos , a partir de esa referencia,
debe poder accederse a otros nodos de
la estructura. Los nodos son
herramientas esenciales para la
construcción de estructuras de datos
El programador en este tipo de dinámicas.
memoria define el tamaño
máximo del vector y en la
ejecución del programa cada )
uno de sus elementos va a
ocupar un espacio en memoria.
El programador en este tipo de
memoria no define el tamaño
No se podrá hacer máximo de memoria en la
uso de espacios ejecución del programa se van
creando nodos dependiendo
extra, se utilizan de la necesidad y cada uno de
solamente los sus elementos va a ocupar un
espacio en memoria.
1 2reservados.
3 4 8 6
0 1 2 3
SE PUEDEN ELIMINAR
NO PUEDEN ELIMINAR ELEMENTOS PARA
ELEMENTOS PARA RECUPERAR ESPACIOS
RECUPERAR ESPACIOS DE MEMORIA
DE MEMORIA
PUNTEROS
ARCHIVOS
OFSTREAM FSTREAM
LECTURA O ESCRITURA
MODO DE APERTURA
IOS::IN
IOS::APP IOS::OUT IOS:: TRUNC IOS::BINARY
OPERACION
ES DE
Operacion Crea un
LECTURA.
es de archivo, si ESTA ES LA
escritura. existe uno EL
OPERACIÓ OPCION
Esta es la con el POR ARCHIVO
N DE opción por
mismo DEFECTO SE ABRE
AÑADIDUR
IOS::NOREPLACE defecto IOS::NOCREATE IOS::ATE
PARA EN MODO
A nombre lo
para OBJETOS DE BINARIO.
objetos de borra. LA CLASE
la clase IFSTREAM.H
ofstream.
CREA UN
ARCHIVO, SI COLOCA EL
EXISTE UNO SI EL ARCHIVO
APUNTADOR
CON EL MISMO NO EXISTE SE
NOMBRE LA DEL ARCHIVO
SUSPENDE LA
OPERACIÓN SE AL FINAL DEL
OPERACIÓN.
SUSPENDE. MISMO.