SlideShare una empresa de Scribd logo
EL LENGUAJE C++
(Introducción, variables,
operadores, funciones, primeras
compilaciones)
Técnicas Computacionales en
Física
Máster en Física y Tecnologías
Físicas,
Máster en Computación
3
Isidro González Caballero (Universidad de Oviedo)
Santander, 15/10/2012
Introducción
 El C++ es un superconjunto del C
 Soporta tanto metodologías de programación estructurada como
OOP
 Tiene la capacidad de usar librerías C y FORTRAN
 Características ajenas a la OOP y al C:
 Chequeo de tipos mejorado (más estricto)
 Constantes simbólicas (const) (chequeo de tipos constantes)
 Sustitución de funciones inline (eficiencia de ejecución)
 Argumentos por defecto (ahorro de código)
 Sobrecarga de funciones y operadores (los tipos derivados tienen
sintaxis iguales a los nativos)
 Manejo de memoria dinámica
 El tipo referencia (alias)
C++ (Técnicas Computacionales en Física)
2
Tipos fundamentales
Nombre ¿Qué representa? Entero, real,
lógico
char Un carácter Entero
short int Un entero corto Entero
int Un entero Entero
long int Un entero con mayor rango de validez Entero
float Un real Real
double Un real de doble precisión Real
long
double
Un real de doble precisión y mayor Real
bool cierto (true) o falso (false) Lógico
unsigned
C++ (Técnicas Computacionales en Física)
3
Operadores aritméticos
Operador Función Uso
= asignación int i = 7;
* multiplicación double r = 3.5 * i;
/ división double t = r / 1.2;
% modulo (resto) i = 21 % 6; // i = 3
+ suma double rt = r + t;
- resta r = rt – t;
++,-- incremento int i = 0;
int j = i++; //j = 0
int k = --i; //k = 0
+=,-=,
*=,/=
opera y asigna r += 2.6; //r = r + 2.6
r *= 2.6; //r = r * 2.6
C++ (Técnicas Computacionales en Física)
4
Operadores lógicos
Operador Función Uso
< menor que i < 5
<= menor o igual que r <= 5
> mayor que i > 5
>= mayor o igual que i >= 5
== igualdad i == 5
!= desigualdad i != 5
! NOT lógico !true; //false
&& Y lógico i < 5 && j > 4
|| O lógico i < 5 || j > 4
C++ (Técnicas Computacionales en Física)
5
Declaraciones
 Antes de utilizar una variable tenemos que declarar su tipo
 Para las funciones debemos declarar su signatura y tipo de
retorno
 La signatura está formada por el nombre de la función y el tipo de los
argumentos que espera
 Podemos inicializar una variable al declararla
 No siempre una declaración reserva un espacio en memoria 
definición
char letra; /*Declaración y definición de un carácter*/
int total = 10; //Decl., def. e inic. de un entero
double random(double seed); //Declaración de una función
Comentari
os
C++ (Técnicas Computacionales en Física)
6
Tipos derivados, static, const...
Nombre/Símb ¿Qué representa? Delante/Detras
[] Array Detrás
* Puntero, posición en memoria En medio
& Referencia, alias de la var. En medio
struct Una estructura Delante
class Una clase Delante
static Ámbito del programa Delante
const No puede modificarse Delante
C++ (Técnicas Computacionales en Física)
7
Tipos derivados, static, const...
//Punteros
int* ptrNumero; //Puntero a un entero
//Arrays
float reales[20]; //Un array de 20 floats
double punto[2] = {1.2, 3.4}; //Con inicializacion
//Struct
struct punto2D {short int x; short int y;};
//static
static int contador;
//const
const char la_letra_c = 'c';
const double pi = 3.1415926;
C++ (Técnicas Computacionales en Física)
8
Compilar
g++ -o main.cc
Escribir, compilar, linkar,
ejecutar
Código
(.cc, .C, .cpp…)
#include <iostream>
int main() {
cout << “Hola mundo”
<< endl;
return 0;
}
Diseñar
Escribir
Fichero objeto
(.obj, .o)
Ejecutable
(a.out, .exe, …)
Ejecutar
./a.out
Linkar
g++ main.o
main.o
libMyLib.so
other.o
a.out
C++ (Técnicas Computacionales en Física)
9
Compilación
Preprocesador
 No son comandos C++…
 … pero están presentes en
cualquier compilador
 Muy utilizadas en C…
 … suprimidas algunas en C++
 Se escriben con el símbolo # al
comienzo
 Es una especie de parser
