Tema 3: Introducción a C/C++
Fundamentos de Informática Grados en Ingeniería Industrial
Índice de contenidos
Introducción al lenguaje C/C++.
Un poco de historia. Características de C/C++.
Un primer programa en C/C++.
Compilación.
Conceptos básicos.
Tipo de dato. Variable. Constante. Expresiones.
Tipos de datos fundamentales en C/C++ y sus modificadores.
Operadores.
Un poco de historia
C evolucionó de dos lenguajes de programación anteriores
BCLP, creado por Martin Richards para escribir software para sistemas operativos y compiladores.
B, creado por Thompson para crear las primeras versiones del sistema operativo UNIX en los laboratorios Bell
El lenguaje de programación C fue creado por Dennis Ritchie en
1972 en los laboratorios Bell.
Agrega tipos de datos a sus predecesores.
C se hizo popular como lenguaje de desarrollo para el sistema operativo UNIX
Un poco de historia
La rápida expansión de C sobre varios tipos de
computadoras hizo que surgieran muchas variantes
En 1989 se unificaron criterios y se adoptó el estándar ANSI de C conocido como ANSI C o C89.
En 1999 se desarrolló otro estándar conocido como el C99
C++ es un C mejorado desarrollado por Bjarne
Stroustrup en los laboratorios Bell.
Un poco de historia
La programación orientada a objetos no forma parte del
temario de esta asignatura.
Nosotros estudiamos
programación estructurada
y, por lo
tanto, sólo vamos a ver la parte de C/C++ relacionada con
este paradigma de programación.
El futuro de C++, está en
Visual C#
, un lenguaje visual
dentro del entorno .NET, para crear aplicaciones para
Windows, y para Internet.
Características de C/C++
Es un lenguaje estructurado
Permite el uso de subrutinas y estructuras de control
Es un amigable, flexible y muy potente para el programador
C/C++ combina elementos de lenguaje de alto nivel con el control y la flexibilidad que ofrecen lenguajes ensambladores (manipulación de bits, bytes y direcciones).
Es eficiente
Es portable
La portabilidad significa que es posible adaptar el software escrito para un tipo de computadora o sistema operativo en otro. Un programa escrito en C/C++ puede ejecutarse en cualquier ordenador con muy pocas modificaciones o ninguna.
Un primer programa en C/C++
#include <iostream> using namespace std;
/*Este programa muestra por pantalla la frase “Hola mundo”*/
int main () {
cout << ““““Hola mundo”; return 0;
}
Un primer programa en C/C++
#include <iostream>
using namespace std;
/*Este programa muestra por pantalla la frase “Hola mundo”*/
int main () {
cout << ““““Hola mundo”; return 0;
}
Indica que se debe incluir dentro del programa el contenido del fichero iostream
Un primer programa en C/C++
#include <iostream> using namespace std;
/*Este programa muestra por pantalla la frase “Hola mundo”*/
int main ()
{
cout << ““““Hola mundo”; return 0;
}
Un programa en C/C++ está formado por una o más funciones
main() es una función que debe aparecer siempre
Todos los programas en C/C++ empiezan a ejecutarse en la función
main()
Un primer programa en C/C++
#include <iostream> using namespace std;
/*Este programa muestra por pantalla la frase “Hola mundo”*/
int main () {
cout << ““““Hola mundo\n”; return 0;
}
Es un comentario.
Los programadores usan comentarios para hacer más comprensibles los programas
Un primer programa en C/C++
#include <iostream> using namespace std;
/*Este programa muestra por pantalla la frase “Hola mundo”*/
int main () {
cout << ““““Hola mundo”; return 0;
}
Las llaves en este programa indican el inicio y el final de la función
main
Las llaves y el fragmento de programa que va entre ellas forman un bloque
Un primer programa en C/C++
#include <iostream> using namespace std;
/*Este programa muestra por pantalla la frase “Hola mundo”*/
int main () {
cout << ““““Hola mundo”;
return 0; }
Esta línea muestra por pantalla la frase: “Hola mundo”
coutrepresenta al dispositivo de salida estándar (la pantalla)
Un primer programa en C/C++
#include <iostream> using namespace std;
/*Este programa muestra por pantalla la frase “Hola mundo”*/
int main () {
cout << ““““Hola mundo”; return 0;
} Devuelve un valor al sistema operativo.
El 0 indica que el programa se ejecutó correctamente.
Compilación
Diseñar algoritmo
• Pensar una solución que resuelva el problema que estamos tratando de solucionar.
Escribir código
• Escribir el código fuente del programa en un fichero nombre_programa.cpp
• Para ello hay que “traducir”el algoritmo escrito en pseudocódigo o
diagramas de flujo al lenguaje C/C++.
• Esta tarea se puede realizar utilizando cualquier editor de texto.
Compilar
• Generar el código objeto del programa en un fichero nombre_programa.obj. • Para lograrlo se ejecuta un programa llamado compiladorque traduce el código
fuente al lenguaje máquina del ordenador.
• El compilador comprueba si hemos cometido algún error de sintaxis al escribir el código. Si hay errores se corrigen y se vuelve a ejecutar el compilador
Enlazar
• Generar el fichero ejecutable nombre_programa.exe. • Para conseguirlo se ejecuta un programa llamado linker
• El linker genera un fichero con extensión .exeque ya se puede ejecutar.
Para realizar un programa en C/C++
Conceptos básicos: tipo de dato
Un programa está formado por instrucciones y datos.
Cada dato de un programa pertenece a una clase llamada
tipo.
Cada tipo viene definido por:
Un rango de valores, que es el conjunto de valores que pertenecen a ese tipo.
Las operacionesque se pueden realizar con los elementos del rango.
Conceptos básicos: tipo de dato
Los tipos básicos de datos en C/C++ son:
Carácter
Número
entero
Número
real
Lógico
Cadena de
caracteres
char
int
float
double
Conceptos básicos: constante
Una constante en C/C++ es una entidad que posee un
valor
y
es conocida en un programa o algoritmo por un nombre o
identificador
.
El valor es fijado antes de la ejecución del programa y no
puede ser modificado a lo largo de la misma.
Para crear una constante usamos
#define
EJEMPLOS:
#define MAX 1000 #define MIN 5.0 #define LETRA ‘a’
Conceptos básicos: variable
Representa una
posición de memoria
con nombre
(identificador) que se usa para
almacenar un valor
que
puede ser modificado por el programa
.
Todas las variables:
Han de estar declaradas antes de poder ser utilizadas.
Conceptos básicos: variable
Declaración de variables en C/C++:
tipo
será un tipo de datos válido en C con algún modificador.
lista_de_variables
es una lista de identificadores separados
por comas.
EJEMPLOS:
char letra;
int x,y,z;
double temperatura, presion;
string apellido, nombre;
tipo lista_de variables;
Conceptos básicos: variable
En C/C++ los nombres de las variables y las constantes
(identificadores) no pueden ser cualquiera. Existen unas reglas
que se deben cumplir para que un nombre sea aceptado en un
programa.
1.
Un identificador debe comenzar por una letra.
2.
La primera letra puede ir seguida de:
Letras
Dígitos numéricos
Carácter ‘_’
Conceptos básicos: identificador
EJEMPLOS de identificadores de variables y constantes
Identificador Válido Justificación 9kj NO Empieza por un número Dia_del_mes SÍ
Dia del mes NO Tiene espacios en blanco A+y NO Contiene el carácter +
k9j Sí
Conceptos básicos: expresión
Una expresión en C/C++ es una combinación de:
Variables
Constantes
Valores constantes
Operadores
Paréntesis
Nombres de funciones especiales (raíz cuadrada, valor absoluto,
etc.)
Una expresión tiene en todo momento un valor
Conceptos básicos: expresiones
EJEMPLOS de expresiones algebraicas y su equivalente en
C:/C++
Álgebra C/C++
m=a+b+c+d/5
m = (a+b+c+d)/5
y=mx+b y=m*x+b
a2+b2=c2 pow(a,2)+pow(b,2)==pow(c,2)
sqrt(a+(pow(b,2)/3))
m
=
a
+
b
+
c
+
d
5
m
=
a
+
b
+
c
+
d
5
a
+
b
2
3
Tipos de datos en C/C++
El tipo int
Representa a los
números enteros con signo
(positivos y
negativos)
Rango de valores:
Depende del compilador y del ordenador (del número de bits que se reserven para representar un entero).
Si se usan 16 bits, el rangode valores representables es: [ –215, 215–1 ] = [ –32.768, 32.767 ]
El tipo int
Los números enteros escritos sin punto decimal y sin
exponente son reconocidos por el compilador como
constantes enteras de tipo
int
Se pueden expresar constantes enteras en distintas bases:
Decimal: 1423 5
Octal, empezando por 0: 02617 05
Hexadecimal, empezando por 0x: 0xA8F 0x5
Tipos de datos en C/C++
El tipo
float
Representa
números reales
(con decimales)
Rango de valores:
Dependerá del método utilizado para representar números reales
Normalmente se usan 32 bits para su representación en punto flotante.
El tipo
float
Los valores de tipo
floatse pueden escribir
en notación habitual:
Ejemplos: 1.23, 0.123, 15.9, 12345.678
en notación científica, con exponente en base 10:
Ejemplos:
0.12*102, es decir 12.3 podría ser:
Tipos de datos en C/C++
0.123e2
123e-1
1.23e1
El tipo
double
Representa
números reales
con algo más del doble de
precisión que el tipo
float
Rango de valores:
Normalmente se usan 64 bits para su representación en punto flotante.
Este sistema permite:
una precisión de 15 o 16 cifras decimales y un exponente cuyo rango es: [10-308, 10+308]
La escritura de valores
double
es igual que en
float
.
El tipo
char
Se utiliza para almacenar valores definidos en el juego de
caracteres ASCII.
Rango de valores:
El compilador de C trata a los valores de tipo charcomo si fueran enteros sin signo de 8 bits
Una variable de tipo charalmacena el código ASCIIde un carácter
Tipos de datos en C/C++
Tipos de datos en C/C++
Tabla ASCII (2ª mitad)
El tipo
char
La
asignación
de valores a variables de tipo
char
puede
hacerse:
Asignándole el carácter directamente (entre comillas simples):
char letra = 'A';
Asignándole el código ASCII del carácter:
char letra = 65;
Es importante distinguir entre un carácter numérico y un
número:
char caracter = 4; /* carácter ASCII número 4,
que se corresponde con el carácter '♦' */
Caráct er
ASCII Acción
\n 10 Nueva línea
\t 9 Tabulador
\b 8 Retroceso
\f 12 Salto de página
\\ 92 Barra atrás
\’ 39 Apóstrofo
\” 34 Comillas dobles
\a 7 Alerta (pitido)
El tipo
char
Existen caracteres especiales (algunos de ellos no son imprimibles) que se representan por un carácter antecedido por la barra inversa \(no es la de división). Los más usuales son:
Estos caracteres se asignan igual que los demás:
char caracter;
caracter = '\t'; caracter = 9;
Tipos de datos en C/C++
Se usan para
alterar el significado del
tipo base
de modo que se
ajuste más a las necesidades del programa. Hay cuatro modificadores
que se aplican a distintos tipos:
unsigned Utiliza el mismo número de bits del tipo al que modificapara representar sólo valores positivos.
Por ejemplo: rango de unsigned int con 16 bits: [0, 65535]
signed Utiliza el mismo número de bits del tipo al que modificapara representar valores positivos y negativos (valor por defecto, por lo que no se suele usar).
short Puede Disminuir el número de bits utilizados para representar el valor y por lo tanto su rango.
long Puede Aumentarel número de bits para representar el valor y por lo tanto su rango.
Cuadro resumen de tipos:
Modificadores de Tipos
El tipo
bool
Se utiliza para almacenar valores lógicos
Su rango de valores se reduce a dos valores:
true, false
La asignación de valores a variables de tipo boolpuede hacerse asignándole el valor directamentebool encontrado = true;
Importante, en C estándar:
El valor lógico truese corresponde con cualquier valor numérico distinto de 0.
El valor lógico falsese corresponde con el valor numérico 0.
bool encontrado = 7; /* Contiene el valor true */
Tipos de datos en C/C++
El ANSI (American National Standards Institute) proporciona
para C++ el
tipo string
que representa una cadena de
caracteres.
Para poder usar el tipo predefinido string lo único que
debemos hacer es #include <string>
Una vez que se ha incluido la cabecera de la librería declaran
como cualquier variable y se les puede asignar cualquier
expresión que sea del mismo tipo o una cadena de caracteres
entre comillas.
#include <iostream> #include <cstdlib> #include <string> using namespace std;
// Programa principal int main()
{
string s1,s2;
s1 = "Hola””””; s2 = s1;
return 0;
DECLARACIÓN de variables de tipo string
ASIGNACIÓN de valores a una variables de tipo string
Operadores
Los operadores en C/C++ nos permiten realizar
operaciones con los datos.
Cada tipo de datos tiene un conjunto de operadores.
Algunos operadores están sobrecargados, esto es, se
escriben igual pero dependiendo del tipo de dato sobre el
que se aplique actuará de una forma u otra.
Operadores
(nos permiten efectuar operaciones)Operadores Aritméticos:
Se usan con tipos numéricos (enteros y reales)
Para operaciones aritméticas entre variables, constantes y otras
expresiones:
+ Suma. - Resta. * Multiplicación. / División.
Operadores
(nos permiten efectuar operaciones)Operadores Aritméticos:
El resultado de la operación es del mismo
tipo
que sus dos
operandos. Si los dos operandos son de tipos distintos, el
resultado será del tipo con mayor rango.
Ejemplos:
5+2
genera el valor
7
de tipo
int
.
5/2
genera el valor
2
de tipo
int
(sin decimales).
5/2.0
genera el valor
2.5
de tipo real.
NOTA: Hay que tener especial cuidado en las operaciones de DIVISIÓN, pensando
especialmente si nos interesa o no calcular los decimales de dicha división.
Operadores
Operador de Asignación:
=
Se usa en todos los tipos de datos para almacenar un valor en
una variable.
Formato:
Variable = Expresión;
Asigna a la variable de la izquierda del
=
el valor resultante de
evaluar la expresión de la derecha.
Ejemplos:
resultado = (x + y – z) / 4;
mi_var = 5;
Operadores
Operador de Asignación:
=
Asignaciones múltiples. Ejemplos:
x = y = z = 0;
result = entrada = salida = (x+y–z)/4;
Asignación con operación aritmética(o compuesta): Formato: Variable op= Expresión;
Asigna a la variable el valor que se obtiene como resultado de operar su antiguo valor con el valor de la Expresión, usando el operador op.
Ejemplos:
x += 10; equivale a x = x + 10; x –= 5; equivale a x = x – 5;
x *= 3*y + 45; equivale a x = x*(3*y + 45);
Operadores
Operadores
incrementales
:
Incremento: ++ Decremento:
--Aumenta o disminuye el valor de su operando en una unidad.
Puede colocarse como prefijo (pre...) o como sufijo (post...).
Preincremento, Predecremento
La operación de incremento o decremento se lleva a cabo antes de
utilizar el valordel operando, es decir, primero se incrementa (o
decrementa) el valor del operando y luego se utiliza.
Postincremento, Postdecremento
Operadores
Operación Resultado
++x x = x + 1
--x x = x – 1
x = 100; y = ++x; El valor de y es 101
x = 100; y = x++; El valor de y es 100
cont = 4; ++cont < 5; Falso
cont = 4; cont++ < 5; Verdadero
Ejemplos de uso de
los operadores
++ y
--Operadores
relacionales
Se emplean para hacer comparaciones
Se usan generalmente para construir las expresiones o condiciones empleadas en las sentencias de selección e iteración
El resultado de una expresión con operadores relacionales es siempre falso o cierto
Para las comparaciones de números reales es mejor no usar operadores con igualdad, o lo que es lo mismo, usar sólo > y <, ya que pueden no ser iguales debido a errores de redondeo aunque en realidad deberían serlo.
Operador Acción
< Menor
<= Menor o igual
== Igual
!= Distinto
>= Mayor o igual
> Mayor
Operadores lógicos
Se emplean para combinar dos o más expresiones relacionales
Se usan generalmente para construir las expresiones o condiciones empleadas en las sentencias de selección e iteración
Operador Acción
&& Y
|| O
! NO
• En C/C++ las expresiones lógicas se evalúan de izquierda a derecha. En el momento en que un elemento invalide la expresión completa cesa la evaluación de la misma:
num = 0;
(num != 0) && (num/3 == 1)
Se evalúa a false
false && ...cualquier cosa
es FALSO
Luego no hace falta seguir evaluando la expresión
No se llega a evaluar
Operadores
Operaciones lógicas V V 0 0A B A &&B A || B ! B V 0 V 0 1 0 0 0 1 1 1 0 0 1 0 1 V es cualquier valor distinto de 0
Operadores del tipo
string
= Asignación
Se puede utilizar de varias maneras:
•Asignando una cadena a otra string cadena1= "hola"; string cadena2;
cadena2 = cadena1
•Asignando una cadena constante string cadena3;
cadena3= "adiós";
•Asignando un carácter string cadena4; char ch = 'A'; cadena4 = ch; cadena4 = 'Z';
Operadores del tipo
string
+ Concatenación
Se pueden concatenar:
• Eos variables del tipo string string str1 = "hola"; string str2 = " allí";
string str3 = str1 + str2; //"hola allí"
• Una variable stringy una secuencia de caracteres constante string str1 = "hola";
string str4 = str1 + " allí";
+=
Concatenación-Asignación
string str1 = "hola"; str1 + = " allí";
== == == == != != != != <<<< >>>> <= <= <= <= >= >= >= >= Comparaciones Comparaciones Comparaciones Comparaciones
Los operadores de comparación devuelven un valor boleano (true/false) Los operandos pueden ser:
• dos variable string
string str1 = "hola"; string str2 = "adios"; if (str1==str2) ...
• una variable stringy una secuencia de caracteres constante.
string str1 = "hola"; if (str1 > "Hola") ...
Operadores del tipo
string
Operadores del tipo
string
[ ] [ ] [ ] [ ] (subíndice) (subíndice)(subíndice) (subíndice)
El operador del subíndice tiene acceso a un carácter en una secuencia.
Muy importante:
•El primer carácter está en la posición CERO.
•No se pude utilizar para añadir caracteres al string, sólo para consultar el valor de un carácter o para modificarlo.
•Para añadir usar la concatenación.
string str10 = "abcdefghi"; char ch = str10[3];
cout << ch << endl; // 'd' str10[5] = 'X';
Dos funciones del tipo
string
length lengthlength length
Devuelve la longitud (número de caracteres) del string. El tipo devuelto es un tipo entero sin signo (unsigned int).
string str = "hola";
unsigned int numCars = str.length(); // numCars == 4
substr substrsubstr substr
Devuelve una subcadena del string actual, comenzando en la posición que se indica en el primer parámetro y teniendo una longitud de tantos caracteres como se indique en el segundo.
string str1 = "abcdefghi"; str2 = str1.substr (6, 2); cout << str2 << endl; //"gh"
Conversión de tipos
Cambio temporal del tipo de un valor o sub-expresión que
permite mezclar tipos numéricos en una expresión. Pueden
ser:
Implícitas
, las realiza automáticamente el lenguaje
IMPLÍCITA
: Cuando en una expresión se mezclan constantes
y variables de distintos tipos el compilador convierte de
forma
automática
todo a un único tipo siguiendo las siguientes
reglas:
Promoción: en cualquier operación en la que aparezcan dos tipos
diferentes se eleva el rango del que lo tiene menor para igualarlo al del mayor.
El rango o categoría de los tipos, de mayor a menor, es el siguiente: double > float > long > int > short > char
Los tipos unsignedtienen el mismo rango que los tipos a los que están referidos
En una sentencia de asignación, el resultado final de los cálculos se
reconvierte al tipo de la variable al que está siendo asignado. El proceso puede ser una promoción o una pérdida de rango según la categoría de la variable a la que se le efectúa la asignación.
Conversión de tipos
EXPLÍCITA (casting)
Es una conversión del tipo de una expresión, realizada por
el programador de manera explícita.
La forma general de realizarla es:
int x;
float y = 1.5; float z = 2.5;
Sentencias
Compilación.
Preprocesador de C
Procesa el programa fuente antes de que éste sea tratado por el compilador
Acciones del preprocesador:
Definición de constantes simbólicas
Inclusiónde otros archivos en el archivo que se va a compilar
Todas las órdenes dirigidas al preprocesador se llaman directivasy comienzan con el símbolo
#
.Como excepción, en C++, tenemos la “directiva”using namespace std, que será incluida en todos los programas del curso que usen las “canales”de entrada-salida cin-cout(explicadas posteriormente).
Compilación.
Identificador
Constante que queremos definir (macro)
Texto_a_reemplazar
Secuencia de caracteres que va a ser representada por la macro Puede incluir expresiones con operadores
Todas las apariciones de identificadoren el código fuente del programa son automáticamente sustituidas por texto_a_reemplazar antes de la compilación del programa
Ejemplos:
#define PI 3.1416 #define DOS 2
#define CUATRO DOS*DOS
#define ERROR “Este es un mensaje de error”
#define identificador texto_a_reemplazar
• Definición de constantes simbólicas
Compilación.
En el lugar de la directiva #include se incluye una copia del archivo especificado antes de la compilación del programa
“fichero”: para incluir archivos incluidos por el programador
El preprocesador busca el fichero en el directorio donde se encuentra el archivo que se está compilando
<fichero>: para incluir ficheros de cabecera de bibliotecas estándar
El preprocesador busca el fichero en algún directorio estándar del sistema
Ejemplos: #include <stdio.h>
#include <fichero>
Operaciones de Entrada/Salida (E/S)
•
La
E/S en C/C++
se gestiona mediante la funcionalidad
que nos proporciona la biblioteca
iostream
.
•
La palabra
stream
significa en inglés
“
flujo
”
o
“
corriente
”
(de
datos).
•
Para usar la E/S de C/C++ hay que incorporar al inicio del
archivo fuente las dos líneas siguientes:
#include <iostream> using namespace std;
Operaciones de Entrada/Salida (E/S)
• Dispositivo de salidaestándar: el monitor cout
• Dispositivo de entradaestándar: el teclado cin
• Tanto en un caso como en otro, lo único que necesitamos son operadores para insertar informaciónen el flujo de salida, o extraer información del flujo de entrada.
>>Operaciones de extracción (para cin)
<<Operación de inserción (para cout).
Entrada
cin >> variable;
cin >> variable1 >> variable 2 >> ...;
Salida
cout << variable;
#define ENTER '\n' string s;
getline(cin, s, ENTER); LECTURA del string
Operaciones de E/S con cadenas
•
Salida
•
se realiza de la misma forma que si fuera un array, es decir, usando
cout << cadena
.
•
Entrada
: igual que con las cadenas podemos,
•
usar
cin
, tiene el inconveniente de que se usa el espacio, tabulador
y enter como separadores de las cadenas.
• Si introducimos por ejemplo una frase, sólo leeríamos la primera palabra. •
Solución: función
getline
indicando el carácter terminador, que
debe ser el ENTER:
6.4. EJEMPLOS
#include <iostream>
using namespace std;
int main () {
int edad;
float sueldo;
cout<< "Escriba su edad y sueldo.\n";
cin >> edad >> sueldo;
cout<<"\nEdad:"<<edad<<" Sueldo: "<<sueldo<<"\n";
system("PAUSE"); // Hace una pausa: Es útil si no lo hace el compilador
return 0;
}
6. Operaciones de Entrada/Salida: En C++ y en C
#include <stdio.h>
int main () {
int edad;
float sueldo;
printf("Escriba su edad y sueldo: ");
scanf("%d %f", &edad, &sueldo);
printf("\nEdad: %d Sueldo: %.2f \n", edad, sueldo);
C++
Posible ejecución
Escriba su edad y sueldo.
33 1000
Edad: 33 Sueldo: 1000.00
Posible ejecución
Escriba su edad y sueldo.
33 1000
Edad: 33 Sueldo: 1000
Presione una tecla para continuar....
Funciones matemáticas
Archivo de definiciones:
#include <cmath> using namespace std;
Funciones trigonometricas:
sin(double alfa) devuelve sin(). cos(double alfa) devuelve cos(). tan(double alfa) devuelve tan().
Funciones trigonometricas inversas:
asin (double x) devuelve sin-1(x) en el rango [-π/2, π/2].
acos (double x) devuelve cos-1(x) en el rango [0, π].
atan (double x) devuelve tan-1(x) en el rango [-π/2, π/2].
atan2 (double y, double x) tan-1(y/x) en [-π, π].
Todas devuelven un número real de tipo double
Todas esperan o devuelven ángulos en radianes
Funciones matemáticas
Funciones de potencias y logaritmos:
exp(double x) devuelve ex .
log(double x) devuelve el logaritmo neperiano ln(x), x > 0. log10(double x) devuelve log10(x), x > 0.
pow(double x, double y) devuelve la potencia xy.
sqrt(double x) devuelve la raíz cuadrada √x, x≥0.
Otras funciones:
fabs(double x) devuelve |x|. floor(double x) devuelve x ceil(double x) devuelve x
En <cstdlib>
abs(int) devuelve el valor absoluto de un numero entero.