Академический Документы
Профессиональный Документы
Культура Документы
OBJETIVOS
Aprender las tcnicas bsicas del clculo
numrico para su empleo en la resolucin
de las ecuaciones que aparecen en
Fsica.
Aprender los elementos bsicos de al
menos un lenguaje de programacin.
TEMA I: INTRODUCCIN
Los idiomas ms utilizados en la computacin cientfica
(especialmente en la fsica) son FORTRAN y C / C + +.
Tradicionalmente FORTRAN fue el idioma de eleccin, y todava
hoy hay una gran cantidad de programas disponibles en las
bibliotecas FORTRAN.
Sin embargo, durante la ltima dcada, C / C + + se ha hecho cada
vez ms importante en la fsica, por lo que este curso se centra en
C + + y se aleja del FORTRAN.
Seguimos convencidos de que el lenguaje FORTRAN es mejor para
la fsica, pero para obtener un compilador FORTRAN 90/95, uno
tiene que comprar un paquete comercial, mientras que el
compilador C + + est disponible sin costo alguno tanto para Linux
como para Windows.
Algoritmos y programas
Los programas son conjuntos de instrucciones escritas en un
lenguaje de programacin (cdigo fuente) que ser interpretado
por un ordenador y traducido a lenguaje mquina (cdigo objeto)
para poder ser ejecutado (programa ejecutable).
El lenguaje de programacin permite especificar a la
computadora las acciones que debe ejecutar, escritas en un
lenguaje relativamente prximo al lenguaje humano.
El algoritmo es un procedimiento que se puede implementar en
un ordenador. Consiste en una secuencia ordenada de pasos
que conduce a la resolucin de un problema determinado en un
nmero finito de pasos.
Todo en una sola lnea y tendra el mismo significado que el cdigo previo.
INTRODUCCIN AL C++
1.- Variables. Tipos de datos
2.- Operadores
3.- Operaciones bsicas de Entrada/Salida: operadores cout y cin
4.- Operadores de control:
a) estructura condicional: if; if else
b) bucles: while; do while; for;
5.- Arrays
6.- Funciones. Parmetros de una funcin. Argumentos pasados como
referencia. Recursividad.
7.- Punteros. Reserva dinmica de memoria.
1.- Variables
Un identificador vlido es una secuencia de una o mas letras, dgitos o
guion bajo ( _ ).
Ejemplos:
a=5;
lambda=0.300;
OJO CON PALABRAS RESERVADAS!!!
Muy importante: El C++ es un lenguaje que distingue entre
minsculas y maysculas.
Tipos de datos
Resumen de los fundamentales tipos bsicos en C++
Nombre
Descripcin
Tamao
Rango
char
Tipo carcter
1 byte
int
4 bytes
-2147483648 a
2147483647
float
4 bytes
double
Una variable puede ser global o local: Una variable global es aquella que se
declara en el cuerpo principal del programa fuente, fuera de las funciones,
mientras que una variable local es la que se declara en el cuerpo de una
funcin o en un bloque.
//Ejemplo:
#include <iostream>
using namespace std;
int
Numero_entero;
char nombre;
char apellido [20];
int main ()
{
int edad;
float A;
cout << Teclea tu edad:
cin>> edad;
.
}
Variables globales
Variables locales
Aqu, ancho y tabulador son dos constantes. Son tratadas como variables
normales, salvo que sus valores no pueden ser modificados despus de su
definicin.
2.- Operadores
2.1 Operadores aritmticos
Las cinco operaciones aritmticas implementadas en C++ son:
+
Suma (addition)
Resta (subtraction)
Multiplicacin (multiplication)
Divisin (division)
Mdulo (module)
Resultados:
a:4; b:7
expresin
es equivalente a
a += b;
a = a + b;
a -= 5;
a = a - 5;
a /= b;
a = a / b;
a *= b;
a = a * b;
3- Operadores de Entrada/Salida
cout: operador de salida por pantalla (cout<< expresin;).
4. Operadores de Control
4.1 Estructura condicional: if
La estructura if se usa para ejecutar una sentencia o un bloque de sentencias
solamente si se cumple una determinada condicin. Por ejemplo:
if (x == 100)
cout << "x is 100";
sacar por pantalla x is 100 solamente si el valor almacenado en la
variable x es 100.
Si quisiramos que se ejecutase ms de una sentencia en el caso de que se
cumpla la condicin, podemos especificar un bloque mediante el usos de
llaves { }:
if (x == 100)
{
cout << "x is ";
cout << x;
}
RESULTADO:
Introduce el valor de partida > 8
8, 7, 6, 5, 4, 3, 2, 1, Terminado!
b) Instruccin do-while
//instruccin do-while
#include <iostream>
using namespace std;
int main ()
{
int n;
do {
cout << "Enter your
number: ";
cin >> n;
cout << "You entered: "
<< n << "\n";
} while (n != 0);
cout<<"By by ..."<<endl;
system("pause");
return 0;
}
c) Instruccin for
//instruccin for
#include <iostream>
using namespace std;
int main ()
{
for (int n=10; n>0; n--) {
cout << n << ", ";
}
cout << "Terminado!\n";
system("pause");
return 0;
}
Resultado:
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, Terminado!
5.- ARRAYS
Un array es una serie de elementos del mismo tipo situados en
posiciones de memoria consecutivas.
Por ejemplo, un array que contiene 5 valores enteros de tipo int
llamado a se representara de la siguiente forma:
0
a
Para declarar un array como el de ms arriba, haremos:
int a[5];
Y para asignar valores al array, haremos, por ejemplo:
int a[5]= {1,2,3,4,5}
o bien
int a[ ]= {1,2,3,4,5}
// ejemplo de arrays
#include <iostream>
using namespace
std;
int a[ ]={1,2,3,4,5};
int n, result=0;
int main ()
{
for (n=0; n<5; n++)
{
result +=a[n];
}
cout<<result<<endl;
system("pause");
return 0;
}
Resultado:
15
Arrays multidimensionales:
Ejemplo:int A[3] [5];
#include <iostream>
using namespace std;
#define Filas 3
0
#define Columnas 5
1
int A [Filas] [Columnas];
int n,m;
2
int main()
{
for (n=0; n<Filas; n++)
for (m=0; m<Columnas; m++)
{
A [n] [m] = (n+1)*(m+1);
cout<<"A("<<n<<","<<m<<")=
"<<A [n] [m] <<endl;
}
system ("pause");
return 0;
}
Resultado
0
10
12
15
A(0,0)= 1
A(0,1)= 2
A(0,2)= 3
0
A(0,3)= 4
A(0,4)= 5
1
0
A(1,0)= 2
A(1,1)= 4
1
2
A(1,2)= 6
2
3
A(1,3)= 8
A(1,4)= 10
A(2,0)= 3
A(2,1)= 6
A(2,2)= 9
A(2,3)= 12
A(2,4)= 15
Presione una tecla para continuar . . .
Resultado
1
10
12
15
6.- Funciones
Una funcin es un grupo de sentencias que se ejecutan cuando son llamadas
desde algn punto del programa. Su formato es el siguiente:
tipo nombre (lista de parmetros)
La llamada a una funcin se realiza desde el programa principal invocando
su nombre seguido de los argumentos separados por comas y encerrados
entre parntesis.
Las funciones se deben declarar antes de invocarlas
// ejemplo n 1 de funciones:
#include <iostream>
using namespace std;
int suma (int a, int b){
int r; r = a+b; return (r); }
int main ( ) {
int z; z=suma(5,3); cout<<"Resultado: "<<z<<endl;
system("pause");
Resultado: 8
return 0;}
// ejemplo n 2 de funciones:
primer resultado: 5
segundo resultado: 5
#include <iostream>
tercer resultado: 2
using namespace std;
cuarto resultado: 6
int resta (int a, int b){
Presione una tecla para continuar . . .
int r; r = a-b; return (r); }
int main ( ) {
int x=5, y=3, z;
z = resta (7,2);
cout << primer resultado: " << z << endl;
cout << "segundo resultado: " << resta (7,2) << endl;
cout << tercer resultado: " << resta (x,y) << endl;
z= 4 + resta (x,y);
cout << cuarto resultado: " << z << endl;
system("pause");
return 0;}
//function swap
#include <iostream>
using namespace std;
int swap(int *a, int *b){
cout<<endl<<"estoy en la funcion"<<endl;
cout<<"dir a= "<<a<<", "<<"dir b= "<<b<<endl;
cout<<"*a= "<<*a<<", "<<"*b= "<<*b<<endl;
cout<<"hago el swap!"<<endl;
int temp; temp=*a;*a=*b;*b=temp;
cout<<"*a= "<<*a<<", "<<"*b= "<<*b<<endl;
cout<<"me voy de la funcion"<<endl<<endl;
}
int main ( ){
int a=5,b=3;
cout<<"a= "<<a<<", "<<"b= "<<b<<endl;
swap(&a,&b);
cout<<"a= "<<a<<", "<<"b= "<<b<<endl;
cout<<"& a= "<<&a<<", "<<"& b= "<<&b<<endl;
cout << "Programa terminado" << endl;
system ("PAUSE") ;
return 0;}
a= 5, b= 3
estoy en la funcion
dir a= 0x22ff74, dir b= 0x22ff70
*a= 5, *b= 3
hago el swap!
*a= 3, *b= 5
me voy de la funcion
a= 3, b= 5
& a= 0x22ff74, & b= 0x22ff70
Programa terminado
Presione una tecla para continuar . . .
Es decir:
&= operador direccin, permite hallar la direccin de la variable
a la que se aplica.
*= operador indireccin, permite acceder al valor almacenado
en la zona de memoria donde resida la variable a la que se
aplica el operador.
a
0x22ff74
0x22ff70
direcciones
valores
Declaracin de funciones.
Hasta ahora, hemos definido todas las funciones antes de que se realice la
primera llamada desde el programa principal. Si no fuese as, dara error al
compilar.
Sin embargo, hay una alternativa para escribir el cdigo fuente de las
funciones despus del programa principal. Se puede hacer mediante la
declaracin de un prototipo de funcin antes de ser usada, en lugar de la
funcin completa. Esta declaracin es mas corta que la definicin completa,
pero suficiente como para que el compilador conozca su tipo y el tipo de sus
argumentos.
Ejemplo 1:
primervalor es 10
segundovalor es 20
Programa terminado
//puntero 1
Presione una tecla para continuar . . .
#include <iostream>
using namespace std;
int main ( )
{
int primervalor=5, segundovalor=7;
int * mipuntero; // variable tipo puntero
mipuntero=&primervalor; //el puntero apunta a la variable primervalor
*mipuntero=10;
cout<<"primervalor es " << primervalor<<endl;
mipuntero=&segundovalor;//el puntero apunta a la variable
segundovalor
*mipuntero=20;
cout<<"segundovalor es " << segundovalor<<endl;
cout << endl<< "Programa terminado" << endl;
system ("PAUSE") ;
return 0;
}
Ejemplo 2:
firstvalue is 10
secondvalue is 20
//puntero2
Programa terminado
#include <iostream>
Presione una tecla para continuar . . .
using namespace std;
int main (){
int firstvalue = 5, secondvalue = 15;
int * p1, * p2;
p1 = &firstvalue; // p1 = address of firstvalue
p2 = &secondvalue; // p2 = address of secondvalue
*p1 = 10; // value pointed by p1 = 10
*p2 = *p1; // value pointed by p2 = value pointed by p1
p1 = p2; // p1 = p2 (value of pointer is copied)
*p1 = 20; // value pointed by p1 = 20
cout << "firstvalue is " << firstvalue << endl;
cout << "secondvalue is " << secondvalue << endl;
cout << endl<< "Programa terminado" << endl;
system ("PAUSE") ;
return 0;}
Punteros y arrays
El concepto de array est muy vinculado al de puntero.
De hecho, el identificador de un array es equivalente a la
direccin de su primer elemento, es decir, es un puntero
constante.
Supongamos las dos declaraciones siguientes:
int A [20];
int *p;
Si ahora hacemos la asignacin:
p= A;
A partir de ese momento p y A son equivalentes.
Ejemplo 3:
//punteros3: punteros y arrays
#include <iostream>
using namespace std;
int main ( ){
int A[5];
int * p; // variable tipo puntero
for (int n=0;n<5;n++) {
p=&A[n]; // el puntero apunta a la variable A (array)
*p=(n+1)*10;
cout<<A[n] << ", ";}
cout << endl<< "Programa terminado" << endl;
system ("PAUSE") ;
return 0;}
10, 20, 30, 40, 50,
Programa terminado
Presione una tecla para continuar . . .
Punteros a funciones
Se usa para pasar una funcin como argumento a otra funcin.
Veamos el siguiente ejemplo:
// pointer to functions
12
#include <iostream>
8
using namespace std;
int addition (int a, int b)
Programa terminado
{ return (a+b); }
Presione una tecla para continuar . . .
int subtraction (int a, int b)
{ return (a-b); }
int operation (int x, int y, int
(*functocall)(int,int)){int g; g = (*functocall)(x,y); return (g);}
int main (){
int m,n;
int (*minus)(int,int) = subtraction;
m = operation (7, 5, addition);
cout <<m<<endl;
n = operation (20, m, minus);
cout <<n<<endl;
cout << endl<< "Programa terminado" << endl;
system ("PAUSE") ; return 0;}