Algunas posibilidades
 Incluir código de otros ficheros
 Remplazar variables o símbolos
 en gral. no necesario en C++
 Trucos sucios
 no recomendable 
 Incluye cierta lógica
Compilar
g++ -o main.cc
Código
(.cc, .C, .cpp…)
#include <iostream>
int main() {
cout << “Hola mundo”
<< endl;
return 0;
}
Fichero objeto
(.obj, .o)
main.o
libMyLib.so
other.o
Ficheros
intermedios
(.i, .ii)
Preproceso
C++ (Técnicas Computacionales en Física)
10
Directivas de preprocesador
 #include ″header.h″
 Incluye el fichero header.h
 #include <header.h>
 Idem para “ficheros estándar”… algo subjetivo 
 #define VAR value
 Reemplaza la secuencia VAR por value
 #ifdef, #ifndef, #else, #endif
 Lógica para chequer el valor de variables
 #pragma
 Mensajes al compilador. Poco utilizado
C++ (Técnicas Computacionales en Física)
11
Output básico
 Debe incluirse el cabecero (header) iostream
 Se utilizan dos objetos de tipo ostream:
 cout para la salida estándar o
 cerr para los mensajes de error...
 ... seguido del operador << …
 … y el mensaje de salida
#include <iostream>
cout << "Holan";
cout << "2 y 4 es “;
cout << 2+4 << endl;
float pi=3.1415
cout << "El valor de pi="
<< pi << endl;
Hola
2 y 4 es 6
El valor de pi=3.1415
Salto de línea
Resultado
C++ (Técnicas Computacionales en Física)
12
Funciones
 Tienen un tipo de retorno (void si no devuelven nada)
 Se debe especificar el tipo de cada uno de sus parámetros
(signatura)
 El cuerpo de la función va entre llaves { }
 La función principal del sistema es int main()
#include <iostream>
float cuadrado(float r);
int main() {
cout << "El cuadrado de 7 es " << cuadrado(7);
return 0; //Todo ha ido bien
}
float cuadrado(float r) {
float c = r*r;
return c;
}
C++ (Técnicas Computacionales en Física)
13
Ámbito (scope) y tiempo de vida
 El ámbito es el espacio del programa en que un
nombre (variable) es válido
 Normalmente es el espacio entre su declaración
y la siguiente llave cerrada, }
 Las variables solo existen (ocupan espacio en
memoria) mientras su ámbito es válido
 Salvo las declaradas static que duran hasta el
final del programa
 Aunque solo pueden ser utilizadas en el código dentro de
su ámbito
C++ (Técnicas Computacionales en Física)
14
Ejercicio 1: Programa
#include <iostream>
using namespace std; //Necesario para cout y endl
double cuadrado(double); //Declaramos funcion
int main() { //Funcion principal
int siete = 7;
cout << "El cuadrado de " << siete << " es "
<< cuadrado(7) << endl;
const double pi = 3.1415926;
cout << "pi*pi = " << cuadrado(pi) << endl;
return 0;
}
double cuadrado(double r) {
double c = r*r;
return c;
}
C++ (Técnicas Computacionales en Física)
15
[host] tar xvfz ejercicio1.tar.gz
[host] cd ejercicio1
[host] ls
ejercicio1.cpp
[host] g++ ejercicio1.cpp
[host] ls
ejercicio1.cpp a.out
[host] ./a.out
El cuadrado de 7 es 49
pi^2 = 9.8696
[host] g++ ejercicio1.cpp –o ejercicio1.exe
[host] ls
a.out ejercicio1.cpp ejercicio1.exe
[host] ./ejercicio1.exe
El cuadrado de 7 es 49
pi^2 = 9.8696
Ejercicio 1: Compilar y ejecutar
Descomprimimos
el fichero tras
descargarlo
Compilar y linkar. El
resultado es…
Ejecutar Compilar y linkar
elegiendo el
fichero de salida
Ejecutar
C++ (Técnicas Computacionales en Física)
16
Ejercicio 2: Varios ficheros
 Descargar y descomprimir ejercicio2.tar.gz
 Los ficheros de código:
 cuadrado.h: Declaración de la función
double cuadrado (double)
 cuadrado.cpp: Implementación
 ejercicio2.cpp: Función main
 El script compila.csh compila y enlaza todo:
 Crea los ficheros objeto cuadrado.o y ejercicio2.o
 Enlaza los objetos en el ejecutable ejercicio2.exe
