970 likes | 1.3k Views
Capítulo 3. Numeric Types, Expressions, and Output. Tópicos a Discutir. Constants of Type int and float Evaluating Arithmetic Expressions Implicit Type Coercion and Explicit Type Conversion Calling a Value-Returning Function Using Function Arguments
E N D
Capítulo 3 Numeric Types, Expressions, and Output
Tópicos a Discutir • Constants of Type int and float • Evaluating Arithmetic Expressions • Implicit Type Coercion and Explicit Type Conversion • Calling a Value-Returning Function • Using Function Arguments • Using C++ Library Functions in Expressions • Calling a Void Function • C++ Manipulators to Format Output • String Operations length, find,substr
floating address float double long double pointer reference C++ Data Types simple structured integral enum array struct union class char short int long bool
simple types integral floating char short int long bool enum float double long double unsigned C++ Simple Data Types
Standard Data Types in C++ • Integral Types • Representan números enteros incluyendo negativos • Se declaran como int, short, olong • Floating Types • representan números reales con el punto decimal • Se declaran como float, o double • Character Type • representan un solo caracter • se declaran como char
Ejemplos de Datos en C++ valores tipoint 4578 -4578 0 valores tipofloat 95.274 95. .265 9521E-3 -95E-1 95.213E2 valores tipochar ‘B’‘d’ ‘4’‘?’‘*’
Tamaños de Enteros • Los tipos de datos char, short, int y long representan diferentes tamaños en la computadora. • El tamaño varía de acerdo a la arquitectura de la computadora. • Una representación gráfica nos puede dar una mejor idea. Tipo char Tipo short Tipo int Tipo long
Información adicional sobre int • En algunas plataformas de computadoras, el tamaño int y long son equivalentes. • int es el tamaño más comúnmente usado. • En algunas computadoras de uso personal, el rango int va de -32,768 a +32,768. • En otras, el rango es de -2,147,483,648 a + 2,147,483,648. • Si se trata de calcular un valor tipo int mayor del rango que permite la computadora, ocurre un “overflow”. • Algunas computadoras envian mensajes de error ante esta situación, otras no. • Importante, al definir una constante, no se puede comenzar con cero porque la computadora asumirá que en un número octal.
Notación Científica 2.7E4 significa 2.7 x 10 4 = 2.7000 = 27000.0 2.7E-4 significa 2.7 x 10 - 4 = 0002.7 = 0.00027
INFORMACIÓN ADICIONAL SOBRE VALORES TIPO “FLOATING POINT” • Tienen una parte entera y una parte fraccional con un punto entre medio de ambas. Se puede descartar una de las partes, pero no ambas. EJEMPLOS 18.4 500. .8 -127.358 • En ocasiones el valor podría llevar un exponente como en notación científica. El número que va despues de la letra E no lleva punto decimal. EJEMPLOS 1.84E1 5E2 8E-1 -.127358E3
Declaraciones tipo int y float Al igual que con las declaraciones tipo char y string, también podemos definir constantes y variables tipo int y float. EJEMPLOS VARIABLES intstudentCount; intsumOfScores; floataverage; chargrade; stringstuName; CONSTANTES constfloatPI = 3.14159; constfloatE = 2.71828; constintMAX_SCORE = 100; constintMIN_SCORE = -100; constcharLETTER = ‘W’; conststringNAME = “Eliza”;
EJEMPLO DE DECLARACIONES Y EXPRESIONES Dadas las siguientes declaraciones: intnum; intalpha; floatrate; charch; Las siguientes asignaciones son correctas: alpha = 2856; rate = 0.36; ch = ‘B’; num = alpha;
El operador de división • El resultado de la división depende del tipo de sus operandos. • Si uno o ambos operandos tienen un “data type” que sea “floating point”, el resultado es flotante, de lo contrario, el resultado es entero. • Ejemplos 11 / 4 el resultado es: 2 11.0 / 4.0 el resultado es: 2.75 11 / 4.0 el resultado es: 2.75
LA FUNCIÓN main DEVUELVE UN VALOR TIPO int AL SISTEMA OPERATIVO //*************************************************************************** // FreezeBoil program // This program computes the midpoint between // the freezing and boiling points of water //*************************************************************************** #include < iostream > usingnamespace std; constfloatFREEZE_PT = 32.0 ; // Freezing point of water constfloatBOIL_PT = 212.0 ; // Boiling point of water int main ( ) { floatavgTemp ; // Holds the result of averaging // FREEZE_PT and BOIL_PT cout << “Water freezes at “ << FREEZE_PT << endl ; cout << “ and boils at “ << BOIL_PT << “ degrees.” << endl ; avgTemp = FREEZE_PT + BOIL_PT ; avgTemp = avgTemp / 2.0 ; cout << “Halfway between is “ ; cout << avgTemp << “ degrees.” << endl ; return 0 ; }
Modulus Operator • El operador módulo (“modulus operator”) % solo se puede usar con operandos que son enteros y el resultado siempre es de tipo entero. • Su reultado es el residuo de una división entera. EJEMPLO11 % 4 has value 3 because ) R = ? 4 11
Más sobre Operadores de C++ Tenemos 3 formas de incrementar el valor de una variable. intage; age = 8; age = age + 1; Primera Forma 8 age 9 age
++Variable; PREFIX FORMOperator de Incrementación int age; age = 8; ++age; Segunda Forma 8 age Syntax Template 9 age
Variable++ ; POSTFIX FORM Operator de Incrementación int age; age = 8; age++; Tercera Forma 8 age Syntax Template 9 age
Variable -- ; --Variable; Decrement Operator También tenemos tres formas de decrementar el valor de una variable intdogs; dogs = 100; dogs--; --dogs; dogs = dogs - 1; 100 dogs Syntax Template 99 dogs
¿Cúal forma utilizar? • Cuando el operador de incrementar o decrementar se usa “stand alone” en un statement (solo sumar o restar), se puede usar cualquiera de las dos formas (Prefix o Postfix). Usar cualquiera dogs--;--dogs ;
PERO... • Cuando se va a incrementar o decrementar en un “statement” con otros operadores, podría traer diferentes resultados. MINI-LABORATORIO Vamos a subir el compilador de C++, copiar y pegar el programa que se muestra a continuación y ver los resultados que produce.
Programa para el mini-laboratorio #include <iostream> #include <string> using namespace std; int main() { int a, b, c; b = 3; c = 4; cout << "El valor de b es " << b << endl; cout << "El valor de c es " << c << endl << endl; cout << "El valor de (a = b + c) es " << (a = b + c) << endl; cout << "El valor de a es " << a << endl << endl; cout << "El valor de (a *= b) es " << (a *= b) << endl; cout << "El valor de a es " << a << endl << endl;
Programa para el mini-laboratorio (2) a = 5; cout << "El valor de a es " << a << endl; cout << "El valor de b es " << b << endl; cout << "El valor de (a *= b++) es " << (a *= b++) << endl; cout << "El valor de a es " << a << endl; cout << "El valor de b es " << b << endl << endl; a = 5; b = 3; cout << "El valor de a es " << a << endl; cout << "El valor de b es " << b << endl; cout << "El valor de (a *= ++b) es " << (a *= ++b) << endl; cout << "El valor de a es " << a << endl; cout << "El valor de b es " << b << endl << endl;
Programa para el mini-laboratorio (3) a = 5; b = 3; cout << "El valor de a es " << a << endl; cout << "El valor de b es " << b << endl; cout << "El valor de (a = ++b) es " << (a = ++b) << endl; cout << "El valor de a es " << a << endl; cout << "El valor de b es " << b << endl << endl; a = 5; b = 3; cout << "El valor de a es " << a << endl; cout << "El valor de b es " << b << endl; cout << "El valor de (a = b++) es " << (a = b++) << endl; cout << "El valor de a es " << a << endl; cout << "El valor de b es " << b << endl << endl; return 0; }
¿Qué es una expresión in C++? • Una expresión es un arreglo valido de variables, constantes, y operadores. • En C++ cada expresión puede ser evaluada para calcular un valor de un tipo de dato en particular. • El valor de la expresión: 9.3 * 4.5 es 41.85
Los operadores pueden ser: binary involucra 2 operandos 2 + 3 unary involucra 1 operando - 3 ternary involucra 3 operandos despues
Algunos Operadores de C++ PrecedenceOperator Description Higher ( ) Function call + Positive - Negative * Multiplication / Division % Modulus (remainder) + Addition - Subtraction Lower = Assignment
Precedencia • La precedencia más alta determina cual operador se va a aplicar primero a una expresión que tienes varios operadores.
Asociatividad • Asociatividad de izquierda a derecha significa que en una expresión con dos operadores del mismo nivel, el operador de la izquierda se aplica primero. • En C++ los operadores binarios (“binary “) * , / , % , + , - están todos asociados a la izquierda. • Ejemplo: 9 - 5 - 1 significa ( 9 - 5 ) - 1 4 - 1 3
Evaluar la expresión 7 * 10 - 5 % 3 * 4 + 9 (7 * 10) - 5 % 3 * 4 + 9 70 - 5 % 3 * 4 + 9 70 - (5 % 3) * 4 + 9 70 - 2 * 4 + 9 70 - ( 2 * 4 ) + 9 70 - 8 + 9 ( 70 - 8 ) + 9 62 + 9 71
Parentesis • Los parentesis se pueden usar para cambiar el orden usual de la expresión. • Lo que esta dentro del ( ) se evalua primero. • Evaluar: (7 * (10 - 5) % 3) * 4 + 9 ( 7 * 5 % 3 ) * 4 + 9 ( 35 % 3 ) * 4 + 9 2 * 4 + 9 8 + 9 17
Mini-Laboratorio Programa que calcula millaje /* This program computes miles per gallon given four amounts for gallons used, and starting and ending mileage. Constants: The gallon amounts for four fillups. The starting mileage. The ending mileage. Output (screen) The calculated miles per gallon. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ #include <iostream> usingnamespace std; constfloatAMT1 = 11.7 ; // Number of gallons for fillup 1 constfloatAMT2 = 14.3 ; // Number of gallons for fillup 2 constfloatAMT3 = 12.2 ; // Number of gallons for fillup 3 constfloatAMT4 = 8.5 ; // Number of gallons for fillup 4 constfloatSTART_MILES = 67308.0 ; // Starting mileage constfloatEND_MILES = 68750.5 ; // Ending mileage int main( ) { float mpg ; // Computed miles per gallon mpg = (END_MILES - START_MILES) / (AMT1 + AMT2 + AMT3 + AMT4) ; cout << “For the gallon amounts “ << endl ; cout << AMT1 << ‘ ‘ << AMT2 << ‘ ‘ << AMT3 << ‘ ‘ << AMT4 << endl ; cout << “and a starting mileage of “ << START_MILES << endl ; cout << “and an ending mileage of “ << END_MILES << endl ; cout << “the mileage per gallon is “ << mpg << endl ; return 0; }
Más sobre asignación Variable = Expression • Primero, la expression a la derecha es evaluada. • Luego, el valor que se obtiene, se almacena en la localización de memoria de la variable que esta a la izquierda de la ecuación. NOTA: Un “automatic type coercion” ocurre después de la evaluación pero antes de que el valor se almacene si los tipos de datos son diferentes de la expresión y la variable.
‘’?What value is stored? float a; float b; a = 8.5; b = 9.37; a = b; 8.5 ? a a 9.37 ? b b
¿Qué se almacena? floatsomeFloat; someFloat someFloat = 12;// causes implicit type conversion ? 12.0 someFloat
¿Qué se almacena? intsomeInt; someInt someInt = 4.8;// causes implicit type conversion ? 4 someInt
Otros ejemplos de conversión de “Data Types” int(4.8) se convierte en 4 float(5) se convierte en 5.0 float(7/4) se convierte en 1.0 float(7) / float(4) se convierte en 1.75
Ejemplos de Expresiones intage; EXAMPLE VALUE age = 8 8 - age - 8 5 + 8 13 5 / 8 0 6.0 / 5.0 1.2 float ( 4 / 8 ) 0.0 float ( 4 ) / 8 0.5 cout << “How old are you?” cout cin >> age cin cout << age cout
¿Qué valores se almacenan? floatloCost; floathiCost; loCost = 12.342; hiCost = 12.348; loCost = float (int (loCost * 100.0 + 0.5) ) / 100.0; hiCost = float (int (hiCost * 100.0 + 0.5) ) / 100.0;
Resultado redondeado a dos lugares decimales loCost 12.34 12.35 hiCost
Function definition Parameter of function Name of function Conceptos de funciones en matemática f ( x ) = 5 x - 3 Cuando x = 1, f ( x ) = 2 es el valor que devuelve. Cuando x = 4, f ( x ) = 17 es el valor que devuelve. El valor que devuelve se determina por la definición de la función y por los valores de los parámetros.
Funciones • Todo programa en C++ necesita tener una función llamada main • La ejecución del programa siempre comienza con la función main • Las demás funciones son sub-programas y para ejecutarse, necesitan ser invocadas
Llamadas de Funciones (“Function Calls”) • Una función invoca a otra al usar su nombre en adición a los paréntesis y la lista de argumentos. • La función que invoca, tranfiere control temporero a la función invocada.
¿Qué es un bloque (“Block”)? { 0 or más “statements” aqui }
Cada función tiene 2 partes int main ( ) heading { body block return 0; }
Programa más corto de C++ int main ( ) { return 0; } type of returned value name of function
type of returned value says no parameters name of function ¿Qué es un encabezamiento (“heading”)? int main ( )
Más sobre Funciones • No se considera buena practica para el “body block” de la función main que sea demasiado largo • EL invocar funciones se utiliza para realizar tareas (distribuir) • Si el “Data Type” que devuelve no es “void”, la función devuelve un valor al bloque que lo invocó.
¿Dónde están las funciones? Localizadas en una librería O escritas por programadores
HEADER FILE FUNCTION EXAMPLE VALUE OF CALL <cstdlib> abs(i) abs(-6) 6 <cmath> pow(x,y) pow(2.0,3.0) 8.0 fabs(x) fabs(-6.4) 6.4 <cmath> sqrt(x) sqrt(100.0) 10.0 sqrt(x) sqrt(2.0) 1.41421 <cmath> log(x) log(2.0) .693147 <iomanip> setprecision(n) setprecision(3)