Macros LENGUAJE DE PROGRAMACIÓN ESTRUCTURADO
Macros tipo objeto #define IDENTIFICADOR VALOR Permiten definir identificadores que son automáticamente reemplazados por un fragmento de código. Son especialmente útiles para definir constantes: #define PI 3.14159265358979323846 #include <iostream> #define PI 3.14159265358979323846 using namespace std; double areacirculo(double r) { return PI * r * r; int main() { cout<<areacirculo(10)<<endl; #define MAX_L 10001 return 0;
Macros tipo función #define IDENTIFICADOR( ) EXPRESION Permiten definir identificadores y parámetros que son automáticamente reemplazados por un fragmento de código. Son especialmente útiles para hacer magia!! Operador Condicional (?) Permite similar un if-else en una sola línea: cout << (x > 0? "positivo" : "negativo") <<endl; #include <iostream> #define debug(x) cout<<#x<<" = "<<X<<endl; #define minimo(a, b) ((a) < (b)? (a) : (b)) using namespace std; int main() { int x = 5, y = 4; debug(x); debug(y); debug(x + y); debug(minimo(x, y)); return 0;
Estructuras LENGUAJE DE PROGRAMACIÓN ESTRUCTURADO
Estructuras Permiten agrupar variables de distinto tipo Generalmente las variables están relacionadas entre si, y en conjunto representan una entidad mayor Permiten organizar un programa incorporando principios básicos de orientación a objetos Ejemplos: Alumno, Polinomio, Poligono, Cuota, Curso #include <iostream> #include <cmath> #define MAX_G 100 using namespace std; struct Polinomio { int grado; int coef[max_g]; ; int main() { Polinomio P; return 0;
Estructuras 1. Definición: #define MAX_G 100 struct Polinomio { int grado; int coef[max_g]; ; 2. Declaración: int main() { Polinomio P; return 0; 3. Acceso: Polinomio P, A, B; P.grado = A.grado + B.grado; for(int i=0; i<=p.grado; i++) P.coef[i] = 0; También pueden ser consideradas como tipos de datos compuestos
Paso por valor y referencia LENGUAJE DE PROGRAMACIÓN ESTRUCTURADO
Envío de parámetros a funciones y procedimientos PASO POR VALOR Se envía una copia del parámetro Dentro de la función se puede modificar la copia del parámetro, sin modificarse el parámetro original Cuando los parámetros son tipos de datos complejos, realizar la copia puede ser costoso Por defecto en C/C++ PASO POR REFERENCIA Se envía una referencia al parámetro Al tratarse de la misma referencia al parámetro, cualquier cambio se reflejara dentro y fuera de la función El paso por referencia es siempre rápido ya que no se hace ninguna copia! Por defecto en Java. En C++ se debe usar el operador &
Tipos primitivos: int, double, char PASO POR VALOR int sumar(int a, int b) { return a + b; PASO POR REFERENCIA void incrementar(int &a) { a++; void intercambiar(int &a, int &b) { int tmp = a; a = b; b = tmp; int main() { int a = 3, b = 5; intercambiar(a, b); cout<<a<<" "<<b<<endl; return 0;
Arreglos y Cadenas CADENAS SIEMPRE PASO POR REFERENCIA void leer(char nombre[]){ cin>>nombre; int main() { char nombre[100]; leer(nombre); cout<<"hola "<<nombre<<endl; int return 0; ARREGLO SIEMPRE PASO POR REFERENCIA void leer(int P[], int n){ for(int i=0; i<n; i++) cin>>p[i]; int main() { int A[5]; leer(a, 5); return 0;
Estructuras Por defecto en C++ se envían por valor Las estructuras pueden tener muchos datos dentro de ellas; por este motivo, como buena práctica se debe procurar utilizar referencias siempre que sea posible. void leerpolinomio(polinomio &P) void imprimirpolinomio(polinomio &P) Polinomio multiplicar(polinomio &A, Polinomio &B)
Operadores de Estructuras 1. Multiplicación de Polinomios #define MAX_G 100 struct Polinomio { int grado; int coef[max_g]; ; Polinomio operator *(const Polinomio &A, const Polinomio &B) { // Implementacion // return PolinomioProducto int main() { Polinomio P1, P2; // Leer P1 y P2 Polinomio C = P1 * P2; Podemos definir los operadores * / + - para nuestras estructuras return 0;
Ejercicios LENGUAJE DE PROGRAMACIÓN ESTRUCTURADO
1. Ordenamiento por Metodo de Burbuja Implementar utilizando la funcion intercambiar(int &a, int &b)
2. Implementar funciones para Polinomios void leerpolinomio(polinomio &P) void imprimirpolinomio(polinomio &P) Polinomio multiplicar(polinomio &A, Polinomio &B) Polinomio: int grado, int coef[max_g]
3. Implementar Operadores para Fechas struct Fecha{ int dia, mes, anio; ; Fecha operator +(const Fecha &F, int d) Fecha operator -(const Fecha &F, int d) int operator -(const Fecha &F1, const Fecha &F2)
4. Implementar funciones para Matrices void leermatriz(matriz &M) void transponermatriz(matriz &M) Matriz: int R, int C, int X[MAX_R][MAX_C] Matriz multiplicar(matriz &A, Matriz &B) void imprimirmatriz(matriz &M) Reto: Matriz inversa(matriz &M) (asumir matriz cuadrada)