[host] g++ -c -o cuadrado.o cuadrado.cpp
[host] g++ -c -o ejercicio2.o ejercicio2.cpp
[host] g++ -o ejercicio2.exe cuadrado.o ejercicio2.o
C++ (Técnicas Computacionales en Física)
17
Control de flujo: if-then-else
 Ejecución condicional
 Sintaxis simple:
 Si la expresión lógica es cierta se ejecuta sentencia1
 Sintaxis completa:
 Si la expresión lógica es falsa se ejecuta la sentencia2
 Si hay más de una sentencia a ejecutar por caso se meten
entre { }
if (expresión lógica)
sentencia1;
if (expresión lógica)
sentencia1;
else
sentencia2;
C++ (Técnicas Computacionales en Física)
18
if-then-else ejemplo
int mifuncion(); //Una funcion que devuelve un numero
entero
....
....
int i = mifuncion();
cout << "El valor devuelto por mifuncion es ";
if (i < 0)
cout << "negativo" << endl;
else if (i > 0)
cout << "positivo" << endl;
else
cout << "nulo" << endl;
C++ (Técnicas Computacionales en Física)
19
Control de flujo: switch
 Ejecución condicional
 Se trata de evitar if-then-else encadenados
 Sintaxis:
switch (variable)
case (valor1):
setencia1;
break;
case (valor2):
setencia2;
break;
...
default:
setenciadef;
break;
Se ejecuta si variable == valor1
Se ejecuta si variable == valor1
Se ejecuta si no se ha ejecutado ninguna
de las anteriores
C++ (Técnicas Computacionales en Física)
20
switch: ejemplo
int mifuncion(); //Una funcion que devuelve un numero entero
....
....
int i = mifuncion();
cout << "El valor devuelto por mifuncion es ";
switch (i) {
case (0):
cout << "nulo" << endl;
break;
case(1):
cout << "uno" << endl;
break;
default:
cout << "otro valor" << endl;
}
C++ (Técnicas Computacionales en Física)
21
Operador aritmético if
 Es el único operador ternario (tiene 3 “argumentos”)
 Es el equivalente a un if-else
 Sintaxis:
expresion1 ? expresion2 : expresion3
 Se evalúa expresión1
 Si es cierto se evalúa expresion2
 En caso contrario se evalúa expresion3
int sign(double val) {//Posible función sign()
int s = (val < 0)? -1: 1;
return s;
}
C++ (Técnicas Computacionales en Física)
22
Control de flujo: for
 Iteraciones
 Sintaxis:
 La inicialización (de un contador) solo se ejecuta la
primera vez que entra en el bloque
 La parada es una expresión lógica
 Mientras sea cierta se sigue iterando
 Cuando sea falsa se sale del bucle
 La acción (normalmente el incremento de un contador) se
ejecuta al final de cada iteración
for (inicialización; parada; acción)
sentencia;
C++ (Técnicas Computacionales en Física)
23
Control de flujo: while y do-while
 Sintaxis:
 Sólo si expresión es cierta se ejecuta una nueva iteración
 La comprobación se hace al inicio
 Sintaxis
 Sólo si expresion es cierta se ejecuta una nueva iteración
 La comprobación se hace al final: La sentencia se ejecuta al menos
una vez!
while (expresion)
sentencia;
do
sentencia;
while (expresion)
C++ (Técnicas Computacionales en Física)
24
Ejemplo Iteración: Tabla del 3
cout << "Tabla de multiplicar del 3..." << endl;
for (int i = 1; i <= 10; i++) {
cout << "3 * " << i << " = " << 3 * i << endl;
}
int i = 1;
while (i <= 10) {
cout << "3 * " << i << " = " << 3 * i << endl;
i++;
}
int i = 1
do {
cout << "3 * " << i << " = " << 3 * i << endl;
i++;
} while (i <= 10)
C++ (Técnicas Computacionales en Física)
25
Argumentos por valor y por
referencia
Por valor
 A la función le llega una
copia en memoria de la
variable que pasamos
 Cuando la función
termina esa copia se
destruye
 Las modificaciones del
valor de la variable
dentro de la función no
salen al exterior
 Es la forma por de pasar
variables por defecto
Por referencia
 A la función le llega la
dirección de memoria de
la variable que pasamos
 ¡No hay copia!
 Cuando la función termina
no se destruye ese
espacio en memoria
 Las modificaciones del
valor de la variable sí
salen al exterior de la
llamada
 Se utiliza & para indicarlo
C++ (Técnicas Computacionales en Física)
26
Nota: Para comprimir un directorio en un solo fichero y poder enviarlo
por correo
Ejercicios:
 Hacer un programa que calcule los
