33
1 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. Operaciones de Entrada/Salida. Funciones matemáticas.

Tema3: Introduccióna C/C++ - Ingeniería Electrónica … Un poco de historia C evolucionó de dos lenguajes de programación anteriores BCLP, creado por Martin Richards para escribir

Embed Size (px)

Citation preview

1

Tema 3: Introducción a C/C++

Fundamentos de InformáticaGrados 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.� Operaciones de Entrada/Salida.� Funciones matemáticas.

2

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 BjarneStroustrup en los laboratorios Bell.

� Su aportación fundamental es que ofrece soporte para la programación

orientada a objetos.

3

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.

� Es compilado

4

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

� El fichero iostream contiene información relacionada con la entrada/salida de datos (mostrar por pantalla un resultado, leer de teclado los datos,...

5

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

� Cualquier cadena de caracteres entre /* y */ es ignorada durante la ejecución y no realiza ninguna acción

6

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”

� cout representa al dispositivo de salida estándar (la pantalla)

� << indica que estamos enviando datos a la pantalla

7

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 compilador que 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 (link)

• Generar el fichero ejecutable nombre_programa.exe.• Para conseguirlo se ejecuta un programa llamado linker• El linker genera un fichero con extensión .exe que ya se puede ejecutar.• Puede que el programa no realice correctamente la tarea que nosotros esperábamos,

esto querrá decir que nos hemos equivocado en el diseño del algoritmo y deberemos revisar el paso 1.

Para realizar un programa en C/C++ hay que seguir estos pasos:

8

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 operaciones que 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 floatdouble

bool string

9

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.

� Son de un determinado tipo y sólo pueden tomar valores de ese tipo.

10

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 ‘_’

3. No se permiten espacios en blanco.

11

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 constante que es el resultado de evaluarla de izquierda a derecha

12

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+ d5

m= a+ b+ c+ d5

a+ b2

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 rango de valores representables es:[ –215, 215–1 ] = [ –32.768, 32.767 ]

� Si se usan 32 bits, el rango de valores es: [ –231, 231–1 ] = [ –2.147.483.648, 2.147.483.647]

13

� 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 : 0x A8F 0x 5

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.

� Este sistema permite una precisión de 6 ó 7 dígitos (los que se almacenan), y un exponente cuyo rango es: [10-38 .. 10+38]

Tipos de datos en C/C++

14

� El tipo float

� Los valores de tipo float se 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*10 2, 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 .� Los números reales son reconocidos por el compilador como

constantes de tipo double .

Tipos de datos en C/C++

15

� 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 char como si

fueran enteros sin signo de 8 bits� Una variable de tipo char almacena el código ASCII de un

carácter

Tipos de datos en C/C++

Tipos de datos en C/C++

� Tabla ASCII (1ª mitad)

16

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 ' ♦' */

char caracter = '4'; /* caracter '4', que se corresponde con el carácter ASCII número 52 */

Tipos de datos en C/C++

17

Carácter

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 modifica para 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 modifica para 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 Aumentar el número de bits para representar el valor y por lo tanto su rango.

No siempre disminuyen o aumentan el número de bits (depende del compilador y ordenador)

El lenguaje C siempre nos garantiza: short <= tipo base <= long

Modificadores de Tipos

18

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 bool puede hacerse

asignándole el valor directamente

bool encontrado = true;

� Importante, en C estándar:� El valor lógico true se corresponde con cualquier valor numérico distinto

de 0.� El valor lógico false se corresponde con el valor numérico 0.

bool encontrado = 7; /* Contiene el valor true */

bool encontrado = 0; /* Contiene el valor false */

Tipos de datos en C/C++

19

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 principalint 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

Tipos de datos en C/C++

20

Operadores

� Los operadores en C/C++ nos permiten realizaroperaciones 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.� % Resto de la división entera (no tiene sentido con datos reales).

21

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;

� Es una operación destructiva: cualquier valor que tuviese la variable se pierde y se reemplaza por el nuevo.

22

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 valor del operando, es decir, primero se incrementa (o decrementa) el valor del operando y luego se utiliza.

� Postincremento, Postdecremento� La operación de incremento o decremento se lleva a cabo después

de utilizar el valor del operando, es decir, primero se utiliza el valor del operando y luego se incrementa (o decrementa).

23

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

24

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 seguirevaluando la expresión

No se llega a evaluar

Operadores

Operaciones lógicas

VV00

A B A && B A || B ! BV0V0

1000

1110

0101

V es cualquier valor distinto de 0

Operadores: Precedencia

25

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 constantestring cadena3 ; cadena3 = "adiós";

• Asignando un carácterstring cadena4; char ch = 'A'; cadena4 = ch; cadena4 = 'Z';

Operadores del tipo string

+Concatenación

Se pueden concatenar:

• Eos variables del tipo stringstring str1 = "hola"; string str2 = " allí"; string str3 = str1 + str2; //"hola allí"

• Una variable string y una secuencia de caracteres constante string str1 = "hola"; string str4 = str1 + " allí";

• Una variable string y un único carácter str5 = "el extremo"; string str6 = str5 + '!';

26

+=Concatenación-

Asignación

string str1 = "hola";str1 + = " allí";

========!=!=!=!=<<<<>>>>

<=<=<=<=>=>=>=>=

ComparacionesComparacionesComparacionesComparaciones

Los operadores de comparación devuelven un valor boleano (true/false ) Los operandos pueden ser:

• dos variable stringstring str1 = "hola"; string str2 = "adios"; if (str1==str2) ...

• una variable string y 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';cout << str10 << endl;

//"abcdeXghi"

27

Dos funciones del tipo string

lengthlengthlengthlength

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

substrsubstrsubstrsubstr

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

� Explícitas, las indica expresamente el programador

28

� 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 unsigned tienen 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;x = (int) y + (int) z; // la variable x toma el valor 3

// si no se hiciese los castings, tomaría un 4

(tipo) expresión;

Conversión de tipos

29

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ón de otros archivos en el archivo que se va a compilar

� Todas las órdenes dirigidas al preprocesador se llaman directivas y 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).

� Cada directiva debe estar en una línea propia y antes de cada directiva sólo pueden aparecer espacios en blanco

30

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 identificador en 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 <iostream>

#include "mi_fichero"

#include <fichero>

#include “fichero”

• Inclusión de ficheros

31

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 salida estándar: el monitor � cout

• Dispositivo de entrada estándar: el teclado � cin

• Tanto en un caso como en otro, lo único que necesitamos son operadores para insertar información en 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;� cout << ...... << ....... << ........;� cout << mensaje;

32

#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 compila dor

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

system("PAUSE");

return 0;

}

C++

Posible ejecución

Escriba su edad y sueldo.

33 1000

Edad: 33 Sueldo: 1000.00

Presione una tecla para continuar....

Posible ejecución

Escriba su edad y sueldo.

33 1000

Edad: 33 Sueldo: 1000

Presione una tecla para continuar....

C

33

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 xceil(double x) devuelve x

� En <cstdlib>abs(int) devuelve el valor absoluto de un numero entero.

Todas devuelven un número real de tipo double