Академический Документы
Профессиональный Документы
Культура Документы
28 de mayo de 2010
Funcional Vs. Imperativo (Intrprete Vs. Compilador). e Transformacin de estados. o Sintaxis de C++. Entorno Code::Blocks (ejecucin,compilacin y debugging). o o Ejercicios en vivo y en directo.
Imperativo
En la terica ya vieron algunas diferencias con funcional: o Los programas no son necesariamente funciones. Existe el concepto de Variable y de cambio de estado. Se amplia un poco el lenguaje de especicacin (Vale, o Implica, @, etc)
Lenguaje C/C++
Fue creado en la dcada del 80 por Bjarne Stroustrup (no, no e tengo idea como se pronuncia). La idea principl fue extender el lenguaje C para poder trabajar con objetos. Lenguaje amado y odiado por muchos. Lo que vamos a usar en la materia es solo una pequea n porcin de todo lo que ofrece. o Ms adelante en la carrera van a sacarle mas el jugo (Algo II), a ahi van a entender porqu hay gente que lo odia. e
Tipos Bsicos a
En C++ los tipos se escriben con Minscula. u char. bool. int (Int, short int, long int, long long int). oat (oat, double, long double). Tambin se puede usar el trmino void (vacio) para indicar que e e una funcin no recibe o devuelve parmetros y const para indicar o a que un parmetro no debe modicarse. a
Arreglos
Los arreglos son similares a las listas, pero permiten acceder directamente a cada uno de sus elementos sin tener que pasar por todos los anteriores. Tienen longuitud ja, la misma debe indicarse en el momento en que se declara la variable. Para acceder a una posicin para guardar o leer un dato se o pone el subindice entre corchetes. Veamos ejemplos:
char b[100];
// Declaro un arreglo de char de // nombre b y de 100 posiciones. // En la posicion 13 guardo la a. // // // // // Ojo!! el compilador no chequea que me pase con los subindices!! y de paso recordemos que se empieza a numerar desde 0, o sea que el rango va desde b[0] a b[99]. // otra forma, declaramos // e inicializamos.
b[13]=a; b[1000] = c;
Un poco de sintaxis
Al igual que haskell, cuando denimos una funcin tenemos o que indicar la aridad.
int sumar(int a, int b){...} bool espar(const int &a){...} void incrementar(int &a){...}
Cada linea de cdigo debe terminar con un punto y coma. o Toda funcin (que no devuelva void) debe terminar con un o return que indica cual es el valor de salida.
int sumar(int a, int b){ return a+b; } int sumar1(int a, int b){ int res; res = a+b; return res; }
Primer Cuatrimestre de 2010 Algoritmos y Estructura de Datos I
Todo programa en C++ tiene que tener una funcin llamada o Main. Es una funcin como cualquier otra pero indica el o Entry Point del programa, ,es decir, desde donde tiene que empezar a ejecutar. int main(int argc, char** argv){...} int main(int argc, char* argv[]){...} int main(){...}
Un poco de sintaxis
Cuando declaremos una variable obligatoriamente tenemos que indicar el tipo, y opcionalmente inicializarla, por Ej.: int a; int a=3; char a=a; Si no usamos la variable en el programa o la usamos sin inicializarla el compilador nos va a tirar un warning, por ej: int sumar(int a, int b){ int c; return a+b; }
Un poco de sintaxis
Cuando declaremos una variable obligatoriamente tenemos que indicar el tipo, y opcionalmente inicializarla, por Ej.: int a; int a=3; char a=a; Si no usamos la variable en el programa o la usamos sin inicializarla el compilador nos va a tirar un warning, por ej: int sumar(int a, int b){ int c; return c+b; }
Librerias
Muchas veces vamos a necesitar incluir librerias en nuestro programa. Una libreria es un archivo donde hay denidas funciones que podemos usar, asi nos ahorramos tener que estar escribiendolas de nuevo cada vez. Con la instalacin del compilador ya vienen varias. o Para incluir una libreria usamos la directiva #include<...>, y si queremos incluir una libreria o archivo que esta en el mismo directorio donde est el proyecto principal tenemos que a usar #include"...".
Por ejemplo para mostrar algun mensaje por pantalla necesitamos el operador << que esta en la libreria iostream: #include <iostream> using namespace std; int main(int argc, char* argv[]) { cout << "Hola mundo!" << endl; }
Usando funciones
Al igual que Haskell podemos llamar funciones desde otras funciones. En C++ tenemos dos formas de pasar parmetros a las a funciones, por referencia o por copia. Por copia signica que a la funcin se le pasa otra variable o nueva con el valor de la original. Por referencia signica que se le pasa una referencia (valga la redundancia) a la variable, si la funcin le cambia el valor se o lo esta cambiando a la variable original, puede ser un comportamiento deseado o no por lo que hay que tener cuidado. En C++ se indica con un & delante del nombre de la variable. Mejor veamos un ejemplo sino no se entiende nada.
Primer Cuatrimestre de 2010 Algoritmos y Estructura de Datos I
Usando funciones
void decrementar(int &a){ a = a-1; } void incrementar(int a){ a++; } int main(int argc, char* argv[]){ int a = 10; incrementar(a); decrementar(a); incrementar(a); cout << a << endl; }
Cul es el valor que se muestra por pantalla? Donde vive cada a variable?
Primer Cuatrimestre de 2010 Algoritmos y Estructura de Datos I
Usando funciones
En Algo 1 cuando lo sugiera la especicacin, generalmente si o el problema tiene algun parmetro de entrada que se modica. a En Algo 2 va a ser util para cuando tengan que trabajar con estructuras muy grandes.
Usando funciones
Supongamos que tenemos el archivo cuadruple.cpp con este cdigo: o
#include <iostream> using namespace std; int main(int argc, char* argv[]) { cout << "El cuadruple de 2 es: " << cuadruple(2) << endl; return 0; } int cuadruple (int a) { return 4*a; }
Por qu no funciona? e
Usando funciones
Una solucin: o
#include <iostream> using namespace std; int cuadruple (int a) { return 4*a; } int main(int argc, char* argv[]) { cout << "El cuadruple de 2 es: " << cuadruple(2) << endl; return 0; }
Funciones
Una opcin es usar Prototipos de funciones, basicamente se o declara la funcin al principio y luego se implementa, por Ej:. o
#include <iostream> using namespace std; int cuadruple (int a); int main(int argc, char* argv[]) { cout << "El cuadruple de 2 es: " << cuadruple(2) << endl; return 0; } int cuadruple (int a) { return 4*a; }
Va tomando color, pero est bueno que este todo en el mismo a archivo?
Primer Cuatrimestre de 2010 Algoritmos y Estructura de Datos I
La solucion ms elegante es separar la implementacin de las a o funciones de su declaracin y ponerlos en archivos separados. o El archivo con las declaraciones lleva la extensin h (de o Headers) y el de las implementaciones cpp. Luego incluimos el .h en TODOS los .cpp que usen las funciones declararadas ahi. Para eso usamos la directiva #include"archivo.h". Tambin separamos la funcin principal (main) de las otras e o funciones. En el ejemplo anterior nos quedan 3 archivos main.cpp, funciones.h y funciones.cpp.
main.cpp
#include <iostream> #include "funciones.h" using namespace std; int main(int argc, char* argv[]) { cout << "El cuadruple de 2 es: " << cuadruple(2) << endl; return 0; }
funciones.cpp
funciones.h
Code::Blocks
CodeBlocks es un Entorno Integrado de Desarrollo (IDE). No es un compilador, interactua con el compilador. Nos provee de muchas facilidades a la hora de programar y buscar errores.