Вы находитесь на странице: 1из 31

Introduccin o Imperativo y C++

Introduccin a C++ y Code::Blocks o


Prctica Imperativo Clase 1 a Luis Agust Nieto n
Departamento de Computacin, FCEyN,Universidad de Buenos Aires. o

28 de mayo de 2010

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Menu de esta Tarde

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.

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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)

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

Interprete Vs. Compilador


En funcional teniamos a Hugs que ejecutaba programas escritos en haskell. En C++ tenemos una serie de programas que toman nuestro cdigo fuente y lo transforman en un archivo ejecutable. o

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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:

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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;

int a[] = {4,8,15,16,23,42};

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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(){...}

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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; }

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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; }

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

Al igual que Haskell y el lenguaje de especicacin tenemos la o estructura IF THEN ELSE.


int maximo(int a, int b){ int res; if(a>b){ res = a; } else{ res = b; } return res; }

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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"...".

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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; }

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

Usando funciones

Cuando vamos a usar pasaje por referencia?

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.

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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; }

Anda, pero no queda muy bueno. Por qu? e

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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.

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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; }

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

funciones.cpp

int cuadruple (int a) { return 4*a; }

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

funciones.h

#ifndef FUNCIONES_H #define FUNCIONES_H int cuadruple (int a); #endif

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

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.

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Introduccin o Imperativo y C++

Buenas prcticas de programacin a o Code::Blocks

Primer Cuatrimestre de 2010

Algoritmos y Estructura de Datos I

Вам также может понравиться