cuadrados de los 10 primeros números
aprovechando el código del ejercicio2
 Hacer un programa que calcule el cuadrado
de un numero cualquiera (usar cin)
 Hacer un programa que muestre los 10
primeros números primos
double variable;
cout << “Introduce un numero real: “ << endl;
cin >> variable;
[host] tar cvfz ficherocomprimido.tar.gz directorio
C++ (Técnicas Computacionales en Física)
27

Más contenido relacionado

Similar a Introduccion al Lenguaje de Programación C++

Elementos basicos de_programacion
Elementos basicos de_programacionElementos basicos de_programacion
Elementos basicos de_programacion
thaynasantos1997
 
Curso c ii
Curso c iiCurso c ii
Curso C Ii
Curso C IiCurso C Ii
Curso C Ii
yuli
 
ELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdfELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdf
Rosmary Delgado Sola Delgado
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++
Nana Garces
 
Curso basico c sharp
Curso basico c sharpCurso basico c sharp
Curso basico c sharp
Roberto Moreno Doñoro
 
Diapositivs~Elementos_basicos_C.pdf
Diapositivs~Elementos_basicos_C.pdfDiapositivs~Elementos_basicos_C.pdf
Diapositivs~Elementos_basicos_C.pdf
FtimaAF
 
Curso basico c sharp
Curso basico c sharpCurso basico c sharp
Curso basico c sharp
Roberto Moreno Doñoro
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
Daniel Carpio Contreras
 
Curso c ii
Curso c iiCurso c ii
Funciones en C.docx
Funciones en C.docxFunciones en C.docx
Funciones en C.docx
JesusCordova52
 
Elementos basicos cpp_oto2014
Elementos basicos cpp_oto2014Elementos basicos cpp_oto2014
Elementos basicos cpp_oto2014
joshram
 
Elementosbasicosc
Elementosbasicosc Elementosbasicosc
Elementosbasicosc
Victor Zapata
 
CLASE DEVC ++.pptx SOFTWARE PARA ING CIVIL
CLASE DEVC ++.pptx SOFTWARE PARA ING CIVILCLASE DEVC ++.pptx SOFTWARE PARA ING CIVIL
CLASE DEVC ++.pptx SOFTWARE PARA ING CIVIL
andersonespin739
 
Mynor Alexander Hernandez Canuz
Mynor Alexander Hernandez CanuzMynor Alexander Hernandez Canuz
Mynor Alexander Hernandez Canuz
guest79d55c9
 
Lenguaje c ++ guía para programadores
Lenguaje c ++  guía para programadoresLenguaje c ++  guía para programadores
Lenguaje c ++ guía para programadores
Aldo Hernán Zanabria Gálvez
 
Introduccion a la programacion en c 1
Introduccion a la programacion en c 1Introduccion a la programacion en c 1
Introduccion a la programacion en c 1
georgemanson69
 
C sharp intro0
C sharp intro0C sharp intro0
C sharp intro0
C sharp intro0C sharp intro0
Programación en c
Programación en cProgramación en c
Programación en c
Sam Paredes Chaves
 

Similar a Introduccion al Lenguaje de Programación C++ (20)

Elementos basicos de_programacion
Elementos basicos de_programacionElementos basicos de_programacion
Elementos basicos de_programacion
 
Curso c ii
Curso c iiCurso c ii
Curso c ii
 
Curso C Ii
Curso C IiCurso C Ii
Curso C Ii
 
ELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdfELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdf
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++
 
Curso basico c sharp
Curso basico c sharpCurso basico c sharp
Curso basico c sharp
 
Diapositivs~Elementos_basicos_C.pdf
Diapositivs~Elementos_basicos_C.pdfDiapositivs~Elementos_basicos_C.pdf
Diapositivs~Elementos_basicos_C.pdf
 
Curso basico c sharp
Curso basico c sharpCurso basico c sharp
Curso basico c sharp
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
 
Curso c ii
Curso c iiCurso c ii
Curso c ii
 
Funciones en C.docx
Funciones en C.docxFunciones en C.docx
Funciones en C.docx
 
Elementos basicos cpp_oto2014
Elementos basicos cpp_oto2014Elementos basicos cpp_oto2014
Elementos basicos cpp_oto2014
 
Elementosbasicosc
Elementosbasicosc Elementosbasicosc
Elementosbasicosc
 
CLASE DEVC ++.pptx SOFTWARE PARA ING CIVIL
CLASE DEVC ++.pptx SOFTWARE PARA ING CIVILCLASE DEVC ++.pptx SOFTWARE PARA ING CIVIL
CLASE DEVC ++.pptx SOFTWARE PARA ING CIVIL
 
