SlideShare una empresa de Scribd logo
1 de 60
TUTORIAL DE VISUAL
C++
PRESENTACIÓN
• Desde Visual Studio 2012 han complicado un poco las cosas para crear un
Windows Form con Visual C++ CLR, cada versión cambian detalles que en el fondo
está bien por dentro, lo que es más difícil acceder a él.
• Se presenta un tutorial pequeño paso a paso para saber como crear un Windows
Form.
PRESENTACIÓN
• Observando las opiniones que he visto por Internet, si vas a usar Visual C++ CLR
que opta por la plataforma .net, mejor te centras en Visual C#.
• MFC, Win32 y ATL a parte de ser más complicado, se suele usar para tener mejor
rendimiento, kernel, driver y un largo etc, requiere más tiempo haciendo códigos.
• Si optas por hacer una interfaz sencilla para controlar dispositivos externos en el
puerto serie como microcontroladores PIC, placas de Arduino, Raspberry Pi o
cualquier otro con el protocolo RS232, mejor usar Visual C++ CLR, C# o Visual Basic
.net por su facilidad y comodidad.
• Este tipo de interfaz es bueno saber como se hace porque lo piden en algunos
centros de enseñanzas como universidades, ciclo formativos y vale incluso para
autodidactas.
• • Dependiendo de sus necesidades.
• El uso de CLR le proveerá a usted con la más expresiva conjunto de bibliotecas (el todo
.NET Framework), en el costo de la restricción de su archivo ejecutable para exigir el .NET
Framework para ser instalado en tiempo de ejecución, así como la limitación a la plataforma
de Windows (sin embargo, todos los 4 de los enumerados tecnologías son solo para
Windows, por lo que la limitación de la plataforma es, probablemente, el menos
problemático). Hablando de CLR, MFC, Win32 y ATL.
• Sin embargo, CLR requiere el uso de C++/CLI extensiones para el lenguaje C++, así que,
en esencia, la necesidad de aprender algo más de las características de lenguaje con el fin
de utilizar este. Al hacerlo, obtendrá muchos "extras" tales como el acceso a la .red de
bibliotecas, lleno de recolección de basura, etc.
• ATL Y MFC son un poco más complicado de decidir. Le indico a la página de MSDN para
elegir, para decidir entre ellos. Sobre ATL y MFC es que usted no necesita .NET Framework,
sólo el VC/MFC tiempos de ejecución para ser instalado para su implementación.
• El uso de Win32 directamente proporciona a los más pequeños ejecutables, con el menor
número de dependencias, pero es más trabajo para escribir código y tiempo.
• En esta versión he trabajado con el Sistema Operativo Windows 10 de 64 bits y
Visual Studio Community 2017.
• Enlace para descargar Visual Studio Community 2017 (Gratuito y en español).
HERRAMIENTAS COMUNES
• Puedes descargar Visual Studio Community 2017 con un ejecutable atra vez de
Internet o descargarte todo el contenido en modo local.
• Directamente la versión 2017 no cabe en un DVD.
• En este caso se me ha descargado el ejecutable llamado
vs_community__1822203968.1489235477. exe.
• Lo puedo instalar desde vía Web. No se puede bajar la versión en ISO ya que no
cabe en el DVD. 13/03/2017Electrónica PIC - http://electronica-pic.blogspot.com.es
11
• Aquí en adelante seguimos su procedimiento para descargarlo en local.
• En mi caso lo descargaré en la carpeta llamada VS2017_Local en la raíz, en C.
• C:VS2017_Local
• En este caso, en la consola CMD o símbolo de sistema de Windows ejecutamos
estos comandos.
• Accedemos donde descargamos el pequeño ejecutable y no olvidar que elegimos el
lenguaje español España en este caso –lang es-Es.
• Más información en este enlace.
• Vemos cuando se descarga todo en el disco duro donde le indicamos.
• Tarda un buen tiempo así que paciencia.
• Vamos al directorio C:VS2017_Local y ejecutamos el ejecutable.
• Pulsas modificar en Visual Studio Community 2017 y pasa la página siguiente para
elegir lo que queremos instalar.
• Elegimos las opciones indicadas.
• Elegimos las opciones indicadas.
• Cuando acabes, le das el botón Iniciar.
• Aún así, el acceso directo lo puedes encontrar en el menú de inicio de Windows.
VISUAL C++ 2017 CLR
• Cuando tengas Visual Studio Community 2017 ya ejecutado, creamos un proyecto nuevo.
• Archivo – Nuevo - Proyecto…
• Mirar imagen grande en la página siguiente.
VISUAL C++ 2017 CLR
• Le ventana Nuevo proyecto está abierta y seguimos en orden lo que indica la
imagen.
• 1) Visual C++ en Plantillas.
• 2) CLR.
• 3) Proyecto vacío de CLR.
• 4) Ponemos el nombre que queramos, en este caso lo he llamado Proyectazo.
• 5) Pulsamos Aceptar.
• En el “Explorador de soluciones” seleccionamos el nombre de nuestro proyecto, en
este caso Proyectazo como el primer paso.
• En la barra de herramientas Proyecto, luegoAgregar un nuevo elemento tal como
indica en la imagen de abajo.
• Como muestra la imagen de abajo. Cloqueamos en Visual C++ - UI y Señalamos
Windows Forms, le he añadido como nombre en el tercer paso Forma_Principal,
puedes poner cualquier nombre, al final, pulsa Aceptar.
• Haz clic con el botón derecho del ratón, si no aparece “Ver diseñador”, guarde el
proyecto y cierre Visual Studio Community 2017 al completo, luego vuelva a abrir.
• Ya debería verse el formulario y no solo el código fuente.
• La versión Visual Studio Community 2015 también daba otro tipo de problemas en
el cual puedes ver su propio tutorial desde la página 18 de 60.
• Indicamos en el “Explorador de soluciones”, hacemos clic en el botón derecho del
ratón y luego pulsamos “Propiedades”.
• Sigue el procedimiento indicado abajo, en Subsistema tiene que ser Windows
(/SUBSYSTEM:WINDOWS), luego pulsas aplicar.
• Vete a la pestaña “Avanzadas”, Punto de entrada escribes main.
• Finalmente el botón Aceptar.
• Escribe los códigos necesarios como muestra en la imagen, pero antes, mira la
página siguiente que se ve más grande y mejor.
VISUAL C++ 2017 CLR
• En la página siguiente muestra el proyecto del formulario.
• Puedes añadirle un label, cambiar de título al formulario como prueba.
• Luego pulsas F5 para compilar.
Operador ==
Operador +
Operador -
Operador *
Operador /
Operador %
Operador <<
Operador >>
Operador &
Dado que estos operadores son definidos para un tipo de datos definido por el
usuario, este es libre de asignarles cualquiera semántica que desee. Sin embargo,
se considera de primera importancia que las semánticas sean tan parecidas al
comportamiento natural de los operadores como para que el uso de los operadores
sobrecargados sea intuitivo. Por ejemplo, el uso del operador unario - debiera
cambiar el "signo" de un "valor".
Los operadores sobrecargados no dejan de ser funciones, por lo que pueden
devolver un valor, si este valor es del tipo de datos con el que trabaja el
operador, permite el encadenamiento de sentencias. Por ejemplo, si tenemos 3
variables A, B y C de un tipo T y sobrecargamos el operador = para que trabaje
con el tipo de datos T, hay dos opciones: si el operador no devuelve nada una
sentencia como "A=B=C;" (sin las comillas) daría error, pero si se devuelve un tipo
de datos T al implementar el operador, permitiría concatenar cuantos elementos
se quisieran, permitiendo algo como "A=B=C=D=...;"
STANDART TEMPLATE LIBRARY
(STL)
• Los lenguajes de programación suelen tener una serie de bibliotecas de
funciones integradas para la manipulación de datos a nivel más básico. En
C++, además de poder usar las bibliotecas de C, se puede usar la nativa
STL (Standard Template Library), propia del lenguaje. Proporciona una
serie plantillas (templates) que permiten efectuar operaciones sobre el
almacenado de datos, procesado de entrada/salida.
BIBLIOTECA DE ENTRADA Y
SALIDA
• Las clases basic_ostream y basic_stream, y los objetos cout y cin,
proporcionan la entrada y salida estándar de datos (teclado/pantalla).
También está disponible cerr, similar a cout, usado para la salida
estándar de errores. Estas clases tienen sobrecargados los operadores <<
y >>, respectivamente, con el objeto de ser útiles en la
inserción/extracción de datos a dichos flujos. Son operadores
inteligentes, ya que son capaces de adaptarse al tipo de datos que
reciben, aunque tendremos que definir el comportamiento de dicha
entrada/salida para clases/tipos de datos definidos por el usuario
Por ejemplo:
ostream& operator<<(ostream& fs, const Punto& punto)
{return fs << punto.x << "," << punto.y;}
De esta forma, para mostrar un punto, solo habría que realizar la siguiente
expresión:
//...
Punto p(4,5);
//...
cout << "Las coordenadas son: " << p << endl;
//...
Es posible formatear la entrada/salida, indicando el número de dígitos decimales
a mostrar, si los textos se pasarán a minúsculas o mayúsculas, si los números
recibidos están en formato octal o hexadecimal, etc.
FSTREAMS
Tipo de flujo para el manejo de ficheros. La definición previa
de ostreams/istreams es aplicable a este apartado. Existen tres clases
(ficheros de lectura, de escritura o de lectura/escritura)
IFSTREAM, OFSTREAM Y
FSTREAM
• (nombre_variable_fichero).open("nombre_fichero.dat/txt", ios::in); para
abrirlo en modo lectura.
(nombrevariablefichero).open("nombre_fichero.dat/txt", ios::out); para abrirlo
en modo escritura.
1-Si es fichero de texto plano:
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int main() {
ifstream entrada;
entrada.open("textoPlano.txt");
string unString;
while(entrada >> unString)
cout << "Lei: " << unString << endl;
return 0;
}
2-Si es un fichero binario(.dat);
nombre_variable_fichero.read((char*)&nombre_variable,
sizeof(tipo_variable));
Ejemplo:
f.read((char*)&e, sizeof(int));
ESCRIBIR UN FICHERO
1-Si es fichero de texto(.txt):
nombrevariable<<"texto"; donde "texto" puede ser también una variable
de cualquier tipo primitivo, o un string.
Ejemplo: f<<HOLA;
2-Si es un fichero binario(.dat);
nombre_variable_fichero.write((char*)&nombre_variable,
sizeof(tipo_variable));
Ejemplo:
f.write((char*)&e, sizeof(int));
Pueden abrirse pasando al constructor los parámetros relativos a la
ubicación del fichero y el modo de apertura
SSTREAMS
Se destacan dos clases, ostringstream e istringstream. Todo lo anteriormente
dicho es aplicable a estas clases. Tratan a una cadena como si de un flujo de
datos se tratase. ostringstream permite elaborar una cadena de texto insertando
datos cual flujo, e istringstream puede extraer la información contenida en una
cadena (pasada como parámetro en su constructor) con el operador >>. Ejemplos:
ostringstream s;
s << nombre << "," << edad << "," << estatura << "," << punto(5,6) << endl;
cout << s.str();
istringstream s(cadena);
s >> nombre >> edad >> estatura >> p;
CONTENEDORES
Son clases plantillas especiales utilizadas para almacenar tipos de datos
genéricos, sean cuales sean. Todos los contenedores son homogéneos, es
decir, una vez que se declaran para contener un tipo de dato determinado,
en ese contenedor, solo se podrán meter elementos de ese tipo. Según la
naturaleza del almacenado, disponemos de varios tipos:
Vectores: Se definen por
vector<tipo_de_dato> nombre_del_vector;
Son arrays (o listas ordenadas) que se redimensionan automáticamente al
agregar nuevos elementos, por lo que se le pueden agregar "teóricamente",
infinitos elementos. Los vectores nos permiten acceder a cualquier
elemento que contenga, mediante el operador[]. Debe tenerse en cuenta
que si se intenta acceder a una posición que excede los límites del vector,
este no hará ningún chequeo, por lo que se debe ser cuidadoso al utilizar
este operador. Para asegurar un acceso seguro al vector, se puede utilizar
el método at(int), que lanza una excepción de tipo std::out_of_range en
caso de que esto ocurra.
Para añadir elementos al final del vector, se utiliza el método
push_back(const T&). Por otro lado, para eliminar un elemento del final del
vector, se debe usar el método pop_back().
#include <vector> //librería que contiene a la clase vector
#include <iostream>
using namespace std;
int main() {
vector<int> intVector; //crea un vector de enteros (sin elementos)
intVector.push_back(25); //agrega el entero 25 al vector
cout << "El primer elemento es: " << intVector.front() <<
" y mi vector tiene " << intVector.size() << " elementos." << endl; //imprime el primer
elemento, retornado por el método front()
intVector.push_back(32); //agrego el entero 32 al vector
cout << "El primer elemento es: " << intVector[0] << endl; //imprime 25
intVector.pop_back(); //elimina el último elemento del vector (i. e. 32)
cout << "Ahora tengo: " << intVector.size() << " elementos." << endl; //imprimirá 1
return 0;
}
Colas dobles: son parecidas a los vectores, pero tienen mejor eficiencia para agregar o eliminar
elementos en las "puntas".
deque<tipo_de_dato> nombre_de_la_cola;
Además de los métodos push_back(const T&) y pop_back(), se agregan los métodos
push_front(const T&) y pop_front(), que realizan lo mismo que los ya explicados, pero en el
comienzo de la cola.
#include <deque> //librería de deques
using namespace std;
int main() {
deque<int> intDeque;
intDeque.push_front(25);
intDeque.push_back(12);
while(intDeque.size())
intDeque.pop_back(); //borra todos los elementos
return 0;
}
Listas: Son eficientes a la hora de agregar elementos. La diferencia con las
colas dobles, es que son más eficientes para eliminar elementos que no
estén en alguna de las "puntas"
list<tipo_de_dato> nombre_de_la_lista;
Adaptadores de secuencia.
Contenedores asociativos: map y multimap, que permiten asociar una
"clave" con un "valor". map no permite valores repetidos, mientras que
multimap si.
map<tipo_de_llave, tipo_de_dato> nombre_del_map;
multimap<tipo_de_llave, tipo_de_dato> nombre_del_multimap
#include <map> //librería que contiene a map y multimap
#include <string> //librería de strings
#include <iostream> //librería de entrada/salida
using namespace std;
int main() {
map<int, string> intAString;
intAString[1] = "uno";
intAString[10] = "diez";
cout << "En intAString[1]: " << intAString[1] << endl;
cout << "En intAString[10]: " << intAString[10] << endl;
return 0;
}
ITERADORES
• Pueden considerarse como una generalización de la clase de "puntero". Un
iterador es un tipo de dato que permite el recorrido y la búsqueda de
elementos en los contenedores. Como las estructuras de datos
(contenedores) son clases genéricas, y los operadores (algoritmos) que
deben operar sobre ellas son también genéricos (funciones genéricas),
Stepanov y sus colaboradores tuvieron que desarrollar el concepto de
iterador como elemento o nexo de conexión entre ambos. El nuevo
concepto resulta ser una especie de punteros que señalan a los diversos
miembros del contenedor (punteros genéricos que como tales no existen
en el lenguaje).
ALGORITMOS
Combinando la utilización de templates y un estilo específico para denotar
tipos y variables, la STL ofrece una serie de funciones que representan
operaciones comunes, y cuyo objetivo es "parametrizar" las operaciones en
que estas funciones se ven involucradas de modo que su lectura,
comprensión y mantenimiento, sean más fáciles de realizar.
Un ejemplo es la función copy, la cual simplemente copia variables desde un
lugar a otro. Más estrictamente, copia los contenidos cuyas ubicaciones
están delimitadas por dos iteradores, al espacio indicado por un tercer
iterador.
La sintaxis es:
copy (inicio_origen, fin_origen, inicio_destino);
De este modo, todos los datos que están entre inicio_origen y fin_origen,
excluyendo el dato ubicado en este último, son copiados a un lugar descrito
o apuntado por inicio_destino.
Un algoritmo muy importante que viene implementado en la biblioteca STL,
es el sort. El algoritmo sort, ordena cualquier tipo de contenedor, siempre
y cuando se le pasen como argumentos, desde donde y hasta donde se
quiere ordenarlo.
#include <vector>
#include <deque>
#include <algorithm>
int main() {
vector<int> intVector;
intVector.push_back(60);
intVector.push_back(12);
intVector.push_back(54); //para este momento, el vector tiene 60,12,54
sort(intVector.begin(), intVector.end()); //listo, array ordenado, ahora tiene 12,54,60
/*Notar que si en vez de un vector, fuese una deque, se ordenaría de la misma manera. */
}
Entre las funciones más conocidas están swap (variable1, variable2), que
simplemente intercambia los valores de variable1 y variable2; max
(variable1, variable2) y su símil min (variable1, variable2), que retornan el
máximo o mínimo entre dos valores; find (inicio, fin, valor) que busca valor
en el espacio de variables entre inicio y fin; etcétera.
Los algoritmos son muy variados, algunos incluso tienen versiones
específicas para operar con ciertos iteradores o contenedores, y proveen
un nivel de abstracción extra que permite obtener un código más "limpio",
que "describe" lo que se está haciendo, en vez de hacerlo paso a paso
explícitamente.
• El programa o aplicacion que recibe los datos de la forma es el siguiente:
•
• #using <mscorlib.dll>
•
• #using <System.dll>
•
• #using <lcnet.dll>
•
• using namespace System;
•
• void main(){
•
• //declarando variables
•
• int base1, altura;
•
• Double area;
REQUISITOS PROGRAMACIÓN
INTERNET (POI)
• Para poder construir programas o aplicaciones orientadas a internet en VISUAL CPP CGI, se ocupa lo
siguiente:
• 1.- Una pc con enlace directo a internet esta pc le llamaremos servidor fisico
• 2.- El mejor editor del mundo, para crear paginas html y programas de vcpp, el NOTEPAD o WORDPAD de
windows.
• 3.- El compilador de VISUAL CPP, que se puede obtener gratis, bajandolo de www.microsoft.com/net/,
aguas son mas de 100 mb, bajarlo e instalarlo con todos los default's o comprar el visual studio net o mejor
aun vc++ net
• 4.- Una libreria especializada en obtener los datos que manda una pagina html, llamada lcnet.dll que se
puede bajar aqui www.programacionfacil.com/visualc++/lcnet.dll bajarla y ponerla dentro de el folder
(TAREAS) o directorio donde crearan todos los programas que se pediran en este curso.
CONDICIONES SIMPLES
• Variables
• Operadores Relacionales
• Constante o Variables
• sexo
• =
• m
• sueldo
• >
• 300,000
CONDICIONES COMPUESTAS
• En muchas ocasiones es necesario presentar mas de una condición para su
evaluación al computador.
• Por ejemplo que el computador muestre la boleta de un alumno si este
estudia la carrera de medicina y su promedio de calificaciones es mayor de
70.
• En muchas ocasiones es necesario presentar mas de una condicion para su evaluacion al computador.
• Por ejemplo que el computador muestre la boleta de un alumno si este estudia la carrera de medicina y su promedio de calificaciones es mayor de 70.
BIBLIOGRAFIAS
• https://es.slideshare.net/Metaconta2/formulario-windows-con-visual-c-2017
• 
FIN DEL MANUAL
• Gaitán Velázquez Maryfer
• Mena Ramírez Roberto Michell
• 2Am Programación
• D-5

Más contenido relacionado

La actualidad más candente

La actualidad más candente (18)

Tutorial de- c. ++
Tutorial de- c. ++ Tutorial de- c. ++
Tutorial de- c. ++
 
C(++) programacion en c y c++
C(++)   programacion en c y c++C(++)   programacion en c y c++
C(++) programacion en c y c++
 
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
 
Tutorial acerca del uso del sistema de calificacion
Tutorial acerca del uso del sistema de calificacionTutorial acerca del uso del sistema de calificacion
Tutorial acerca del uso del sistema de calificacion
 
2 poo u1 1 Introduccion
2 poo u1 1 Introduccion2 poo u1 1 Introduccion
2 poo u1 1 Introduccion
 
2 poo u1 2 Hola mundo
2 poo u1 2 Hola mundo2 poo u1 2 Hola mundo
2 poo u1 2 Hola mundo
 
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
 
C
C C
C
 
Mat Lab
Mat LabMat Lab
Mat Lab
 
Dev c++
Dev c++Dev c++
Dev 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++
 
Evolución de la programación
Evolución de la programaciónEvolución de la programación
Evolución de la programación
 
Tutorial assembler
Tutorial assemblerTutorial assembler
Tutorial assembler
 
Tasm
TasmTasm
Tasm
 
programacion en lenguaje ensamblador con NASM
programacion en lenguaje ensamblador con NASMprogramacion en lenguaje ensamblador con NASM
programacion en lenguaje ensamblador con NASM
 
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
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Manual del dev c++
Manual del dev c++Manual del dev c++
Manual del dev c++
 

Similar a Tutorial C++ Visual

Formulario windows con visual c++ 2017
Formulario windows con visual c++ 2017Formulario windows con visual c++ 2017
Formulario windows con visual c++ 2017Ángel Acaymo M. G.
 
Programación c++forcsma
Programación c++forcsmaProgramación c++forcsma
Programación c++forcsmaCarlos Avila
 
Formulario windows con visual c++
Formulario windows con visual c++Formulario windows con visual c++
Formulario windows con visual c++Ángel Acaymo M. G.
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarEduardo Méndez
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarJuan Hoyos
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarblasty2
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarblasty2
 
2154086 curso-c-c-con-clase
2154086 curso-c-c-con-clase2154086 curso-c-c-con-clase
2154086 curso-c-c-con-claseEdgar Rodriguez
 
Cursocpp
CursocppCursocpp
Cursocppzotek
 
Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)javiel162009
 
