1 / 97

Capítulo 3

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

Télécharger la présentation

Capítulo 3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Capítulo 3 Numeric Types, Expressions, and Output

  2. 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

  3. floating address float double long double pointer reference C++ Data Types simple structured integral enum array struct union class char short int long bool

  4. simple types integral floating char short int long bool enum float double long double unsigned C++ Simple Data Types

  5. 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

  6. 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’‘?’‘*’

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

  8. 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.

  9. 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

  10. 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

  11. 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”;

  12. 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;

  13. 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

  14. 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 ; }

  15. 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

  16. 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

  17. ++Variable; PREFIX FORMOperator de Incrementación int age; age = 8; ++age; Segunda Forma 8 age Syntax Template 9 age

  18. Variable++ ; POSTFIX FORM Operator de Incrementación int age; age = 8; age++; Tercera Forma 8 age Syntax Template 9 age

  19. 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

  20. ¿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 ;

  21. 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.

  22. 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;

  23. 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;

  24. 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; }

  25. ¿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

  26. Los operadores pueden ser: binary involucra 2 operandos 2 + 3 unary involucra 1 operando - 3 ternary involucra 3 operandos despues

  27. Algunos Operadores de C++ PrecedenceOperator Description Higher ( ) Function call + Positive - Negative * Multiplication / Division % Modulus (remainder) + Addition - Subtraction Lower = Assignment

  28. Precedencia • La precedencia más alta determina cual operador se va a aplicar primero a una expresión que tienes varios operadores.

  29. 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

  30. 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

  31. 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

  32. 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; }

  33. 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.

  34. ‘’?What value is stored? float a; float b; a = 8.5; b = 9.37; a = b; 8.5 ? a a 9.37 ? b b

  35. ¿Qué se almacena? floatsomeFloat; someFloat someFloat = 12;// causes implicit type conversion ? 12.0 someFloat

  36. ¿Qué se almacena? intsomeInt; someInt someInt = 4.8;// causes implicit type conversion ? 4 someInt

  37. 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

  38. 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

  39. ¿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;

  40. Resultado redondeado a dos lugares decimales loCost 12.34 12.35 hiCost

  41. 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.

  42. 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

  43. 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.

  44. ¿Qué es un bloque (“Block”)? { 0 or más “statements” aqui }

  45. Cada función tiene 2 partes int main ( ) heading { body block return 0; }

  46. Programa más corto de C++ int main ( ) { return 0; } type of returned value name of function

  47. type of returned value says no parameters name of function ¿Qué es un encabezamiento (“heading”)? int main ( )

  48. 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ó.

  49. ¿Dónde están las funciones? Localizadas en una librería O escritas por programadores

  50. 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)

More Related