Mynor Alexander Hernandez Canuz
Mynor Alexander Hernandez CanuzMynor Alexander Hernandez Canuz
Mynor Alexander Hernandez Canuz
 
Lenguaje c ++ guía para programadores
Lenguaje c ++  guía para programadoresLenguaje c ++  guía para programadores
Lenguaje c ++ guía para programadores
 
Introduccion a la programacion en c 1
Introduccion a la programacion en c 1Introduccion a la programacion en c 1
Introduccion a la programacion en c 1
 
C sharp intro0
C sharp intro0C sharp intro0
C sharp intro0
 
C sharp intro0
C sharp intro0C sharp intro0
C sharp intro0
 
Programación en c
Programación en cProgramación en c
Programación en c
 

Último

Entrenamiento de introducción en Share Point (JateNX)
Entrenamiento de introducción en  Share Point (JateNX)Entrenamiento de introducción en  Share Point (JateNX)
Entrenamiento de introducción en Share Point (JateNX)
administracion997432
 
Varias Consultas hana cloud inventarios
Varias Consultas hana cloud  inventariosVarias Consultas hana cloud  inventarios
Varias Consultas hana cloud inventarios
carloshernandez141319
 
Projecto Loom - Structured Concurrency - JavaMexico - Julio 2024
Projecto Loom - Structured Concurrency - JavaMexico - Julio 2024Projecto Loom - Structured Concurrency - JavaMexico - Julio 2024
Projecto Loom - Structured Concurrency - JavaMexico - Julio 2024
Domingo Suarez Torres
 
Girls Call Guwahati 000XX00000 Provide Best And Top Girl Service And No1 in ...
 Girls Call Guwahati 000XX00000 Provide Best And Top Girl Service And No1 in ... Girls Call Guwahati 000XX00000 Provide Best And Top Girl Service And No1 in ...
Girls Call Guwahati 000XX00000 Provide Best And Top Girl Service And No1 in ...
rakeshsoni95123
 
Manual_Ensamblador_ing_sistemas computacionales.pdf
Manual_Ensamblador_ing_sistemas computacionales.pdfManual_Ensamblador_ing_sistemas computacionales.pdf
Manual_Ensamblador_ing_sistemas computacionales.pdf
alejandroalcantaraut
 
Integracion Integligencia Artificial Generativa en STELA
Integracion  Integligencia Artificial Generativa en STELAIntegracion  Integligencia Artificial Generativa en STELA
Integracion Integligencia Artificial Generativa en STELA
Guillermo Talento
 
Proteccion Electronica enfocado en la Guerra Electronica.pptx
Proteccion Electronica enfocado en la Guerra Electronica.pptxProteccion Electronica enfocado en la Guerra Electronica.pptx
Proteccion Electronica enfocado en la Guerra Electronica.pptx
eghurtadoc
 

Último (7)

Entrenamiento de introducción en Share Point (JateNX)
Entrenamiento de introducción en  Share Point (JateNX)Entrenamiento de introducción en  Share Point (JateNX)
Entrenamiento de introducción en Share Point (JateNX)
 
Varias Consultas hana cloud inventarios
Varias Consultas hana cloud  inventariosVarias Consultas hana cloud  inventarios
Varias Consultas hana cloud inventarios
 
Projecto Loom - Structured Concurrency - JavaMexico - Julio 2024
Projecto Loom - Structured Concurrency - JavaMexico - Julio 2024Projecto Loom - Structured Concurrency - JavaMexico - Julio 2024
Projecto Loom - Structured Concurrency - JavaMexico - Julio 2024
 
Girls Call Guwahati 000XX00000 Provide Best And Top Girl Service And No1 in ...
 Girls Call Guwahati 000XX00000 Provide Best And Top Girl Service And No1 in ... Girls Call Guwahati 000XX00000 Provide Best And Top Girl Service And No1 in ...
Girls Call Guwahati 000XX00000 Provide Best And Top Girl Service And No1 in ...
 
Manual_Ensamblador_ing_sistemas computacionales.pdf
Manual_Ensamblador_ing_sistemas computacionales.pdfManual_Ensamblador_ing_sistemas computacionales.pdf
Manual_Ensamblador_ing_sistemas computacionales.pdf
 
Integracion Integligencia Artificial Generativa en STELA
Integracion  Integligencia Artificial Generativa en STELAIntegracion  Integligencia Artificial Generativa en STELA
Integracion Integligencia Artificial Generativa en STELA
 