El arte de programar c++ - versión 3.0
El arte de programar   c++ - versión 3.0El arte de programar   c++ - versión 3.0
El arte de programar c++ - versión 3.0javiel162009
 
Introducción al curso de C.docx
Introducción al curso de C.docxIntroducción al curso de C.docx
Introducción al curso de C.docxNidia Castro Campo
 
Origenes de las hojas de calculo
Origenes de las hojas de calculoOrigenes de las hojas de calculo
Origenes de las hojas de calculoMigdaly Chirinos
 

Similar a Tutorial C++ Visual (20)

Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
Formulariowindowsconvisualc2017
Formulariowindowsconvisualc2017Formulariowindowsconvisualc2017
Formulariowindowsconvisualc2017
 
Formulario windows con visual c++ 2017
Formulario windows con visual c++ 2017Formulario windows con visual c++ 2017
Formulario windows con visual c++ 2017
 
Programación c++forcsma
Programación c++forcsmaProgramación c++forcsma
Programación c++forcsma
 
Formulario windows con visual c++
Formulario windows con visual c++Formulario windows con visual c++
Formulario windows con visual c++
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
2154086 curso-c-c-con-clase
2154086 curso-c-c-con-clase2154086 curso-c-c-con-clase
2154086 curso-c-c-con-clase
 
