LENGUAJE C
OPERADORES
Operadores aritmeticos.
Los operadores aritmeticos que se pueden utilizar en C++ son:
+ suma
- resta
* multiplicacion
/ division
% residuo
Operacion Accion
x++ Postincremento
++x Preincremento
x-- Postdecremento
--x Predecremento
+x + unario
-x - unario
x*y Multiplicacion
x/y Division
x%y Modulo
x+y Suma
x-y Resta
Operadores de Relacion
< Menor que
<= Menor o igual que
> Mayor que
>= Mayor o igual que
== Igual
!= No igual
Operadores logicos.
! Negacion logica
&& Y logico
|| O logico
DEFINICION DE VARAIBLES
int a, b; // variables enteras
char x; // variables caracter
float m; // variables de tipo real
ARREGLOS
Son estructuras de datos del mismo tipo, que permiten manipular datos de manera flexible, organiza la información de manera estructurada, para representar sistemas del mundo real.
Arreglos unidimensionales. Llamados tambien VECTORES, es un arreglo de una sola dimensión, es una lista de datos, que hace referencia por medio de un nombre común
Ejemplo de vectores enteros:
int a[10]; //numero de elementos
Arreglos Bidimensionales. Llamados también MATRICES, es una estructura de datos tipo tabla, que contiene filas y columnas.
Definicion de matrices enteras:
int m[10][10]; //numero de columnas y numero de filas
Arreglos Tridimensionales. Son arreglos en tres dimensiones, orientados a la ingeniería civil, física, matemática, otros
ESTRUCTURA DE DATOS
PUNTEROS:
Un puntero o un apuntador, es una variable que da referencia a una región de memoria, en otras palabras es una variable cuyo valor es una dirección de memoria.
Definición de un puntero:
<tipo> *<nombre del puntero>
ejemplo:
int *a;
ESTRUCTURAS DE DATOS DINAMICAS
Una de las aplicaciones más interesantes y potentes de la memoria dinámica y de los punteros son, sin duda, las estructuras dinámicas de datos.
En muchas ocasiones se necesitan estructuras que puedan cambiar de tamaño durante la ejecución del programa. Por supuesto, podemos crear arrays dinámicos, pero una vez creados, su tamaño también será fijo, y para hacer que crezcan o disminuyan de tamaño, deberemos reconstruirlos desde el principio.
Las estructuras dinámicas nos permiten crear estructuras de datos que se adapten a las necesidades reales a las que suelen enfrentarse nuestros programas. Pero no sólo eso, como veremos, también nos permitirán crear estructuras de datos muy flexibles, ya sea en cuanto al orden, la estructura interna o las relaciones entre los elementos que las componen.
Las estructuras de datos están compuestas de otras pequeñas estructuras a las que llamaremos nodos o elementos, que agrupan los datos con los que trabajará nuestro programa y además uno o más punteros autoreferenciales, es decir, punteros a objetos del mismo tipo nodo.
Una estructura básica de un nodo para crear listas de datos seria:
struct nodo {
int dato;
struct nodo *otronodo;
};
Para acceder a un nodo de la estructura sólo necesitaremos un puntero a un nodo.
Las estructuras dinámicas son una implementación de TDAs o TADs (Tipos Abstractos de Datos). En estos tipos el interés se centra más en la estructura de los datos que en el tipo concreto de información que almacenan.
Dependiendo del número de punteros y de las relaciones entre nodos, podemos distinguir varios tipos de estructuras dinámicas. Enumeraremos ahora sólo de los tipos básicos:
Listas abiertas: cada elemento sólo dispone de un puntero, que apuntará al siguiente elemento de la lista o valdrá NULL si es el último elemento.
Pilas: son un tipo especial de lista, conocidas como listas LIFO (Last In, First Out: el último en entrar es el primero en salir). Los elementos se "amontonan" o apilan, de modo que sólo el elemento que está encima de la pila puede ser leído, y sólo pueden añadirse elementos encima de la pila.
Colas: otro tipo de listas, conocidas como listas FIFO (First In, First Out: El primero en entrar es el primero en salir). Los elementos se almacenan en fila, pero sólo pueden añadirse por un extremo y leerse por el otro.
Arboles: cada elemento dispone de dos o más punteros, pero las referencias nunca son a elementos anteriores, de modo que la estructura se ramifica y crece igual que un árbol.
Y pueden ser:
Arboles binarios
Arboles binarios de búsqueda (ABB)
Arboles AVL
Arboles B
Tablas HASH: son estructuras auxiliares para ordenar listas.
Grafos: es el siguiente nivel de complejidad, podemos considerar estas estructuras como árboles no jerarquizados.
C++
declara y define cuatro objetos predefinidos, uno de la clase istream, estos objetos están disponibles para cualquier programa C++:
cin: entrada estándar: teclado.
cout: salida estándar: pantalla.
cerr: salida sin buffer a pantalla, la salida es inmediata, no es necesario vaciar el buffer.
clog: igual que cerr, aunque suele redirigirse a un fichero log en disco.
Ejemplo:
int entero = 10;
char caracter = 'c';
char cadena[] = "Hola";
float pi = 3.1416;
void *puntero = cadena;
cout << "entero=" << entero << endl;
cout << "caracter=" << caracter << endl;
cout << "cadena=" << cadena << endl;
cout << "pi=" << pi << endl;
cout << "puntero=" << puntero << endl;
CONCEPTOS DE:
PROGRAMACIÓN ORIENTADA A OBJETOS
En la programación en C++, es muy común ver el uso del término TAD o TDA (Tipo de Dato Abstracto),pero bueno, pues esta no es la esencia en esta introducción. Y hago la suposición de que se haya visto algo sobre esto en su clase de programación
VENTAJAS:
Fomenta la reutilización y extensión del código
Permite crear sistemas mas complejos
Relaciona el sistema al mundo real
Facilita la creación de programas visuales
Construye prototipos
Agiliza el desarrollo de software
Facilita el trabajo en equipo
Facilita el mantemiento del software
CLASE
Es una representación real de un TDA. Define atributos y métodos que implementa la estructura de datos.
Define comportamientos y características que van a tener los objetos
OBJETO
Un objeto es una instancia de una clase. Puede ser identificado en forma única por su nombre, el cuál es representado por los valores de sus atributos en un momento en particular.
Al ser una instancia de una clase, es el que decide cómo se va a comportar de acuerdo a lo que le haya definido la clase.
ATRIBUTO
Características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades.
Además son las variables que se crean dentro de la clase, las cuales toman valores distintos para cada objeto
MÉTODO
Definen el comportamiento de los objetos de una clase, es un conjunto de instrucciones que realizan una determinada tarea y son similares a las funciones de los lenguajes estructurados.
Además de dar la posibilidad de comportamiento a los objetos, son muy usados también para ir separando código que es muy extenso y en la definición de la clase se note mayor orden y quede más entendible. Y con esto ir dando pasos a la modularidad y reusabilidad.
HERENCIA
Es el mecanismo que permite que una clase A herede propiedades de una clase B. Se Dice que "A hereda de B". Objetos de la clase A tienen así acceso a los atributos y métodos de la clase B sin necesidad de redefinirlos.
Es un proceso por el que se crean unas clases a partir de otra(s) que ya existe(n), pensando sobre todo en la reutilización de código.Otra cosa que se tiene es que las clases que heredan (subclases, clases hijas) son más completas y específicas que las superclases o clases padre.Esto se da mucho cuando se nota que en una clase se usan muchas características y comportamientos de otra(s), entonces se opta por usar Herencia
Herencia Simple
Esto es cuando una clase hereda de una y solo una, clase padre. Es el tipo de herencia más común y es soportado por todos los lenguajes de Programación Orientados a Objetos.Ver Ejemplo.
Herencia Múltiple
Esto es cuando una clase puede heredar de varias superclases. No es muy común usar este tipo de herencia y además no todos los Lenguajes de Programación Orientada a Objetos lo soportan. C++ sí lo tiene
ABSTRACCION
Una clase A se llama clase abstracta si es usada solamente como una superclase para otras clases. La Clase A solamente especifica propiedades. No se usa para crear objetos. Las clases derivadas deben definir las propiedades de A.
Es la capacidad que tienen las clases para “ocultar” información acerca del comportamiento y propiedades que van a tener las clases que hereden de ella.
Características de Abstracción
Las clases abstractas pueden implementar o no métodos. Cuando no los implementan, estos son abstractos.
Las clases abstractas no se pueden instanciar directamente, sólo pueden ser heredadas.
Las clases que heredan de una clase abstracta, son las que deben implementar los métodos abstractos que éstas posean.
Polimorfismo
Capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa. Dicho de otra forma, el polimorfismo consiste en conseguir que un objeto de una clase se comporte como un objeto de cualquiera de sus subclases.
Enfocado en el último punto de la Definición Técnica, a través del manejo de herencia se puede llegar a poner en práctica este concepto.
Ya que es como lo definen: “conseguir que un objeto de una clase se comporte como cualquiera de sus subclases
Sobrecarga de Métodos
Definición Técnica:
Se refiere a la posibilidad de tener dos o más funciones con el mismo nombre pero funcionalidad diferente. Es decir, dos o más funciones con el mismo nombre realizan acciones diferentes. El compilador usará una u otra dependiendo de los parámetros usados.
VISUAL C++
Es un entorno popular de interfaz gráfica de usuario (GUI), desde este punto de vista windows es un entorno multitarea basado en ventanas que representan programas y que permite ejecución concurrente.
Visual C++ es un entorno integrado de desarrollo que permite la POO conjuntamente con el SDK(API) de windows, e incluye las siguientes herramientas de desarrollo:
Editor de texto
Compilador / Enlazador
Depurador
Visor de datos y dependencias (Browser)
El SDK (Kit de deasarrollo de software) no es mas que un complejo conjunto de funciones que añade numerosas definiciones de tipos de datos nuevos para cualquier programador de c/c++ para DOS.
WORKWAPACES
Es la construcción de cualquier tipo de programa.
Incluye los pasos a seguir para alcanzar la construcción de un objetivo (un programa o u DLL, etc)
Posibilidades de programación
Aplicación (.EXE), basada en la MFC
Librería de enlace dinámico (.DLL) basada en la MFC
Aplicación (.EXE) estándar pra windows
Librería de enlace dinámico (.DLL)
Aplicación (.EXE) modelo DOS
Librería estática (.LIB)
Generador de aplicaciones
Apoyado de la potencia de la MFC, es capaz de convertirse en un generador de aplicaciones como:
AppWizard. Genera esquetos de programas para windows basados en la MFC
ClassWizard. Herramienta de mantenimiento de los programas generados con la anterior, permite añadir o eliminar clases, modificar los comportamientos de las micas.
MFC
Son un conjunto jerárquico de clases escritas en C++ para el desarrollo de aplicaciones en el entorno windows.
Las MFC poseen un modelo de desarrollo denominado doc/view
OBJETOS VISUAL C++
PROPIEDADES
SENTENCIAS
EJERCICIOS:
punteros - Estructura de datos
Ingresar el nombre de y el promedio de n estudiantes
Ingresar el nombre y tres calificaciones de 5 estudiantes y visualizar el promedio de cada estudiante y el promedio final
Ingresar el nombre y tres calificaciones de 5 estudiantes y visualizar
Promedio de cada estudiante
Equivalencia de calificiones
Promedio final
c++
Ingresar dos cantidades y visualizar la suma, resta, multiplicación y división
Ingrese un numero y verificar si es primo
EJERCICIOS
*** POO creando un objeto perro, con los metodos de ladrar y dormir
#include <iostream.h>
class Perro{
public:
int anioDeVida;
void ladrar();
void jugar();
private:
int fechaDeNacimiento;
};
void Perro::ladrar(){
cout<<" Bow Bow Bof...";
fechaDeNacimiento=11;
}
void Perro::dormir(){
cout << "Zzzzz Zzzzz Zzzzzz....";
}
int main(){
Perro Toby;
Perro Boby;
Toby.ladrar();
Boby.dormir();
Toby.dormir();
// system("pause>nul");
return 0;
}
*** POO creando un objeto carro
#include <iostream.h>
//using namespace std;
class Coche{
public:
Coche(string _color, string _mamrcar, int fechaDeCreacion){
color=_color;
marca=_marca;
fechaDeCreacion=_fechaDeCreacion;
cout << color << endl << marca << end << fechaDeCreacion << endl << endl;
}
Coche(string_color, int _fechaDeCreacion){
color=_color;
marca="SEAT";
fechaDeCreacion=_fechaDeCreacion;
cout << color << endl << marca << end << fechaDeCreacion << endl << endl;
}
void pitar();
void acelerar();
private:
string color, marca;
int fechaDeCreacion;
};
void Coche::inicializar(){
}
void Coche::pitar(){
}
void Coche::acelerar(){
}
int main(){
Coche miCoche=Coche("Rojo","Ferraro",123444);
coche deMiAbuelo=Coche("Oxidad","MarcaLaPava",2468);
Coche
system("pause>nul");
return 0;
}
*** Estructuras dinamicas
Ingrear el nombre y tres calificaciones de 5 estudiantes y visualizar el promedio de cada uno y el promedio general
#include <stdio.h>
#include <conio.h>
#define k 5
struct registro{
char nombre[30];
int nota1;
int nota2;
int nota3;
};
struct registro calf[k];
main()
{
int i, p,pg=0;
clrscr();
printf("Nombre Nota1 Nota2 Nota3 Promedio\n");
for(i=0; i<k; i++)
{
printf("Cuadro de Calificaciones %i:\n", i+1);
printf("Nombre: "); fflush(stdout);
gets(calf[i].nombre);
printf("Nota1 : "); fflush(stdout);
scanf("%d", &calf[i].nota1);
printf("Nota2 : "); fflush(stdout);
scanf("%d", &calf[i].nota2);
printf("Nota3 : "); fflush(stdout);
scanf("%d", &calf[i].nota3);
printf("\n\n");
}
while(getchar()!='\n');
{
for(i=0; i<k; i++)
{
p=(calf[i].nota1+calf[i].nota2+calf[i].nota3)/3;
pg=pg+p;
printf("%s ", calf[i].nombre);
printf("%d ", calf[i].nota1);
printf("%d ", calf[i].nota2);
printf("%d ", calf[i].nota3);
printf("%d\n", p);
printf("\n");
}
pg=pg/k;
printf("El promedio General es: %s ", pg);
}
}
visual c++ (figura en movimiento . calculadora)