Proteccion Electronica enfocado en la Guerra Electronica.pptx
Proteccion Electronica enfocado en la Guerra Electronica.pptxProteccion Electronica enfocado en la Guerra Electronica.pptx
Proteccion Electronica enfocado en la Guerra Electronica.pptx
 

Introduccion al Lenguaje de Programación C++

  • 1. EL LENGUAJE C++ (Introducción, variables, operadores, funciones, primeras compilaciones) Técnicas Computacionales en Física Máster en Física y Tecnologías Físicas, Máster en Computación 3 Isidro González Caballero (Universidad de Oviedo) Santander, 15/10/2012
  • 2. Introducción  El C++ es un superconjunto del C  Soporta tanto metodologías de programación estructurada como OOP  Tiene la capacidad de usar librerías C y FORTRAN  Características ajenas a la OOP y al C:  Chequeo de tipos mejorado (más estricto)  Constantes simbólicas (const) (chequeo de tipos constantes)  Sustitución de funciones inline (eficiencia de ejecución)  Argumentos por defecto (ahorro de código)  Sobrecarga de funciones y operadores (los tipos derivados tienen sintaxis iguales a los nativos)  Manejo de memoria dinámica  El tipo referencia (alias) C++ (Técnicas Computacionales en Física) 2
  • 3. Tipos fundamentales Nombre ¿Qué representa? Entero, real, lógico char Un carácter Entero short int Un entero corto Entero int Un entero Entero long int Un entero con mayor rango de validez Entero float Un real Real double Un real de doble precisión Real long double Un real de doble precisión y mayor Real bool cierto (true) o falso (false) Lógico unsigned C++ (Técnicas Computacionales en Física) 3
  • 4. Operadores aritméticos Operador Función Uso = asignación int i = 7; * multiplicación double r = 3.5 * i; / división double t = r / 1.2; % modulo (resto) i = 21 % 6; // i = 3 + suma double rt = r + t; - resta r = rt – t; ++,-- incremento int i = 0; int j = i++; //j = 0 int k = --i; //k = 0 +=,-=, *=,/= opera y asigna r += 2.6; //r = r + 2.6 r *= 2.6; //r = r * 2.6 C++ (Técnicas Computacionales en Física) 4
  • 5. Operadores lógicos Operador Función Uso < menor que i < 5 <= menor o igual que r <= 5 > mayor que i > 5 >= mayor o igual que i >= 5 == igualdad i == 5 != desigualdad i != 5 ! NOT lógico !true; //false && Y lógico i < 5 && j > 4 || O lógico i < 5 || j > 4 C++ (Técnicas Computacionales en Física) 5
  • 6. Declaraciones  Antes de utilizar una variable tenemos que declarar su tipo  Para las funciones debemos declarar su signatura y tipo de retorno  La signatura está formada por el nombre de la función y el tipo de los argumentos que espera  Podemos inicializar una variable al declararla  No siempre una declaración reserva un espacio en memoria  definición char letra; /*Declaración y definición de un carácter*/ int total = 10; //Decl., def. e inic. de un entero double random(double seed); //Declaración de una función Comentari os C++ (Técnicas Computacionales en Física) 6
  • 7. Tipos derivados, static, const... Nombre/Símb ¿Qué representa? Delante/Detras [] Array Detrás * Puntero, posición en memoria En medio & Referencia, alias de la var. En medio struct Una estructura Delante class Una clase Delante static Ámbito del programa Delante const No puede modificarse Delante C++ (Técnicas Computacionales en Física) 7
  • 8. Tipos derivados, static, const... //Punteros int* ptrNumero; //Puntero a un entero //Arrays float reales[20]; //Un array de 20 floats double punto[2] = {1.2, 3.4}; //Con inicializacion //Struct struct punto2D {short int x; short int y;}; //static static int contador; //const const char la_letra_c = 'c'; const double pi = 3.1415926; C++ (Técnicas Computacionales en Física) 8
  • 9. Compilar g++ -o main.cc Escribir, compilar, linkar, ejecutar Código (.cc, .C, .cpp…) #include <iostream> int main() { cout << “Hola mundo” << endl; return 0; } Diseñar Escribir Fichero objeto (.obj, .o) Ejecutable (a.out, .exe, …) Ejecutar ./a.out Linkar g++ main.o main.o libMyLib.so other.o a.out C++ (Técnicas Computacionales en Física) 9
  • 10. Compilación Preprocesador  No son comandos C++…  … pero están presentes en cualquier compilador  Muy utilizadas en C…  … suprimidas algunas en C++  Se escriben con el símbolo # al comienzo  Es una especie de parser Algunas posibilidades  Incluir código de otros ficheros  Remplazar variables o símbolos  en gral. no necesario en C++  Trucos sucios  no recomendable   Incluye cierta lógica Compilar g++ -o main.cc Código (.cc, .C, .cpp…) #include <iostream> int main() { cout << “Hola mundo” << endl; return 0; } Fichero objeto (.obj, .o) main.o libMyLib.so other.o Ficheros intermedios (.i, .ii) Preproceso C++ (Técnicas Computacionales en Física) 10
  • 11. Directivas de preprocesador  #include ″header.h″  Incluye el fichero header.h  #include <header.h>  Idem para “ficheros estándar”… algo subjetivo   #define VAR value  Reemplaza la secuencia VAR por value  #ifdef, #ifndef, #else, #endif  Lógica para chequer el valor de variables  #pragma  Mensajes al compilador. Poco utilizado C++ (Técnicas Computacionales en Física) 11
  • 12. Output básico  Debe incluirse el cabecero (header) iostream  Se utilizan dos objetos de tipo ostream:  cout para la salida estándar o  cerr para los mensajes de error...  ... seguido del operador << …  … y el mensaje de salida #include <iostream> cout << "Holan"; cout << "2 y 4 es “; cout << 2+4 << endl; float pi=3.1415 cout << "El valor de pi=" << pi << endl; Hola 2 y 4 es 6 El valor de pi=3.1415 Salto de línea Resultado C++ (Técnicas Computacionales en Física) 12
  • 13. Funciones  Tienen un tipo de retorno (void si no devuelven nada)  Se debe especificar el tipo de cada uno de sus parámetros (signatura)  El cuerpo de la función va entre llaves { }  La función principal del sistema es int main() #include <iostream> float cuadrado(float r); int main() { cout << "El cuadrado de 7 es " << cuadrado(7); return 0; //Todo ha ido bien } float cuadrado(float r) { float c = r*r; return c; } C++ (Técnicas Computacionales en Física) 13
  • 14. Ámbito (scope) y tiempo de vida  El ámbito es el espacio del programa en que un nombre (variable) es válido  Normalmente es el espacio entre su declaración y la siguiente llave cerrada, }  Las variables solo existen (ocupan espacio en memoria) mientras su ámbito es válido  Salvo las declaradas static que duran hasta el final del programa  Aunque solo pueden ser utilizadas en el código dentro de su ámbito C++ (Técnicas Computacionales en Física) 14
  • 15. Ejercicio 1: Programa #include <iostream> using namespace std; //Necesario para cout y endl double cuadrado(double); //Declaramos funcion int main() { //Funcion principal int siete = 7; cout << "El cuadrado de " << siete << " es " << cuadrado(7) << endl; const double pi = 3.1415926; cout << "pi*pi = " << cuadrado(pi) << endl; return 0; } double cuadrado(double r) { double c = r*r; return c; } C++ (Técnicas Computacionales en Física) 15
  • 16. [host] tar xvfz ejercicio1.tar.gz [host] cd ejercicio1 [host] ls ejercicio1.cpp [host] g++ ejercicio1.cpp [host] ls ejercicio1.cpp a.out [host] ./a.out El cuadrado de 7 es 49 pi^2 = 9.8696 [host] g++ ejercicio1.cpp –o ejercicio1.exe [host] ls a.out ejercicio1.cpp ejercicio1.exe [host] ./ejercicio1.exe El cuadrado de 7 es 49 pi^2 = 9.8696 Ejercicio 1: Compilar y ejecutar Descomprimimos el fichero tras descargarlo Compilar y linkar. El resultado es… Ejecutar Compilar y linkar elegiendo el fichero de salida Ejecutar C++ (Técnicas Computacionales en Física) 16
  • 17. Ejercicio 2: Varios ficheros  Descargar y descomprimir ejercicio2.tar.gz  Los ficheros de código:  cuadrado.h: Declaración de la función double cuadrado (double)  cuadrado.cpp: Implementación  ejercicio2.cpp: Función main  El script compila.csh compila y enlaza todo:  Crea los ficheros objeto cuadrado.o y ejercicio2.o  Enlaza los objetos en el ejecutable ejercicio2.exe [host] g++ -c -o cuadrado.o cuadrado.cpp [host] g++ -c -o ejercicio2.o ejercicio2.cpp [host] g++ -o ejercicio2.exe cuadrado.o ejercicio2.o C++ (Técnicas Computacionales en Física) 17
  • 18. Control de flujo: if-then-else  Ejecución condicional  Sintaxis simple:  Si la expresión lógica es cierta se ejecuta sentencia1  Sintaxis completa:  Si la expresión lógica es falsa se ejecuta la sentencia2  Si hay más de una sentencia a ejecutar por caso se meten entre { } if (expresión lógica) sentencia1; if (expresión lógica) sentencia1; else sentencia2; C++ (Técnicas Computacionales en Física) 18
  • 19. if-then-else ejemplo int mifuncion(); //Una funcion que devuelve un numero entero .... .... int i = mifuncion(); cout << "El valor devuelto por mifuncion es "; if (i < 0) cout << "negativo" << endl; else if (i > 0) cout << "positivo" << endl; else cout << "nulo" << endl; C++ (Técnicas Computacionales en Física) 19
  • 20. Control de flujo: switch  Ejecución condicional  Se trata de evitar if-then-else encadenados  Sintaxis: switch (variable) case (valor1): setencia1; break; case (valor2): setencia2; break; ... default: setenciadef; break; Se ejecuta si variable == valor1 Se ejecuta si variable == valor1 Se ejecuta si no se ha ejecutado ninguna de las anteriores C++ (Técnicas Computacionales en Física) 20
  • 21. switch: ejemplo int mifuncion(); //Una funcion que devuelve un numero entero .... .... int i = mifuncion(); cout << "El valor devuelto por mifuncion es "; switch (i) { case (0): cout << "nulo" << endl; break; case(1): cout << "uno" << endl; break; default: cout << "otro valor" << endl; } C++ (Técnicas Computacionales en Física) 21
  • 22. Operador aritmético if  Es el único operador ternario (tiene 3 “argumentos”)  Es el equivalente a un if-else  Sintaxis: expresion1 ? expresion2 : expresion3  Se evalúa expresión1  Si es cierto se evalúa expresion2  En caso contrario se evalúa expresion3 int sign(double val) {//Posible función sign() int s = (val < 0)? -1: 1; return s; } C++ (Técnicas Computacionales en Física) 22
  • 23. Control de flujo: for  Iteraciones  Sintaxis:  La inicialización (de un contador) solo se ejecuta la primera vez que entra en el bloque  La parada es una expresión lógica  Mientras sea cierta se sigue iterando  Cuando sea falsa se sale del bucle  La acción (normalmente el incremento de un contador) se ejecuta al final de cada iteración for (inicialización; parada; acción) sentencia; C++ (Técnicas Computacionales en Física) 23
  • 24. Control de flujo: while y do-while  Sintaxis:  Sólo si expresión es cierta se ejecuta una nueva iteración  La comprobación se hace al inicio  Sintaxis  Sólo si expresion es cierta se ejecuta una nueva iteración  La comprobación se hace al final: La sentencia se ejecuta al menos una vez! while (expresion) sentencia; do sentencia; while (expresion) C++ (Técnicas Computacionales en Física) 24
  • 25. Ejemplo Iteración: Tabla del 3 cout << "Tabla de multiplicar del 3..." << endl; for (int i = 1; i <= 10; i++) { cout << "3 * " << i << " = " << 3 * i << endl; } int i = 1; while (i <= 10) { cout << "3 * " << i << " = " << 3 * i << endl; i++; } int i = 1 do { cout << "3 * " << i << " = " << 3 * i << endl; i++; } while (i <= 10) C++ (Técnicas Computacionales en Física) 25
  • 26. Argumentos por valor y por referencia Por valor  A la función le llega una copia en memoria de la variable que pasamos  Cuando la función termina esa copia se destruye  Las modificaciones del valor de la variable dentro de la función no salen al exterior  Es la forma por de pasar variables por defecto Por referencia  A la función le llega la dirección de memoria de la variable que pasamos  ¡No hay copia!  Cuando la función termina no se destruye ese espacio en memoria  Las modificaciones del valor de la variable sí salen al exterior de la llamada  Se utiliza & para indicarlo C++ (Técnicas Computacionales en Física) 26
  • 27. Nota: Para comprimir un directorio en un solo fichero y poder enviarlo por correo Ejercicios:  Hacer un programa que calcule los cuadrados de los 10 primeros números aprovechando el código del ejercicio2  Hacer un programa que calcule el cuadrado de un numero cualquiera (usar cin)  Hacer un programa que muestre los 10 primeros números primos double variable; cout << “Introduce un numero real: “ << endl; cin >> variable; [host] tar cvfz ficherocomprimido.tar.gz directorio C++ (Técnicas Computacionales en Física) 27