Cursocpp
CursocppCursocpp
Cursocpp
 
Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)
 
El arte de programar c++ - versión 3.0
El arte de programar   c++ - versión 3.0El arte de programar   c++ - versión 3.0
El arte de programar c++ - versión 3.0
 
Prueba
PruebaPrueba
Prueba
 
Introducción al curso de C.docx
Introducción al curso de C.docxIntroducción al curso de C.docx
Introducción al curso de C.docx
 
Origenes de las hojas de calculo
Origenes de las hojas de calculoOrigenes de las hojas de calculo
Origenes de las hojas de calculo
 

Más de Mena75

Manual de dreamweaver
Manual de dreamweaverManual de dreamweaver
Manual de dreamweaverMena75
 
Etiquetas de audio html
Etiquetas de audio htmlEtiquetas de audio html
Etiquetas de audio htmlMena75
 
Marquesinas
MarquesinasMarquesinas
MarquesinasMena75
 
Negrita
NegritaNegrita
NegritaMena75
 
Etiqueta caption mg
Etiqueta caption mgEtiqueta caption mg
Etiqueta caption mgMena75
 
Examen resuelto
Examen resueltoExamen resuelto
Examen resueltoMena75
 
Diseno de pagina_web
Diseno de pagina_webDiseno de pagina_web
Diseno de pagina_webMena75
 
Pagina web mia_2
Pagina web mia_2Pagina web mia_2
Pagina web mia_2Mena75
 
Topologias que existen_en_la_red_2
Topologias que existen_en_la_red_2Topologias que existen_en_la_red_2
Topologias que existen_en_la_red_2Mena75
 
Presentacion de programacion_color
Presentacion de programacion_colorPresentacion de programacion_color
Presentacion de programacion_colorMena75
 
Jf 2 3_sg_esp(4)
Jf 2 3_sg_esp(4)Jf 2 3_sg_esp(4)
Jf 2 3_sg_esp(4)Mena75
 
Jf 2 2_sg_esp(4)
Jf 2 2_sg_esp(4)Jf 2 2_sg_esp(4)
Jf 2 2_sg_esp(4)Mena75
 
Jf 2 1_sg_esp(3)
Jf 2 1_sg_esp(3)Jf 2 1_sg_esp(3)
Jf 2 1_sg_esp(3)Mena75
 
PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++
PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++
PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++Mena75
 
PRESENTACIÓN DE LAS TABLAS DE VERDAD PARA C++
PRESENTACIÓN DE LAS TABLAS DE VERDAD PARA C++PRESENTACIÓN DE LAS TABLAS DE VERDAD PARA C++
PRESENTACIÓN DE LAS TABLAS DE VERDAD PARA C++Mena75
 
Tipos de datos_para_c_
Tipos de datos_para_c_ Tipos de datos_para_c_
Tipos de datos_para_c_ Mena75
 
Ley de-la-jerarquia-de-operaciones
Ley de-la-jerarquia-de-operacionesLey de-la-jerarquia-de-operaciones
Ley de-la-jerarquia-de-operacionesMena75
 
Codebloks
CodebloksCodebloks
CodebloksMena75
 
TUTORIAL DE VISUAL C++
TUTORIAL DE VISUAL C++TUTORIAL DE VISUAL C++
TUTORIAL DE VISUAL C++Mena75
 
Codebloks.xd
Codebloks.xdCodebloks.xd
Codebloks.xdMena75
 

Más de Mena75 (20)

Manual de dreamweaver
Manual de dreamweaverManual de dreamweaver
Manual de dreamweaver
 
Etiquetas de audio html
Etiquetas de audio htmlEtiquetas de audio html
Etiquetas de audio html
 
Marquesinas
MarquesinasMarquesinas
Marquesinas
 
Negrita
NegritaNegrita
Negrita
 
Etiqueta caption mg
Etiqueta caption mgEtiqueta caption mg
Etiqueta caption mg
 
Examen resuelto
Examen resueltoExamen resuelto
Examen resuelto
 
Diseno de pagina_web
Diseno de pagina_webDiseno de pagina_web
Diseno de pagina_web
 
Pagina web mia_2
Pagina web mia_2Pagina web mia_2
Pagina web mia_2
 
Topologias que existen_en_la_red_2
Topologias que existen_en_la_red_2Topologias que existen_en_la_red_2
Topologias que existen_en_la_red_2
 
Presentacion de programacion_color
Presentacion de programacion_colorPresentacion de programacion_color
Presentacion de programacion_color
 
Jf 2 3_sg_esp(4)
Jf 2 3_sg_esp(4)Jf 2 3_sg_esp(4)
Jf 2 3_sg_esp(4)
 
Jf 2 2_sg_esp(4)
Jf 2 2_sg_esp(4)Jf 2 2_sg_esp(4)
Jf 2 2_sg_esp(4)
 
Jf 2 1_sg_esp(3)
Jf 2 1_sg_esp(3)Jf 2 1_sg_esp(3)
Jf 2 1_sg_esp(3)
 
PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++
PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++
PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++
 
PRESENTACIÓN DE LAS TABLAS DE VERDAD PARA C++
PRESENTACIÓN DE LAS TABLAS DE VERDAD PARA C++PRESENTACIÓN DE LAS TABLAS DE VERDAD PARA C++
PRESENTACIÓN DE LAS TABLAS DE VERDAD PARA C++
 
Tipos de datos_para_c_
Tipos de datos_para_c_ Tipos de datos_para_c_
Tipos de datos_para_c_
 
Ley de-la-jerarquia-de-operaciones
Ley de-la-jerarquia-de-operacionesLey de-la-jerarquia-de-operaciones
Ley de-la-jerarquia-de-operaciones
 
Codebloks
CodebloksCodebloks
Codebloks
 
TUTORIAL DE VISUAL C++
TUTORIAL DE VISUAL C++TUTORIAL DE VISUAL C++
TUTORIAL DE VISUAL C++
 
Codebloks.xd
Codebloks.xdCodebloks.xd
Codebloks.xd
 

Último

Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 

Último (20)

Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 

Tutorial C++ Visual

  • 2. PRESENTACIÓN • Desde Visual Studio 2012 han complicado un poco las cosas para crear un Windows Form con Visual C++ CLR, cada versión cambian detalles que en el fondo está bien por dentro, lo que es más difícil acceder a él. • Se presenta un tutorial pequeño paso a paso para saber como crear un Windows Form.
  • 3. PRESENTACIÓN • Observando las opiniones que he visto por Internet, si vas a usar Visual C++ CLR que opta por la plataforma .net, mejor te centras en Visual C#. • MFC, Win32 y ATL a parte de ser más complicado, se suele usar para tener mejor rendimiento, kernel, driver y un largo etc, requiere más tiempo haciendo códigos. • Si optas por hacer una interfaz sencilla para controlar dispositivos externos en el puerto serie como microcontroladores PIC, placas de Arduino, Raspberry Pi o cualquier otro con el protocolo RS232, mejor usar Visual C++ CLR, C# o Visual Basic .net por su facilidad y comodidad. • Este tipo de interfaz es bueno saber como se hace porque lo piden en algunos centros de enseñanzas como universidades, ciclo formativos y vale incluso para autodidactas.
  • 4. • • Dependiendo de sus necesidades. • El uso de CLR le proveerá a usted con la más expresiva conjunto de bibliotecas (el todo .NET Framework), en el costo de la restricción de su archivo ejecutable para exigir el .NET Framework para ser instalado en tiempo de ejecución, así como la limitación a la plataforma de Windows (sin embargo, todos los 4 de los enumerados tecnologías son solo para Windows, por lo que la limitación de la plataforma es, probablemente, el menos problemático). Hablando de CLR, MFC, Win32 y ATL. • Sin embargo, CLR requiere el uso de C++/CLI extensiones para el lenguaje C++, así que, en esencia, la necesidad de aprender algo más de las características de lenguaje con el fin de utilizar este. Al hacerlo, obtendrá muchos "extras" tales como el acceso a la .red de bibliotecas, lleno de recolección de basura, etc. • ATL Y MFC son un poco más complicado de decidir. Le indico a la página de MSDN para elegir, para decidir entre ellos. Sobre ATL y MFC es que usted no necesita .NET Framework, sólo el VC/MFC tiempos de ejecución para ser instalado para su implementación. • El uso de Win32 directamente proporciona a los más pequeños ejecutables, con el menor número de dependencias, pero es más trabajo para escribir código y tiempo.
  • 5. • En esta versión he trabajado con el Sistema Operativo Windows 10 de 64 bits y Visual Studio Community 2017. • Enlace para descargar Visual Studio Community 2017 (Gratuito y en español).
  • 7. • Puedes descargar Visual Studio Community 2017 con un ejecutable atra vez de Internet o descargarte todo el contenido en modo local. • Directamente la versión 2017 no cabe en un DVD.
  • 8. • En este caso se me ha descargado el ejecutable llamado vs_community__1822203968.1489235477. exe. • Lo puedo instalar desde vía Web. No se puede bajar la versión en ISO ya que no cabe en el DVD. 13/03/2017Electrónica PIC - http://electronica-pic.blogspot.com.es 11 • Aquí en adelante seguimos su procedimiento para descargarlo en local. • En mi caso lo descargaré en la carpeta llamada VS2017_Local en la raíz, en C. • C:VS2017_Local
  • 9. • En este caso, en la consola CMD o símbolo de sistema de Windows ejecutamos estos comandos. • Accedemos donde descargamos el pequeño ejecutable y no olvidar que elegimos el lenguaje español España en este caso –lang es-Es. • Más información en este enlace.
  • 10. • Vemos cuando se descarga todo en el disco duro donde le indicamos. • Tarda un buen tiempo así que paciencia.
  • 11. • Vamos al directorio C:VS2017_Local y ejecutamos el ejecutable.
  • 12. • Pulsas modificar en Visual Studio Community 2017 y pasa la página siguiente para elegir lo que queremos instalar.
  • 13. • Elegimos las opciones indicadas.
  • 14. • Elegimos las opciones indicadas.
  • 15. • Cuando acabes, le das el botón Iniciar. • Aún así, el acceso directo lo puedes encontrar en el menú de inicio de Windows.
  • 16.
  • 17. VISUAL C++ 2017 CLR • Cuando tengas Visual Studio Community 2017 ya ejecutado, creamos un proyecto nuevo. • Archivo – Nuevo - Proyecto… • Mirar imagen grande en la página siguiente.
  • 18. VISUAL C++ 2017 CLR • Le ventana Nuevo proyecto está abierta y seguimos en orden lo que indica la imagen. • 1) Visual C++ en Plantillas. • 2) CLR. • 3) Proyecto vacío de CLR. • 4) Ponemos el nombre que queramos, en este caso lo he llamado Proyectazo. • 5) Pulsamos Aceptar.
  • 19. • En el “Explorador de soluciones” seleccionamos el nombre de nuestro proyecto, en este caso Proyectazo como el primer paso. • En la barra de herramientas Proyecto, luegoAgregar un nuevo elemento tal como indica en la imagen de abajo.
  • 20. • Como muestra la imagen de abajo. Cloqueamos en Visual C++ - UI y Señalamos Windows Forms, le he añadido como nombre en el tercer paso Forma_Principal, puedes poner cualquier nombre, al final, pulsa Aceptar.
  • 21. • Haz clic con el botón derecho del ratón, si no aparece “Ver diseñador”, guarde el proyecto y cierre Visual Studio Community 2017 al completo, luego vuelva a abrir. • Ya debería verse el formulario y no solo el código fuente. • La versión Visual Studio Community 2015 también daba otro tipo de problemas en el cual puedes ver su propio tutorial desde la página 18 de 60.
  • 22.
  • 23. • Indicamos en el “Explorador de soluciones”, hacemos clic en el botón derecho del ratón y luego pulsamos “Propiedades”.
  • 24. • Sigue el procedimiento indicado abajo, en Subsistema tiene que ser Windows (/SUBSYSTEM:WINDOWS), luego pulsas aplicar.
  • 25. • Vete a la pestaña “Avanzadas”, Punto de entrada escribes main. • Finalmente el botón Aceptar.
  • 26. • Escribe los códigos necesarios como muestra en la imagen, pero antes, mira la página siguiente que se ve más grande y mejor.
  • 27.
  • 28. VISUAL C++ 2017 CLR • En la página siguiente muestra el proyecto del formulario. • Puedes añadirle un label, cambiar de título al formulario como prueba. • Luego pulsas F5 para compilar.
  • 29.
  • 30.
  • 31. Operador == Operador + Operador - Operador * Operador / Operador % Operador << Operador >> Operador &
  • 32. Dado que estos operadores son definidos para un tipo de datos definido por el usuario, este es libre de asignarles cualquiera semántica que desee. Sin embargo, se considera de primera importancia que las semánticas sean tan parecidas al comportamiento natural de los operadores como para que el uso de los operadores sobrecargados sea intuitivo. Por ejemplo, el uso del operador unario - debiera cambiar el "signo" de un "valor". Los operadores sobrecargados no dejan de ser funciones, por lo que pueden devolver un valor, si este valor es del tipo de datos con el que trabaja el operador, permite el encadenamiento de sentencias. Por ejemplo, si tenemos 3 variables A, B y C de un tipo T y sobrecargamos el operador = para que trabaje con el tipo de datos T, hay dos opciones: si el operador no devuelve nada una sentencia como "A=B=C;" (sin las comillas) daría error, pero si se devuelve un tipo de datos T al implementar el operador, permitiría concatenar cuantos elementos se quisieran, permitiendo algo como "A=B=C=D=...;"
  • 33. STANDART TEMPLATE LIBRARY (STL) • Los lenguajes de programación suelen tener una serie de bibliotecas de funciones integradas para la manipulación de datos a nivel más básico. En C++, además de poder usar las bibliotecas de C, se puede usar la nativa STL (Standard Template Library), propia del lenguaje. Proporciona una serie plantillas (templates) que permiten efectuar operaciones sobre el almacenado de datos, procesado de entrada/salida.
  • 34. BIBLIOTECA DE ENTRADA Y SALIDA • Las clases basic_ostream y basic_stream, y los objetos cout y cin, proporcionan la entrada y salida estándar de datos (teclado/pantalla). También está disponible cerr, similar a cout, usado para la salida estándar de errores. Estas clases tienen sobrecargados los operadores << y >>, respectivamente, con el objeto de ser útiles en la inserción/extracción de datos a dichos flujos. Son operadores inteligentes, ya que son capaces de adaptarse al tipo de datos que reciben, aunque tendremos que definir el comportamiento de dicha entrada/salida para clases/tipos de datos definidos por el usuario
  • 35. Por ejemplo: ostream& operator<<(ostream& fs, const Punto& punto) {return fs << punto.x << "," << punto.y;}
  • 36. De esta forma, para mostrar un punto, solo habría que realizar la siguiente expresión: //... Punto p(4,5); //... cout << "Las coordenadas son: " << p << endl; //... Es posible formatear la entrada/salida, indicando el número de dígitos decimales a mostrar, si los textos se pasarán a minúsculas o mayúsculas, si los números recibidos están en formato octal o hexadecimal, etc.
  • 37. FSTREAMS Tipo de flujo para el manejo de ficheros. La definición previa de ostreams/istreams es aplicable a este apartado. Existen tres clases (ficheros de lectura, de escritura o de lectura/escritura)
  • 38. IFSTREAM, OFSTREAM Y FSTREAM • (nombre_variable_fichero).open("nombre_fichero.dat/txt", ios::in); para abrirlo en modo lectura. (nombrevariablefichero).open("nombre_fichero.dat/txt", ios::out); para abrirlo en modo escritura.
  • 39. 1-Si es fichero de texto plano: #include <fstream> #include <string> #include <iostream> using namespace std; int main() { ifstream entrada; entrada.open("textoPlano.txt"); string unString; while(entrada >> unString) cout << "Lei: " << unString << endl; return 0; }
  • 40. 2-Si es un fichero binario(.dat); nombre_variable_fichero.read((char*)&nombre_variable, sizeof(tipo_variable)); Ejemplo: f.read((char*)&e, sizeof(int));
  • 41. ESCRIBIR UN FICHERO 1-Si es fichero de texto(.txt): nombrevariable<<"texto"; donde "texto" puede ser también una variable de cualquier tipo primitivo, o un string. Ejemplo: f<<HOLA;
  • 42. 2-Si es un fichero binario(.dat); nombre_variable_fichero.write((char*)&nombre_variable, sizeof(tipo_variable)); Ejemplo: f.write((char*)&e, sizeof(int)); Pueden abrirse pasando al constructor los parámetros relativos a la ubicación del fichero y el modo de apertura
  • 43. SSTREAMS Se destacan dos clases, ostringstream e istringstream. Todo lo anteriormente dicho es aplicable a estas clases. Tratan a una cadena como si de un flujo de datos se tratase. ostringstream permite elaborar una cadena de texto insertando datos cual flujo, e istringstream puede extraer la información contenida en una cadena (pasada como parámetro en su constructor) con el operador >>. Ejemplos: ostringstream s; s << nombre << "," << edad << "," << estatura << "," << punto(5,6) << endl; cout << s.str(); istringstream s(cadena); s >> nombre >> edad >> estatura >> p;
  • 44. CONTENEDORES Son clases plantillas especiales utilizadas para almacenar tipos de datos genéricos, sean cuales sean. Todos los contenedores son homogéneos, es decir, una vez que se declaran para contener un tipo de dato determinado, en ese contenedor, solo se podrán meter elementos de ese tipo. Según la naturaleza del almacenado, disponemos de varios tipos: Vectores: Se definen por vector<tipo_de_dato> nombre_del_vector;
  • 45. Son arrays (o listas ordenadas) que se redimensionan automáticamente al agregar nuevos elementos, por lo que se le pueden agregar "teóricamente", infinitos elementos. Los vectores nos permiten acceder a cualquier elemento que contenga, mediante el operador[]. Debe tenerse en cuenta que si se intenta acceder a una posición que excede los límites del vector, este no hará ningún chequeo, por lo que se debe ser cuidadoso al utilizar este operador. Para asegurar un acceso seguro al vector, se puede utilizar el método at(int), que lanza una excepción de tipo std::out_of_range en caso de que esto ocurra. Para añadir elementos al final del vector, se utiliza el método push_back(const T&). Por otro lado, para eliminar un elemento del final del vector, se debe usar el método pop_back().
  • 46. #include <vector> //librería que contiene a la clase vector #include <iostream> using namespace std; int main() { vector<int> intVector; //crea un vector de enteros (sin elementos) intVector.push_back(25); //agrega el entero 25 al vector cout << "El primer elemento es: " << intVector.front() << " y mi vector tiene " << intVector.size() << " elementos." << endl; //imprime el primer elemento, retornado por el método front() intVector.push_back(32); //agrego el entero 32 al vector cout << "El primer elemento es: " << intVector[0] << endl; //imprime 25 intVector.pop_back(); //elimina el último elemento del vector (i. e. 32) cout << "Ahora tengo: " << intVector.size() << " elementos." << endl; //imprimirá 1 return 0; }
  • 47. Colas dobles: son parecidas a los vectores, pero tienen mejor eficiencia para agregar o eliminar elementos en las "puntas". deque<tipo_de_dato> nombre_de_la_cola; Además de los métodos push_back(const T&) y pop_back(), se agregan los métodos push_front(const T&) y pop_front(), que realizan lo mismo que los ya explicados, pero en el comienzo de la cola. #include <deque> //librería de deques using namespace std; int main() { deque<int> intDeque; intDeque.push_front(25); intDeque.push_back(12); while(intDeque.size()) intDeque.pop_back(); //borra todos los elementos return 0; }
  • 48. Listas: Son eficientes a la hora de agregar elementos. La diferencia con las colas dobles, es que son más eficientes para eliminar elementos que no estén en alguna de las "puntas" list<tipo_de_dato> nombre_de_la_lista; Adaptadores de secuencia. Contenedores asociativos: map y multimap, que permiten asociar una "clave" con un "valor". map no permite valores repetidos, mientras que multimap si. map<tipo_de_llave, tipo_de_dato> nombre_del_map; multimap<tipo_de_llave, tipo_de_dato> nombre_del_multimap
  • 49. #include <map> //librería que contiene a map y multimap #include <string> //librería de strings #include <iostream> //librería de entrada/salida using namespace std; int main() { map<int, string> intAString; intAString[1] = "uno"; intAString[10] = "diez"; cout << "En intAString[1]: " << intAString[1] << endl; cout << "En intAString[10]: " << intAString[10] << endl; return 0; }
  • 50. ITERADORES • Pueden considerarse como una generalización de la clase de "puntero". Un iterador es un tipo de dato que permite el recorrido y la búsqueda de elementos en los contenedores. Como las estructuras de datos (contenedores) son clases genéricas, y los operadores (algoritmos) que deben operar sobre ellas son también genéricos (funciones genéricas), Stepanov y sus colaboradores tuvieron que desarrollar el concepto de iterador como elemento o nexo de conexión entre ambos. El nuevo concepto resulta ser una especie de punteros que señalan a los diversos miembros del contenedor (punteros genéricos que como tales no existen en el lenguaje).
  • 51. ALGORITMOS Combinando la utilización de templates y un estilo específico para denotar tipos y variables, la STL ofrece una serie de funciones que representan operaciones comunes, y cuyo objetivo es "parametrizar" las operaciones en que estas funciones se ven involucradas de modo que su lectura, comprensión y mantenimiento, sean más fáciles de realizar. Un ejemplo es la función copy, la cual simplemente copia variables desde un lugar a otro. Más estrictamente, copia los contenidos cuyas ubicaciones están delimitadas por dos iteradores, al espacio indicado por un tercer iterador.
  • 52. La sintaxis es: copy (inicio_origen, fin_origen, inicio_destino); De este modo, todos los datos que están entre inicio_origen y fin_origen, excluyendo el dato ubicado en este último, son copiados a un lugar descrito o apuntado por inicio_destino. Un algoritmo muy importante que viene implementado en la biblioteca STL, es el sort. El algoritmo sort, ordena cualquier tipo de contenedor, siempre y cuando se le pasen como argumentos, desde donde y hasta donde se quiere ordenarlo.
  • 53. #include <vector> #include <deque> #include <algorithm> int main() { vector<int> intVector; intVector.push_back(60); intVector.push_back(12); intVector.push_back(54); //para este momento, el vector tiene 60,12,54 sort(intVector.begin(), intVector.end()); //listo, array ordenado, ahora tiene 12,54,60 /*Notar que si en vez de un vector, fuese una deque, se ordenaría de la misma manera. */ }
  • 54. Entre las funciones más conocidas están swap (variable1, variable2), que simplemente intercambia los valores de variable1 y variable2; max (variable1, variable2) y su símil min (variable1, variable2), que retornan el máximo o mínimo entre dos valores; find (inicio, fin, valor) que busca valor en el espacio de variables entre inicio y fin; etcétera. Los algoritmos son muy variados, algunos incluso tienen versiones específicas para operar con ciertos iteradores o contenedores, y proveen un nivel de abstracción extra que permite obtener un código más "limpio", que "describe" lo que se está haciendo, en vez de hacerlo paso a paso explícitamente.
  • 55. • El programa o aplicacion que recibe los datos de la forma es el siguiente: • • #using <mscorlib.dll> • • #using <System.dll> • • #using <lcnet.dll> • • using namespace System; • • void main(){ • • //declarando variables • • int base1, altura; • • Double area;
  • 56. REQUISITOS PROGRAMACIÓN INTERNET (POI) • Para poder construir programas o aplicaciones orientadas a internet en VISUAL CPP CGI, se ocupa lo siguiente: • 1.- Una pc con enlace directo a internet esta pc le llamaremos servidor fisico • 2.- El mejor editor del mundo, para crear paginas html y programas de vcpp, el NOTEPAD o WORDPAD de windows. • 3.- El compilador de VISUAL CPP, que se puede obtener gratis, bajandolo de www.microsoft.com/net/, aguas son mas de 100 mb, bajarlo e instalarlo con todos los default's o comprar el visual studio net o mejor aun vc++ net • 4.- Una libreria especializada en obtener los datos que manda una pagina html, llamada lcnet.dll que se puede bajar aqui www.programacionfacil.com/visualc++/lcnet.dll bajarla y ponerla dentro de el folder (TAREAS) o directorio donde crearan todos los programas que se pediran en este curso.
  • 57. CONDICIONES SIMPLES • Variables • Operadores Relacionales • Constante o Variables • sexo • = • m • sueldo • > • 300,000
  • 58. CONDICIONES COMPUESTAS • En muchas ocasiones es necesario presentar mas de una condición para su evaluación al computador. • Por ejemplo que el computador muestre la boleta de un alumno si este estudia la carrera de medicina y su promedio de calificaciones es mayor de 70. • En muchas ocasiones es necesario presentar mas de una condicion para su evaluacion al computador. • Por ejemplo que el computador muestre la boleta de un alumno si este estudia la carrera de medicina y su promedio de calificaciones es mayor de 70.
  • 60. FIN DEL MANUAL • Gaitán Velázquez Maryfer • Mena Ramírez Roberto Michell • 2Am Programación • D-5