GUIA_C++

62
LENGUAJE DE PROGRAMACION I DEV C++ Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

Transcript of GUIA_C++

Page 1: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Ing JAVIER ECHEGARAY ROJO Ing WILDER ROMAN MUNIVE

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 1

LENGUAJE DE PROGRAMACION I DEV C++

CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++311 Estructura bagravesica de un programa3

CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++821 Identificador definicioacuten822 Identificadores C++823 Tipos de datos fundamentales924 Variables1025 Inicializacion de variables1326 Introduccioacuten a cadenas1427 Literales1528 Numeros Enteros1629 Nuacutemeros de Punto flotante16210 Caracter y cadena de caracteres172 11 Literales Booleanos19212 Constantes definidas (define)19213 Declaracion de constantes (const)20214 OPERADORES20

2141Asignacion (=)212142 Operadores Arimeticos ( + - )222143 Operadores compuestos232144 Incremento y decremento(++ --)232145 Operadores Relacionales y de Igualdad242146 Operadores logicos ( ampamp || )252147 Operador ||262148 Operador condicional ( )262149 Operador Coma ( )2721410 Operador tipo Casting ( Conversioacuten de tipo de datos)27

215 Jerarquia de operadores28CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA30

31 Salida standar(cout)3032 Salida estandar(cin)32

CAPITULO IV ESTRUCTURAS DE CONTROL3441 Estructura Condicional if else3442 La estructura selectiva switch3843 El lazo while4244 El lazo do-while4445 El lazo For4646 La instruccion break4947 Instruccion continue4948 La instruccion goto50

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 2

LENGUAJE DE PROGRAMACION I DEV C++

CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++

11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA

Programa 1

include ltiostream gt declaracioacuten de libreriacuteasusing namespace std

int main() funcion main coutltltrdquoBienvenido al mundo de C++rdquoltltendl instrucciones system(ldquopause ldquo) pausareturn 0 valor de retorno de la funcioacuten llaves de cierre de la funcioacuten

Ejecucioacuten del programaBienvenido al Mundo de C++Presione una tecla para continuar

12 COMO USAR DEV C++

Una vez instalado el dev-cpp lo primero que debemos hacer para empezar a crear un programa es crear un archivo fuente (Source File)Para crear un archivo haremos clic en archivo-gt new- gt Source file

A continuacioacuten nos apareceraacute LA VENTANA DE EDICION DE CODIGO donde se deberaacute ingresar las instrucciones o el coacutedigo del Programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 3

LENGUAJE DE PROGRAMACION I DEV C++

Una vez de haber concluido con la escritura del coacutedigo es necesario Compilar y luego ejecutar

Para Compilar el programa hacer clic en Execute -gtcompile (Ctrl +F9)

En caso de que algo exista errores en el codigo nos aparecera en la parte inferior una ventana con los errores

VENTANA DE ERRORES

Cuando esta libre de errores la en la ventana status deberagrave Aparecer el Mensaje Done y estara listo para Ejecutarse

Para Ejecutar el el programa hacer clic en Execute -gtRun (Ctrl +F10)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 4

LENGUAJE DE PROGRAMACION I DEV C++

Como resultado obtendremos

NOTA Tambien podremos utilizar la barra de herramientas compile y Run para compilar y ejecutar nuestros programas

Compilar ejecutar compilar y ejecutar

Analicemos cada parte de nuestro primer programa

include ltiostreamgt

La parte del include se refiere a la biblioteca de funciones que vamos a utilizar

Es decir para llamar a una biblioteca en particular debemos hacer lo siguiente

include ltlibreriacutea_solicitadagt

El estaacutendar de C++ incluye varias bibliotecas de funciones y dependiendo del

compilador que se esteacute usando puede aumentar el nuacutemero

using namespace std

Esta sentencia cambia una configuracioacuten en el compilador para que las funciones

de la libreriacutea iostream nos funcionen bien

int main( )

Todo programa en C++ comienza con una funcioacuten main() y soacutelo puede haber

una En C++ el main() siempre regresa un entero es por eso se antepone ldquointrdquo a

la palabra ldquomainrdquo Los pareacutentesis que le siguen contienen lo que se le va a

mandar a la funcioacuten en este caso puede ser void o no contener nada La llave

que se abre significa que se iniciaraacute un bloque de instrucciones

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 5

LENGUAJE DE PROGRAMACION I DEV C++

coutltltrdquoBienvenido al mundo de C++rdquoltltendl

Esta es una instruccioacuten La instruccioacuten cout estaacute definida dentro de la biblioteca

iostream que previamente declaramos que iacutebamos a utilizar Una funcioacuten en

este caso main() siempre comienza su ejecucioacuten con una instruccioacuten (la que se

encuentra en la parte superior) y continuacutea asiacute hasta que se llegue a la uacuteltima

instruccioacuten (de la parte inferior) Para terminar una instruccioacuten siempre se coloca

ldquordquo

Pero ademaacutes de instrucciones se pueden invocar funciones definidas por el

usuario (por supuesto diferentes de main) como se veraacute mas adelante

system(ldquopauserdquo)

Esta instruccioacuten permite una pausa para que se pueda visualizar el resultado

return 0

Esta es otra instruccioacuten en este caso la instruccioacuten return determina que es lo

que se devolveraacute de la funcioacuten main() Habiacuteamos declarado que main devolveriacutea

un entero asiacute que la instruccioacuten return devuelve 0 Lo cual a su vez significa que

no han ocurrido errores durante su ejecucioacuten

La llave de cierre de la funcioacuten main() indica el termino del bloque de

instrucciones

En algunos programas de ejemplo notaraacute el uso de dobles diagonales (ldquordquo)

Estas

diagonales se usan para escribir comentarios de una liacutenea dentro del coacutedigo del

programa Ademaacutes podraacute encontrar el uso de ldquordquo ldquordquo estos caracteres encierran

un

comentario de varias liacuteneas y cualquier cosa que se escriba dentro de ella no

influenciaraacute en el desempentildeo del programa

Tambieacuten veraacute que muchas veces utilizaremos una diagonal invertida (ldquordquo) Este

signo

se utiliza cuando una instruccioacuten ocuparaacute varias liacuteneas y por razones de espacio

en

la hoja es mejor dividirla en partes

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 6

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 7

LENGUAJE DE PROGRAMACION I DEV C++

CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++

21 Identificador definicioacuten

un identificador es un conjunto de caracteres alfanumeacutericos de cualquier longitud

que sirve para identificar las entidades del programa (clases funciones

variables tipos compuestos Etc) Los identificadores pueden ser combinaciones

de letras y nuacutemeros Cada lenguaje tiene sus propias reglas que definen como

pueden estar construidos En el caso de C++ son las que se indican a

continuacioacuten Cuando un identificador se asocia a una entidad concreta entonces

es el nombre de dicha entidad y en adelante la representa en el programa Por

supuesto puede ocurrir que varios identificadores se refieran a una misma

entidad

Nota el concepto de entidad es muy amplio corresponde a un valor clase

elemento de una matriz variable funcioacuten miembro de clase instancia de clase

enumerador plantilla o espacio de nombres del programa

22 Identificadores C++

Los identificadores C++ pueden contener las letras a a z y A a Z el guioacuten bajo

_ (Underscore) y los diacutegitos 0 a 9

Caracteres permitidos

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y

Z

_

Diacutegitos permitidos

0 1 2 3 4 5 6 7 8 9

Solo hay dos restricciones en cuanto a la composicioacuten

El primer caraacutecter debe ser una letra o el guioacuten bajo El Estaacutendar establece que

los identificadores comenzando con guioacuten bajo y mayuacutescula no deben ser

utilizados Este tipo de nombres se reserva para los compiladores y las Libreriacuteas

Estaacutendar Tampoco se permite la utilizacioacuten de nombres que contengan dos

guiones bajos seguidos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 8

LENGUAJE DE PROGRAMACION I DEV C++

El estaacutendar ANSI establece que como miacutenimo seraacuten significativos los 31 primeros

caracteres aunque pueden ser maacutes seguacuten la implementacioacuten [1] Es decir para

que un compilador se adhiera al estaacutendar ANSI debe considerar como

significativos al menos los 31 primeros caracteres

Los identificadores distinguen mayuacutesculas y minuacutesculas asiacute que Sum sum y suM

son distintos para el compilador

23 TIPOS DE DATOS FUNDAMENTALES

Los prototipos de variables utilizados en los programas de ejemplo hasta el

momento han sido en su mayoriacutea de tipo entero (int) pero es iloacutegico pensar que

eacuteste sea el uacutenico que se llegue a utilizar Ademaacutes del tipo entero existen otros

Los tipos de datos atoacutemicos son los tipos de datos maacutes sencillos a partir de los cuales se

pueden construir otros maacutes complejos La siguiente tabla ilustra estos tipos con sus intervalos

de valores posibles y el nuacutemero de bytes que ocupan

Nombre Descripcion tam Rango

char Caraacutecter o pequentildeos enteros 1bytesigned -128 to 127unsigned 0 to 255

short int (short) Entero corto

2bytes

signed -32768 to 32767unsigned 0 to 65535

int Entero4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

long int (long) Entero largo

4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

bool Valor Booleano Puede tomar 2 valores true(1) o false(0)

1byte 1 orsquo 0

float Numero de punto flotante4bytes

34e +- 38 (7 digits)

double Numero de punto flotante doble precisioacuten

8bytes

17e +- 308 (15 digits)

long double Numero largo de punto flotante doble precision

8bytes

17e +- 308 (15 digits)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 9

LENGUAJE DE PROGRAMACION I DEV C++

24 VARIABLES Anteriormente vimos la forma general de un programa un programa

sumamente sencillo Ahora veamos un programa muy parecido al anterior

Programa middot 2include ltiostreamgtusing namespace stdint main( )int variablevariable=5coutltltvariablesystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

10Presione una tecla para continuar

Notemos en esta ocasioacuten soacutelo la parte int variable A esta seccioacuten se le

denomina declaracioacuten Se trata de la declaracioacuten de una variable de nombre

ldquovariablerdquo

Una variable es una posicioacuten de memoria con nombre que se usa para mantener

un valor que puede ser modificado por el programa3 Las variables son

declaradas usadas y liberadas Una declaracioacuten se encuentra ligada a un tipo a

un nombre y a un valor

Baacutesicamente la declaracioacuten de una variable presenta el siguiente aspecto

tipo nombre [=valor]

Los corchetes significan que esa parte es opcional Por ejemplo la declaracioacuten

int mi_variable=5

declara una variable tipo entero de nombre ldquomi_variablerdquo y le asigna el valor ldquo5rdquo

C++ es sensible a mayuacutesculas y minuacutesculas asiacute que si el nombre de nuestra

variable empieza con una letra en mayuacutesculas debemos de asegurarnos que

durante el resto del coacutedigo nos refiramos a ella exactamente como la escribimos

Los nombres de las variables no pueden usar signos de puntuacioacuten soacutelo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 10

LENGUAJE DE PROGRAMACION I DEV C++

caracteres ldquoA-Zrdquo ldquoa-zrdquo ldquo_ldquo ldquo0- 9rdquo aunque ninguacuten nombre debe comenzar con

un nuacutemero (0-9) Ademaacutes no se deben de repetir nombres de variables en el

mismo contexto

Ademaacutes de las restricciones anteriores existe otra y esta tiene que ver con las

palabras reservadas del lenguaje que no son muchas a comparacioacuten de otros

lenguajes como Basic Las palabras que se presentan en la siguiente lista no

pueden ocuparse como nombres de variables funciones u otras instrucciones

definidas por el programador

asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

Las variables se pueden declarar en tres sitios baacutesicos dentro de las funciones

(ya sea la funcioacuten main u otras creadas por el programador) estas variables son

llamadas locales en la definicioacuten de paraacutemetros de una funcioacuten como se veraacute

maacutes adelante y fuera de todas las funciones variables globales

Programa 3include ltiostreamgtusing namespace stdint variable_global=10int main()int variable_local=20coutltltnprograma que muestra los usos de variables globales y localesnltltendlcoutltltla variable global tiene asignado un ldquo ltltvariable_globalltltendlcoutltltnla variable local tiene asignado un ltltvariable_localltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

Programa que muestra los usos de las variables globales y locales

La variable global tiene asignado un 10

La variable local tiene asignado un 20

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 11

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 2: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++311 Estructura bagravesica de un programa3

CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++821 Identificador definicioacuten822 Identificadores C++823 Tipos de datos fundamentales924 Variables1025 Inicializacion de variables1326 Introduccioacuten a cadenas1427 Literales1528 Numeros Enteros1629 Nuacutemeros de Punto flotante16210 Caracter y cadena de caracteres172 11 Literales Booleanos19212 Constantes definidas (define)19213 Declaracion de constantes (const)20214 OPERADORES20

2141Asignacion (=)212142 Operadores Arimeticos ( + - )222143 Operadores compuestos232144 Incremento y decremento(++ --)232145 Operadores Relacionales y de Igualdad242146 Operadores logicos ( ampamp || )252147 Operador ||262148 Operador condicional ( )262149 Operador Coma ( )2721410 Operador tipo Casting ( Conversioacuten de tipo de datos)27

215 Jerarquia de operadores28CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA30

31 Salida standar(cout)3032 Salida estandar(cin)32

CAPITULO IV ESTRUCTURAS DE CONTROL3441 Estructura Condicional if else3442 La estructura selectiva switch3843 El lazo while4244 El lazo do-while4445 El lazo For4646 La instruccion break4947 Instruccion continue4948 La instruccion goto50

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 2

LENGUAJE DE PROGRAMACION I DEV C++

CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++

11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA

Programa 1

include ltiostream gt declaracioacuten de libreriacuteasusing namespace std

int main() funcion main coutltltrdquoBienvenido al mundo de C++rdquoltltendl instrucciones system(ldquopause ldquo) pausareturn 0 valor de retorno de la funcioacuten llaves de cierre de la funcioacuten

Ejecucioacuten del programaBienvenido al Mundo de C++Presione una tecla para continuar

12 COMO USAR DEV C++

Una vez instalado el dev-cpp lo primero que debemos hacer para empezar a crear un programa es crear un archivo fuente (Source File)Para crear un archivo haremos clic en archivo-gt new- gt Source file

A continuacioacuten nos apareceraacute LA VENTANA DE EDICION DE CODIGO donde se deberaacute ingresar las instrucciones o el coacutedigo del Programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 3

LENGUAJE DE PROGRAMACION I DEV C++

Una vez de haber concluido con la escritura del coacutedigo es necesario Compilar y luego ejecutar

Para Compilar el programa hacer clic en Execute -gtcompile (Ctrl +F9)

En caso de que algo exista errores en el codigo nos aparecera en la parte inferior una ventana con los errores

VENTANA DE ERRORES

Cuando esta libre de errores la en la ventana status deberagrave Aparecer el Mensaje Done y estara listo para Ejecutarse

Para Ejecutar el el programa hacer clic en Execute -gtRun (Ctrl +F10)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 4

LENGUAJE DE PROGRAMACION I DEV C++

Como resultado obtendremos

NOTA Tambien podremos utilizar la barra de herramientas compile y Run para compilar y ejecutar nuestros programas

Compilar ejecutar compilar y ejecutar

Analicemos cada parte de nuestro primer programa

include ltiostreamgt

La parte del include se refiere a la biblioteca de funciones que vamos a utilizar

Es decir para llamar a una biblioteca en particular debemos hacer lo siguiente

include ltlibreriacutea_solicitadagt

El estaacutendar de C++ incluye varias bibliotecas de funciones y dependiendo del

compilador que se esteacute usando puede aumentar el nuacutemero

using namespace std

Esta sentencia cambia una configuracioacuten en el compilador para que las funciones

de la libreriacutea iostream nos funcionen bien

int main( )

Todo programa en C++ comienza con una funcioacuten main() y soacutelo puede haber

una En C++ el main() siempre regresa un entero es por eso se antepone ldquointrdquo a

la palabra ldquomainrdquo Los pareacutentesis que le siguen contienen lo que se le va a

mandar a la funcioacuten en este caso puede ser void o no contener nada La llave

que se abre significa que se iniciaraacute un bloque de instrucciones

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 5

LENGUAJE DE PROGRAMACION I DEV C++

coutltltrdquoBienvenido al mundo de C++rdquoltltendl

Esta es una instruccioacuten La instruccioacuten cout estaacute definida dentro de la biblioteca

iostream que previamente declaramos que iacutebamos a utilizar Una funcioacuten en

este caso main() siempre comienza su ejecucioacuten con una instruccioacuten (la que se

encuentra en la parte superior) y continuacutea asiacute hasta que se llegue a la uacuteltima

instruccioacuten (de la parte inferior) Para terminar una instruccioacuten siempre se coloca

ldquordquo

Pero ademaacutes de instrucciones se pueden invocar funciones definidas por el

usuario (por supuesto diferentes de main) como se veraacute mas adelante

system(ldquopauserdquo)

Esta instruccioacuten permite una pausa para que se pueda visualizar el resultado

return 0

Esta es otra instruccioacuten en este caso la instruccioacuten return determina que es lo

que se devolveraacute de la funcioacuten main() Habiacuteamos declarado que main devolveriacutea

un entero asiacute que la instruccioacuten return devuelve 0 Lo cual a su vez significa que

no han ocurrido errores durante su ejecucioacuten

La llave de cierre de la funcioacuten main() indica el termino del bloque de

instrucciones

En algunos programas de ejemplo notaraacute el uso de dobles diagonales (ldquordquo)

Estas

diagonales se usan para escribir comentarios de una liacutenea dentro del coacutedigo del

programa Ademaacutes podraacute encontrar el uso de ldquordquo ldquordquo estos caracteres encierran

un

comentario de varias liacuteneas y cualquier cosa que se escriba dentro de ella no

influenciaraacute en el desempentildeo del programa

Tambieacuten veraacute que muchas veces utilizaremos una diagonal invertida (ldquordquo) Este

signo

se utiliza cuando una instruccioacuten ocuparaacute varias liacuteneas y por razones de espacio

en

la hoja es mejor dividirla en partes

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 6

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 7

LENGUAJE DE PROGRAMACION I DEV C++

CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++

21 Identificador definicioacuten

un identificador es un conjunto de caracteres alfanumeacutericos de cualquier longitud

que sirve para identificar las entidades del programa (clases funciones

variables tipos compuestos Etc) Los identificadores pueden ser combinaciones

de letras y nuacutemeros Cada lenguaje tiene sus propias reglas que definen como

pueden estar construidos En el caso de C++ son las que se indican a

continuacioacuten Cuando un identificador se asocia a una entidad concreta entonces

es el nombre de dicha entidad y en adelante la representa en el programa Por

supuesto puede ocurrir que varios identificadores se refieran a una misma

entidad

Nota el concepto de entidad es muy amplio corresponde a un valor clase

elemento de una matriz variable funcioacuten miembro de clase instancia de clase

enumerador plantilla o espacio de nombres del programa

22 Identificadores C++

Los identificadores C++ pueden contener las letras a a z y A a Z el guioacuten bajo

_ (Underscore) y los diacutegitos 0 a 9

Caracteres permitidos

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y

Z

_

Diacutegitos permitidos

0 1 2 3 4 5 6 7 8 9

Solo hay dos restricciones en cuanto a la composicioacuten

El primer caraacutecter debe ser una letra o el guioacuten bajo El Estaacutendar establece que

los identificadores comenzando con guioacuten bajo y mayuacutescula no deben ser

utilizados Este tipo de nombres se reserva para los compiladores y las Libreriacuteas

Estaacutendar Tampoco se permite la utilizacioacuten de nombres que contengan dos

guiones bajos seguidos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 8

LENGUAJE DE PROGRAMACION I DEV C++

El estaacutendar ANSI establece que como miacutenimo seraacuten significativos los 31 primeros

caracteres aunque pueden ser maacutes seguacuten la implementacioacuten [1] Es decir para

que un compilador se adhiera al estaacutendar ANSI debe considerar como

significativos al menos los 31 primeros caracteres

Los identificadores distinguen mayuacutesculas y minuacutesculas asiacute que Sum sum y suM

son distintos para el compilador

23 TIPOS DE DATOS FUNDAMENTALES

Los prototipos de variables utilizados en los programas de ejemplo hasta el

momento han sido en su mayoriacutea de tipo entero (int) pero es iloacutegico pensar que

eacuteste sea el uacutenico que se llegue a utilizar Ademaacutes del tipo entero existen otros

Los tipos de datos atoacutemicos son los tipos de datos maacutes sencillos a partir de los cuales se

pueden construir otros maacutes complejos La siguiente tabla ilustra estos tipos con sus intervalos

de valores posibles y el nuacutemero de bytes que ocupan

Nombre Descripcion tam Rango

char Caraacutecter o pequentildeos enteros 1bytesigned -128 to 127unsigned 0 to 255

short int (short) Entero corto

2bytes

signed -32768 to 32767unsigned 0 to 65535

int Entero4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

long int (long) Entero largo

4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

bool Valor Booleano Puede tomar 2 valores true(1) o false(0)

1byte 1 orsquo 0

float Numero de punto flotante4bytes

34e +- 38 (7 digits)

double Numero de punto flotante doble precisioacuten

8bytes

17e +- 308 (15 digits)

long double Numero largo de punto flotante doble precision

8bytes

17e +- 308 (15 digits)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 9

LENGUAJE DE PROGRAMACION I DEV C++

24 VARIABLES Anteriormente vimos la forma general de un programa un programa

sumamente sencillo Ahora veamos un programa muy parecido al anterior

Programa middot 2include ltiostreamgtusing namespace stdint main( )int variablevariable=5coutltltvariablesystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

10Presione una tecla para continuar

Notemos en esta ocasioacuten soacutelo la parte int variable A esta seccioacuten se le

denomina declaracioacuten Se trata de la declaracioacuten de una variable de nombre

ldquovariablerdquo

Una variable es una posicioacuten de memoria con nombre que se usa para mantener

un valor que puede ser modificado por el programa3 Las variables son

declaradas usadas y liberadas Una declaracioacuten se encuentra ligada a un tipo a

un nombre y a un valor

Baacutesicamente la declaracioacuten de una variable presenta el siguiente aspecto

tipo nombre [=valor]

Los corchetes significan que esa parte es opcional Por ejemplo la declaracioacuten

int mi_variable=5

declara una variable tipo entero de nombre ldquomi_variablerdquo y le asigna el valor ldquo5rdquo

C++ es sensible a mayuacutesculas y minuacutesculas asiacute que si el nombre de nuestra

variable empieza con una letra en mayuacutesculas debemos de asegurarnos que

durante el resto del coacutedigo nos refiramos a ella exactamente como la escribimos

Los nombres de las variables no pueden usar signos de puntuacioacuten soacutelo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 10

LENGUAJE DE PROGRAMACION I DEV C++

caracteres ldquoA-Zrdquo ldquoa-zrdquo ldquo_ldquo ldquo0- 9rdquo aunque ninguacuten nombre debe comenzar con

un nuacutemero (0-9) Ademaacutes no se deben de repetir nombres de variables en el

mismo contexto

Ademaacutes de las restricciones anteriores existe otra y esta tiene que ver con las

palabras reservadas del lenguaje que no son muchas a comparacioacuten de otros

lenguajes como Basic Las palabras que se presentan en la siguiente lista no

pueden ocuparse como nombres de variables funciones u otras instrucciones

definidas por el programador

asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

Las variables se pueden declarar en tres sitios baacutesicos dentro de las funciones

(ya sea la funcioacuten main u otras creadas por el programador) estas variables son

llamadas locales en la definicioacuten de paraacutemetros de una funcioacuten como se veraacute

maacutes adelante y fuera de todas las funciones variables globales

Programa 3include ltiostreamgtusing namespace stdint variable_global=10int main()int variable_local=20coutltltnprograma que muestra los usos de variables globales y localesnltltendlcoutltltla variable global tiene asignado un ldquo ltltvariable_globalltltendlcoutltltnla variable local tiene asignado un ltltvariable_localltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

Programa que muestra los usos de las variables globales y locales

La variable global tiene asignado un 10

La variable local tiene asignado un 20

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 11

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 3: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++

11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA

Programa 1

include ltiostream gt declaracioacuten de libreriacuteasusing namespace std

int main() funcion main coutltltrdquoBienvenido al mundo de C++rdquoltltendl instrucciones system(ldquopause ldquo) pausareturn 0 valor de retorno de la funcioacuten llaves de cierre de la funcioacuten

Ejecucioacuten del programaBienvenido al Mundo de C++Presione una tecla para continuar

12 COMO USAR DEV C++

Una vez instalado el dev-cpp lo primero que debemos hacer para empezar a crear un programa es crear un archivo fuente (Source File)Para crear un archivo haremos clic en archivo-gt new- gt Source file

A continuacioacuten nos apareceraacute LA VENTANA DE EDICION DE CODIGO donde se deberaacute ingresar las instrucciones o el coacutedigo del Programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 3

LENGUAJE DE PROGRAMACION I DEV C++

Una vez de haber concluido con la escritura del coacutedigo es necesario Compilar y luego ejecutar

Para Compilar el programa hacer clic en Execute -gtcompile (Ctrl +F9)

En caso de que algo exista errores en el codigo nos aparecera en la parte inferior una ventana con los errores

VENTANA DE ERRORES

Cuando esta libre de errores la en la ventana status deberagrave Aparecer el Mensaje Done y estara listo para Ejecutarse

Para Ejecutar el el programa hacer clic en Execute -gtRun (Ctrl +F10)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 4

LENGUAJE DE PROGRAMACION I DEV C++

Como resultado obtendremos

NOTA Tambien podremos utilizar la barra de herramientas compile y Run para compilar y ejecutar nuestros programas

Compilar ejecutar compilar y ejecutar

Analicemos cada parte de nuestro primer programa

include ltiostreamgt

La parte del include se refiere a la biblioteca de funciones que vamos a utilizar

Es decir para llamar a una biblioteca en particular debemos hacer lo siguiente

include ltlibreriacutea_solicitadagt

El estaacutendar de C++ incluye varias bibliotecas de funciones y dependiendo del

compilador que se esteacute usando puede aumentar el nuacutemero

using namespace std

Esta sentencia cambia una configuracioacuten en el compilador para que las funciones

de la libreriacutea iostream nos funcionen bien

int main( )

Todo programa en C++ comienza con una funcioacuten main() y soacutelo puede haber

una En C++ el main() siempre regresa un entero es por eso se antepone ldquointrdquo a

la palabra ldquomainrdquo Los pareacutentesis que le siguen contienen lo que se le va a

mandar a la funcioacuten en este caso puede ser void o no contener nada La llave

que se abre significa que se iniciaraacute un bloque de instrucciones

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 5

LENGUAJE DE PROGRAMACION I DEV C++

coutltltrdquoBienvenido al mundo de C++rdquoltltendl

Esta es una instruccioacuten La instruccioacuten cout estaacute definida dentro de la biblioteca

iostream que previamente declaramos que iacutebamos a utilizar Una funcioacuten en

este caso main() siempre comienza su ejecucioacuten con una instruccioacuten (la que se

encuentra en la parte superior) y continuacutea asiacute hasta que se llegue a la uacuteltima

instruccioacuten (de la parte inferior) Para terminar una instruccioacuten siempre se coloca

ldquordquo

Pero ademaacutes de instrucciones se pueden invocar funciones definidas por el

usuario (por supuesto diferentes de main) como se veraacute mas adelante

system(ldquopauserdquo)

Esta instruccioacuten permite una pausa para que se pueda visualizar el resultado

return 0

Esta es otra instruccioacuten en este caso la instruccioacuten return determina que es lo

que se devolveraacute de la funcioacuten main() Habiacuteamos declarado que main devolveriacutea

un entero asiacute que la instruccioacuten return devuelve 0 Lo cual a su vez significa que

no han ocurrido errores durante su ejecucioacuten

La llave de cierre de la funcioacuten main() indica el termino del bloque de

instrucciones

En algunos programas de ejemplo notaraacute el uso de dobles diagonales (ldquordquo)

Estas

diagonales se usan para escribir comentarios de una liacutenea dentro del coacutedigo del

programa Ademaacutes podraacute encontrar el uso de ldquordquo ldquordquo estos caracteres encierran

un

comentario de varias liacuteneas y cualquier cosa que se escriba dentro de ella no

influenciaraacute en el desempentildeo del programa

Tambieacuten veraacute que muchas veces utilizaremos una diagonal invertida (ldquordquo) Este

signo

se utiliza cuando una instruccioacuten ocuparaacute varias liacuteneas y por razones de espacio

en

la hoja es mejor dividirla en partes

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 6

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 7

LENGUAJE DE PROGRAMACION I DEV C++

CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++

21 Identificador definicioacuten

un identificador es un conjunto de caracteres alfanumeacutericos de cualquier longitud

que sirve para identificar las entidades del programa (clases funciones

variables tipos compuestos Etc) Los identificadores pueden ser combinaciones

de letras y nuacutemeros Cada lenguaje tiene sus propias reglas que definen como

pueden estar construidos En el caso de C++ son las que se indican a

continuacioacuten Cuando un identificador se asocia a una entidad concreta entonces

es el nombre de dicha entidad y en adelante la representa en el programa Por

supuesto puede ocurrir que varios identificadores se refieran a una misma

entidad

Nota el concepto de entidad es muy amplio corresponde a un valor clase

elemento de una matriz variable funcioacuten miembro de clase instancia de clase

enumerador plantilla o espacio de nombres del programa

22 Identificadores C++

Los identificadores C++ pueden contener las letras a a z y A a Z el guioacuten bajo

_ (Underscore) y los diacutegitos 0 a 9

Caracteres permitidos

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y

Z

_

Diacutegitos permitidos

0 1 2 3 4 5 6 7 8 9

Solo hay dos restricciones en cuanto a la composicioacuten

El primer caraacutecter debe ser una letra o el guioacuten bajo El Estaacutendar establece que

los identificadores comenzando con guioacuten bajo y mayuacutescula no deben ser

utilizados Este tipo de nombres se reserva para los compiladores y las Libreriacuteas

Estaacutendar Tampoco se permite la utilizacioacuten de nombres que contengan dos

guiones bajos seguidos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 8

LENGUAJE DE PROGRAMACION I DEV C++

El estaacutendar ANSI establece que como miacutenimo seraacuten significativos los 31 primeros

caracteres aunque pueden ser maacutes seguacuten la implementacioacuten [1] Es decir para

que un compilador se adhiera al estaacutendar ANSI debe considerar como

significativos al menos los 31 primeros caracteres

Los identificadores distinguen mayuacutesculas y minuacutesculas asiacute que Sum sum y suM

son distintos para el compilador

23 TIPOS DE DATOS FUNDAMENTALES

Los prototipos de variables utilizados en los programas de ejemplo hasta el

momento han sido en su mayoriacutea de tipo entero (int) pero es iloacutegico pensar que

eacuteste sea el uacutenico que se llegue a utilizar Ademaacutes del tipo entero existen otros

Los tipos de datos atoacutemicos son los tipos de datos maacutes sencillos a partir de los cuales se

pueden construir otros maacutes complejos La siguiente tabla ilustra estos tipos con sus intervalos

de valores posibles y el nuacutemero de bytes que ocupan

Nombre Descripcion tam Rango

char Caraacutecter o pequentildeos enteros 1bytesigned -128 to 127unsigned 0 to 255

short int (short) Entero corto

2bytes

signed -32768 to 32767unsigned 0 to 65535

int Entero4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

long int (long) Entero largo

4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

bool Valor Booleano Puede tomar 2 valores true(1) o false(0)

1byte 1 orsquo 0

float Numero de punto flotante4bytes

34e +- 38 (7 digits)

double Numero de punto flotante doble precisioacuten

8bytes

17e +- 308 (15 digits)

long double Numero largo de punto flotante doble precision

8bytes

17e +- 308 (15 digits)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 9

LENGUAJE DE PROGRAMACION I DEV C++

24 VARIABLES Anteriormente vimos la forma general de un programa un programa

sumamente sencillo Ahora veamos un programa muy parecido al anterior

Programa middot 2include ltiostreamgtusing namespace stdint main( )int variablevariable=5coutltltvariablesystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

10Presione una tecla para continuar

Notemos en esta ocasioacuten soacutelo la parte int variable A esta seccioacuten se le

denomina declaracioacuten Se trata de la declaracioacuten de una variable de nombre

ldquovariablerdquo

Una variable es una posicioacuten de memoria con nombre que se usa para mantener

un valor que puede ser modificado por el programa3 Las variables son

declaradas usadas y liberadas Una declaracioacuten se encuentra ligada a un tipo a

un nombre y a un valor

Baacutesicamente la declaracioacuten de una variable presenta el siguiente aspecto

tipo nombre [=valor]

Los corchetes significan que esa parte es opcional Por ejemplo la declaracioacuten

int mi_variable=5

declara una variable tipo entero de nombre ldquomi_variablerdquo y le asigna el valor ldquo5rdquo

C++ es sensible a mayuacutesculas y minuacutesculas asiacute que si el nombre de nuestra

variable empieza con una letra en mayuacutesculas debemos de asegurarnos que

durante el resto del coacutedigo nos refiramos a ella exactamente como la escribimos

Los nombres de las variables no pueden usar signos de puntuacioacuten soacutelo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 10

LENGUAJE DE PROGRAMACION I DEV C++

caracteres ldquoA-Zrdquo ldquoa-zrdquo ldquo_ldquo ldquo0- 9rdquo aunque ninguacuten nombre debe comenzar con

un nuacutemero (0-9) Ademaacutes no se deben de repetir nombres de variables en el

mismo contexto

Ademaacutes de las restricciones anteriores existe otra y esta tiene que ver con las

palabras reservadas del lenguaje que no son muchas a comparacioacuten de otros

lenguajes como Basic Las palabras que se presentan en la siguiente lista no

pueden ocuparse como nombres de variables funciones u otras instrucciones

definidas por el programador

asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

Las variables se pueden declarar en tres sitios baacutesicos dentro de las funciones

(ya sea la funcioacuten main u otras creadas por el programador) estas variables son

llamadas locales en la definicioacuten de paraacutemetros de una funcioacuten como se veraacute

maacutes adelante y fuera de todas las funciones variables globales

Programa 3include ltiostreamgtusing namespace stdint variable_global=10int main()int variable_local=20coutltltnprograma que muestra los usos de variables globales y localesnltltendlcoutltltla variable global tiene asignado un ldquo ltltvariable_globalltltendlcoutltltnla variable local tiene asignado un ltltvariable_localltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

Programa que muestra los usos de las variables globales y locales

La variable global tiene asignado un 10

La variable local tiene asignado un 20

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 11

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 4: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Una vez de haber concluido con la escritura del coacutedigo es necesario Compilar y luego ejecutar

Para Compilar el programa hacer clic en Execute -gtcompile (Ctrl +F9)

En caso de que algo exista errores en el codigo nos aparecera en la parte inferior una ventana con los errores

VENTANA DE ERRORES

Cuando esta libre de errores la en la ventana status deberagrave Aparecer el Mensaje Done y estara listo para Ejecutarse

Para Ejecutar el el programa hacer clic en Execute -gtRun (Ctrl +F10)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 4

LENGUAJE DE PROGRAMACION I DEV C++

Como resultado obtendremos

NOTA Tambien podremos utilizar la barra de herramientas compile y Run para compilar y ejecutar nuestros programas

Compilar ejecutar compilar y ejecutar

Analicemos cada parte de nuestro primer programa

include ltiostreamgt

La parte del include se refiere a la biblioteca de funciones que vamos a utilizar

Es decir para llamar a una biblioteca en particular debemos hacer lo siguiente

include ltlibreriacutea_solicitadagt

El estaacutendar de C++ incluye varias bibliotecas de funciones y dependiendo del

compilador que se esteacute usando puede aumentar el nuacutemero

using namespace std

Esta sentencia cambia una configuracioacuten en el compilador para que las funciones

de la libreriacutea iostream nos funcionen bien

int main( )

Todo programa en C++ comienza con una funcioacuten main() y soacutelo puede haber

una En C++ el main() siempre regresa un entero es por eso se antepone ldquointrdquo a

la palabra ldquomainrdquo Los pareacutentesis que le siguen contienen lo que se le va a

mandar a la funcioacuten en este caso puede ser void o no contener nada La llave

que se abre significa que se iniciaraacute un bloque de instrucciones

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 5

LENGUAJE DE PROGRAMACION I DEV C++

coutltltrdquoBienvenido al mundo de C++rdquoltltendl

Esta es una instruccioacuten La instruccioacuten cout estaacute definida dentro de la biblioteca

iostream que previamente declaramos que iacutebamos a utilizar Una funcioacuten en

este caso main() siempre comienza su ejecucioacuten con una instruccioacuten (la que se

encuentra en la parte superior) y continuacutea asiacute hasta que se llegue a la uacuteltima

instruccioacuten (de la parte inferior) Para terminar una instruccioacuten siempre se coloca

ldquordquo

Pero ademaacutes de instrucciones se pueden invocar funciones definidas por el

usuario (por supuesto diferentes de main) como se veraacute mas adelante

system(ldquopauserdquo)

Esta instruccioacuten permite una pausa para que se pueda visualizar el resultado

return 0

Esta es otra instruccioacuten en este caso la instruccioacuten return determina que es lo

que se devolveraacute de la funcioacuten main() Habiacuteamos declarado que main devolveriacutea

un entero asiacute que la instruccioacuten return devuelve 0 Lo cual a su vez significa que

no han ocurrido errores durante su ejecucioacuten

La llave de cierre de la funcioacuten main() indica el termino del bloque de

instrucciones

En algunos programas de ejemplo notaraacute el uso de dobles diagonales (ldquordquo)

Estas

diagonales se usan para escribir comentarios de una liacutenea dentro del coacutedigo del

programa Ademaacutes podraacute encontrar el uso de ldquordquo ldquordquo estos caracteres encierran

un

comentario de varias liacuteneas y cualquier cosa que se escriba dentro de ella no

influenciaraacute en el desempentildeo del programa

Tambieacuten veraacute que muchas veces utilizaremos una diagonal invertida (ldquordquo) Este

signo

se utiliza cuando una instruccioacuten ocuparaacute varias liacuteneas y por razones de espacio

en

la hoja es mejor dividirla en partes

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 6

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 7

LENGUAJE DE PROGRAMACION I DEV C++

CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++

21 Identificador definicioacuten

un identificador es un conjunto de caracteres alfanumeacutericos de cualquier longitud

que sirve para identificar las entidades del programa (clases funciones

variables tipos compuestos Etc) Los identificadores pueden ser combinaciones

de letras y nuacutemeros Cada lenguaje tiene sus propias reglas que definen como

pueden estar construidos En el caso de C++ son las que se indican a

continuacioacuten Cuando un identificador se asocia a una entidad concreta entonces

es el nombre de dicha entidad y en adelante la representa en el programa Por

supuesto puede ocurrir que varios identificadores se refieran a una misma

entidad

Nota el concepto de entidad es muy amplio corresponde a un valor clase

elemento de una matriz variable funcioacuten miembro de clase instancia de clase

enumerador plantilla o espacio de nombres del programa

22 Identificadores C++

Los identificadores C++ pueden contener las letras a a z y A a Z el guioacuten bajo

_ (Underscore) y los diacutegitos 0 a 9

Caracteres permitidos

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y

Z

_

Diacutegitos permitidos

0 1 2 3 4 5 6 7 8 9

Solo hay dos restricciones en cuanto a la composicioacuten

El primer caraacutecter debe ser una letra o el guioacuten bajo El Estaacutendar establece que

los identificadores comenzando con guioacuten bajo y mayuacutescula no deben ser

utilizados Este tipo de nombres se reserva para los compiladores y las Libreriacuteas

Estaacutendar Tampoco se permite la utilizacioacuten de nombres que contengan dos

guiones bajos seguidos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 8

LENGUAJE DE PROGRAMACION I DEV C++

El estaacutendar ANSI establece que como miacutenimo seraacuten significativos los 31 primeros

caracteres aunque pueden ser maacutes seguacuten la implementacioacuten [1] Es decir para

que un compilador se adhiera al estaacutendar ANSI debe considerar como

significativos al menos los 31 primeros caracteres

Los identificadores distinguen mayuacutesculas y minuacutesculas asiacute que Sum sum y suM

son distintos para el compilador

23 TIPOS DE DATOS FUNDAMENTALES

Los prototipos de variables utilizados en los programas de ejemplo hasta el

momento han sido en su mayoriacutea de tipo entero (int) pero es iloacutegico pensar que

eacuteste sea el uacutenico que se llegue a utilizar Ademaacutes del tipo entero existen otros

Los tipos de datos atoacutemicos son los tipos de datos maacutes sencillos a partir de los cuales se

pueden construir otros maacutes complejos La siguiente tabla ilustra estos tipos con sus intervalos

de valores posibles y el nuacutemero de bytes que ocupan

Nombre Descripcion tam Rango

char Caraacutecter o pequentildeos enteros 1bytesigned -128 to 127unsigned 0 to 255

short int (short) Entero corto

2bytes

signed -32768 to 32767unsigned 0 to 65535

int Entero4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

long int (long) Entero largo

4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

bool Valor Booleano Puede tomar 2 valores true(1) o false(0)

1byte 1 orsquo 0

float Numero de punto flotante4bytes

34e +- 38 (7 digits)

double Numero de punto flotante doble precisioacuten

8bytes

17e +- 308 (15 digits)

long double Numero largo de punto flotante doble precision

8bytes

17e +- 308 (15 digits)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 9

LENGUAJE DE PROGRAMACION I DEV C++

24 VARIABLES Anteriormente vimos la forma general de un programa un programa

sumamente sencillo Ahora veamos un programa muy parecido al anterior

Programa middot 2include ltiostreamgtusing namespace stdint main( )int variablevariable=5coutltltvariablesystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

10Presione una tecla para continuar

Notemos en esta ocasioacuten soacutelo la parte int variable A esta seccioacuten se le

denomina declaracioacuten Se trata de la declaracioacuten de una variable de nombre

ldquovariablerdquo

Una variable es una posicioacuten de memoria con nombre que se usa para mantener

un valor que puede ser modificado por el programa3 Las variables son

declaradas usadas y liberadas Una declaracioacuten se encuentra ligada a un tipo a

un nombre y a un valor

Baacutesicamente la declaracioacuten de una variable presenta el siguiente aspecto

tipo nombre [=valor]

Los corchetes significan que esa parte es opcional Por ejemplo la declaracioacuten

int mi_variable=5

declara una variable tipo entero de nombre ldquomi_variablerdquo y le asigna el valor ldquo5rdquo

C++ es sensible a mayuacutesculas y minuacutesculas asiacute que si el nombre de nuestra

variable empieza con una letra en mayuacutesculas debemos de asegurarnos que

durante el resto del coacutedigo nos refiramos a ella exactamente como la escribimos

Los nombres de las variables no pueden usar signos de puntuacioacuten soacutelo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 10

LENGUAJE DE PROGRAMACION I DEV C++

caracteres ldquoA-Zrdquo ldquoa-zrdquo ldquo_ldquo ldquo0- 9rdquo aunque ninguacuten nombre debe comenzar con

un nuacutemero (0-9) Ademaacutes no se deben de repetir nombres de variables en el

mismo contexto

Ademaacutes de las restricciones anteriores existe otra y esta tiene que ver con las

palabras reservadas del lenguaje que no son muchas a comparacioacuten de otros

lenguajes como Basic Las palabras que se presentan en la siguiente lista no

pueden ocuparse como nombres de variables funciones u otras instrucciones

definidas por el programador

asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

Las variables se pueden declarar en tres sitios baacutesicos dentro de las funciones

(ya sea la funcioacuten main u otras creadas por el programador) estas variables son

llamadas locales en la definicioacuten de paraacutemetros de una funcioacuten como se veraacute

maacutes adelante y fuera de todas las funciones variables globales

Programa 3include ltiostreamgtusing namespace stdint variable_global=10int main()int variable_local=20coutltltnprograma que muestra los usos de variables globales y localesnltltendlcoutltltla variable global tiene asignado un ldquo ltltvariable_globalltltendlcoutltltnla variable local tiene asignado un ltltvariable_localltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

Programa que muestra los usos de las variables globales y locales

La variable global tiene asignado un 10

La variable local tiene asignado un 20

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 11

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 5: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Como resultado obtendremos

NOTA Tambien podremos utilizar la barra de herramientas compile y Run para compilar y ejecutar nuestros programas

Compilar ejecutar compilar y ejecutar

Analicemos cada parte de nuestro primer programa

include ltiostreamgt

La parte del include se refiere a la biblioteca de funciones que vamos a utilizar

Es decir para llamar a una biblioteca en particular debemos hacer lo siguiente

include ltlibreriacutea_solicitadagt

El estaacutendar de C++ incluye varias bibliotecas de funciones y dependiendo del

compilador que se esteacute usando puede aumentar el nuacutemero

using namespace std

Esta sentencia cambia una configuracioacuten en el compilador para que las funciones

de la libreriacutea iostream nos funcionen bien

int main( )

Todo programa en C++ comienza con una funcioacuten main() y soacutelo puede haber

una En C++ el main() siempre regresa un entero es por eso se antepone ldquointrdquo a

la palabra ldquomainrdquo Los pareacutentesis que le siguen contienen lo que se le va a

mandar a la funcioacuten en este caso puede ser void o no contener nada La llave

que se abre significa que se iniciaraacute un bloque de instrucciones

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 5

LENGUAJE DE PROGRAMACION I DEV C++

coutltltrdquoBienvenido al mundo de C++rdquoltltendl

Esta es una instruccioacuten La instruccioacuten cout estaacute definida dentro de la biblioteca

iostream que previamente declaramos que iacutebamos a utilizar Una funcioacuten en

este caso main() siempre comienza su ejecucioacuten con una instruccioacuten (la que se

encuentra en la parte superior) y continuacutea asiacute hasta que se llegue a la uacuteltima

instruccioacuten (de la parte inferior) Para terminar una instruccioacuten siempre se coloca

ldquordquo

Pero ademaacutes de instrucciones se pueden invocar funciones definidas por el

usuario (por supuesto diferentes de main) como se veraacute mas adelante

system(ldquopauserdquo)

Esta instruccioacuten permite una pausa para que se pueda visualizar el resultado

return 0

Esta es otra instruccioacuten en este caso la instruccioacuten return determina que es lo

que se devolveraacute de la funcioacuten main() Habiacuteamos declarado que main devolveriacutea

un entero asiacute que la instruccioacuten return devuelve 0 Lo cual a su vez significa que

no han ocurrido errores durante su ejecucioacuten

La llave de cierre de la funcioacuten main() indica el termino del bloque de

instrucciones

En algunos programas de ejemplo notaraacute el uso de dobles diagonales (ldquordquo)

Estas

diagonales se usan para escribir comentarios de una liacutenea dentro del coacutedigo del

programa Ademaacutes podraacute encontrar el uso de ldquordquo ldquordquo estos caracteres encierran

un

comentario de varias liacuteneas y cualquier cosa que se escriba dentro de ella no

influenciaraacute en el desempentildeo del programa

Tambieacuten veraacute que muchas veces utilizaremos una diagonal invertida (ldquordquo) Este

signo

se utiliza cuando una instruccioacuten ocuparaacute varias liacuteneas y por razones de espacio

en

la hoja es mejor dividirla en partes

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 6

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 7

LENGUAJE DE PROGRAMACION I DEV C++

CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++

21 Identificador definicioacuten

un identificador es un conjunto de caracteres alfanumeacutericos de cualquier longitud

que sirve para identificar las entidades del programa (clases funciones

variables tipos compuestos Etc) Los identificadores pueden ser combinaciones

de letras y nuacutemeros Cada lenguaje tiene sus propias reglas que definen como

pueden estar construidos En el caso de C++ son las que se indican a

continuacioacuten Cuando un identificador se asocia a una entidad concreta entonces

es el nombre de dicha entidad y en adelante la representa en el programa Por

supuesto puede ocurrir que varios identificadores se refieran a una misma

entidad

Nota el concepto de entidad es muy amplio corresponde a un valor clase

elemento de una matriz variable funcioacuten miembro de clase instancia de clase

enumerador plantilla o espacio de nombres del programa

22 Identificadores C++

Los identificadores C++ pueden contener las letras a a z y A a Z el guioacuten bajo

_ (Underscore) y los diacutegitos 0 a 9

Caracteres permitidos

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y

Z

_

Diacutegitos permitidos

0 1 2 3 4 5 6 7 8 9

Solo hay dos restricciones en cuanto a la composicioacuten

El primer caraacutecter debe ser una letra o el guioacuten bajo El Estaacutendar establece que

los identificadores comenzando con guioacuten bajo y mayuacutescula no deben ser

utilizados Este tipo de nombres se reserva para los compiladores y las Libreriacuteas

Estaacutendar Tampoco se permite la utilizacioacuten de nombres que contengan dos

guiones bajos seguidos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 8

LENGUAJE DE PROGRAMACION I DEV C++

El estaacutendar ANSI establece que como miacutenimo seraacuten significativos los 31 primeros

caracteres aunque pueden ser maacutes seguacuten la implementacioacuten [1] Es decir para

que un compilador se adhiera al estaacutendar ANSI debe considerar como

significativos al menos los 31 primeros caracteres

Los identificadores distinguen mayuacutesculas y minuacutesculas asiacute que Sum sum y suM

son distintos para el compilador

23 TIPOS DE DATOS FUNDAMENTALES

Los prototipos de variables utilizados en los programas de ejemplo hasta el

momento han sido en su mayoriacutea de tipo entero (int) pero es iloacutegico pensar que

eacuteste sea el uacutenico que se llegue a utilizar Ademaacutes del tipo entero existen otros

Los tipos de datos atoacutemicos son los tipos de datos maacutes sencillos a partir de los cuales se

pueden construir otros maacutes complejos La siguiente tabla ilustra estos tipos con sus intervalos

de valores posibles y el nuacutemero de bytes que ocupan

Nombre Descripcion tam Rango

char Caraacutecter o pequentildeos enteros 1bytesigned -128 to 127unsigned 0 to 255

short int (short) Entero corto

2bytes

signed -32768 to 32767unsigned 0 to 65535

int Entero4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

long int (long) Entero largo

4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

bool Valor Booleano Puede tomar 2 valores true(1) o false(0)

1byte 1 orsquo 0

float Numero de punto flotante4bytes

34e +- 38 (7 digits)

double Numero de punto flotante doble precisioacuten

8bytes

17e +- 308 (15 digits)

long double Numero largo de punto flotante doble precision

8bytes

17e +- 308 (15 digits)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 9

LENGUAJE DE PROGRAMACION I DEV C++

24 VARIABLES Anteriormente vimos la forma general de un programa un programa

sumamente sencillo Ahora veamos un programa muy parecido al anterior

Programa middot 2include ltiostreamgtusing namespace stdint main( )int variablevariable=5coutltltvariablesystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

10Presione una tecla para continuar

Notemos en esta ocasioacuten soacutelo la parte int variable A esta seccioacuten se le

denomina declaracioacuten Se trata de la declaracioacuten de una variable de nombre

ldquovariablerdquo

Una variable es una posicioacuten de memoria con nombre que se usa para mantener

un valor que puede ser modificado por el programa3 Las variables son

declaradas usadas y liberadas Una declaracioacuten se encuentra ligada a un tipo a

un nombre y a un valor

Baacutesicamente la declaracioacuten de una variable presenta el siguiente aspecto

tipo nombre [=valor]

Los corchetes significan que esa parte es opcional Por ejemplo la declaracioacuten

int mi_variable=5

declara una variable tipo entero de nombre ldquomi_variablerdquo y le asigna el valor ldquo5rdquo

C++ es sensible a mayuacutesculas y minuacutesculas asiacute que si el nombre de nuestra

variable empieza con una letra en mayuacutesculas debemos de asegurarnos que

durante el resto del coacutedigo nos refiramos a ella exactamente como la escribimos

Los nombres de las variables no pueden usar signos de puntuacioacuten soacutelo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 10

LENGUAJE DE PROGRAMACION I DEV C++

caracteres ldquoA-Zrdquo ldquoa-zrdquo ldquo_ldquo ldquo0- 9rdquo aunque ninguacuten nombre debe comenzar con

un nuacutemero (0-9) Ademaacutes no se deben de repetir nombres de variables en el

mismo contexto

Ademaacutes de las restricciones anteriores existe otra y esta tiene que ver con las

palabras reservadas del lenguaje que no son muchas a comparacioacuten de otros

lenguajes como Basic Las palabras que se presentan en la siguiente lista no

pueden ocuparse como nombres de variables funciones u otras instrucciones

definidas por el programador

asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

Las variables se pueden declarar en tres sitios baacutesicos dentro de las funciones

(ya sea la funcioacuten main u otras creadas por el programador) estas variables son

llamadas locales en la definicioacuten de paraacutemetros de una funcioacuten como se veraacute

maacutes adelante y fuera de todas las funciones variables globales

Programa 3include ltiostreamgtusing namespace stdint variable_global=10int main()int variable_local=20coutltltnprograma que muestra los usos de variables globales y localesnltltendlcoutltltla variable global tiene asignado un ldquo ltltvariable_globalltltendlcoutltltnla variable local tiene asignado un ltltvariable_localltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

Programa que muestra los usos de las variables globales y locales

La variable global tiene asignado un 10

La variable local tiene asignado un 20

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 11

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 6: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

coutltltrdquoBienvenido al mundo de C++rdquoltltendl

Esta es una instruccioacuten La instruccioacuten cout estaacute definida dentro de la biblioteca

iostream que previamente declaramos que iacutebamos a utilizar Una funcioacuten en

este caso main() siempre comienza su ejecucioacuten con una instruccioacuten (la que se

encuentra en la parte superior) y continuacutea asiacute hasta que se llegue a la uacuteltima

instruccioacuten (de la parte inferior) Para terminar una instruccioacuten siempre se coloca

ldquordquo

Pero ademaacutes de instrucciones se pueden invocar funciones definidas por el

usuario (por supuesto diferentes de main) como se veraacute mas adelante

system(ldquopauserdquo)

Esta instruccioacuten permite una pausa para que se pueda visualizar el resultado

return 0

Esta es otra instruccioacuten en este caso la instruccioacuten return determina que es lo

que se devolveraacute de la funcioacuten main() Habiacuteamos declarado que main devolveriacutea

un entero asiacute que la instruccioacuten return devuelve 0 Lo cual a su vez significa que

no han ocurrido errores durante su ejecucioacuten

La llave de cierre de la funcioacuten main() indica el termino del bloque de

instrucciones

En algunos programas de ejemplo notaraacute el uso de dobles diagonales (ldquordquo)

Estas

diagonales se usan para escribir comentarios de una liacutenea dentro del coacutedigo del

programa Ademaacutes podraacute encontrar el uso de ldquordquo ldquordquo estos caracteres encierran

un

comentario de varias liacuteneas y cualquier cosa que se escriba dentro de ella no

influenciaraacute en el desempentildeo del programa

Tambieacuten veraacute que muchas veces utilizaremos una diagonal invertida (ldquordquo) Este

signo

se utiliza cuando una instruccioacuten ocuparaacute varias liacuteneas y por razones de espacio

en

la hoja es mejor dividirla en partes

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 6

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 7

LENGUAJE DE PROGRAMACION I DEV C++

CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++

21 Identificador definicioacuten

un identificador es un conjunto de caracteres alfanumeacutericos de cualquier longitud

que sirve para identificar las entidades del programa (clases funciones

variables tipos compuestos Etc) Los identificadores pueden ser combinaciones

de letras y nuacutemeros Cada lenguaje tiene sus propias reglas que definen como

pueden estar construidos En el caso de C++ son las que se indican a

continuacioacuten Cuando un identificador se asocia a una entidad concreta entonces

es el nombre de dicha entidad y en adelante la representa en el programa Por

supuesto puede ocurrir que varios identificadores se refieran a una misma

entidad

Nota el concepto de entidad es muy amplio corresponde a un valor clase

elemento de una matriz variable funcioacuten miembro de clase instancia de clase

enumerador plantilla o espacio de nombres del programa

22 Identificadores C++

Los identificadores C++ pueden contener las letras a a z y A a Z el guioacuten bajo

_ (Underscore) y los diacutegitos 0 a 9

Caracteres permitidos

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y

Z

_

Diacutegitos permitidos

0 1 2 3 4 5 6 7 8 9

Solo hay dos restricciones en cuanto a la composicioacuten

El primer caraacutecter debe ser una letra o el guioacuten bajo El Estaacutendar establece que

los identificadores comenzando con guioacuten bajo y mayuacutescula no deben ser

utilizados Este tipo de nombres se reserva para los compiladores y las Libreriacuteas

Estaacutendar Tampoco se permite la utilizacioacuten de nombres que contengan dos

guiones bajos seguidos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 8

LENGUAJE DE PROGRAMACION I DEV C++

El estaacutendar ANSI establece que como miacutenimo seraacuten significativos los 31 primeros

caracteres aunque pueden ser maacutes seguacuten la implementacioacuten [1] Es decir para

que un compilador se adhiera al estaacutendar ANSI debe considerar como

significativos al menos los 31 primeros caracteres

Los identificadores distinguen mayuacutesculas y minuacutesculas asiacute que Sum sum y suM

son distintos para el compilador

23 TIPOS DE DATOS FUNDAMENTALES

Los prototipos de variables utilizados en los programas de ejemplo hasta el

momento han sido en su mayoriacutea de tipo entero (int) pero es iloacutegico pensar que

eacuteste sea el uacutenico que se llegue a utilizar Ademaacutes del tipo entero existen otros

Los tipos de datos atoacutemicos son los tipos de datos maacutes sencillos a partir de los cuales se

pueden construir otros maacutes complejos La siguiente tabla ilustra estos tipos con sus intervalos

de valores posibles y el nuacutemero de bytes que ocupan

Nombre Descripcion tam Rango

char Caraacutecter o pequentildeos enteros 1bytesigned -128 to 127unsigned 0 to 255

short int (short) Entero corto

2bytes

signed -32768 to 32767unsigned 0 to 65535

int Entero4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

long int (long) Entero largo

4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

bool Valor Booleano Puede tomar 2 valores true(1) o false(0)

1byte 1 orsquo 0

float Numero de punto flotante4bytes

34e +- 38 (7 digits)

double Numero de punto flotante doble precisioacuten

8bytes

17e +- 308 (15 digits)

long double Numero largo de punto flotante doble precision

8bytes

17e +- 308 (15 digits)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 9

LENGUAJE DE PROGRAMACION I DEV C++

24 VARIABLES Anteriormente vimos la forma general de un programa un programa

sumamente sencillo Ahora veamos un programa muy parecido al anterior

Programa middot 2include ltiostreamgtusing namespace stdint main( )int variablevariable=5coutltltvariablesystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

10Presione una tecla para continuar

Notemos en esta ocasioacuten soacutelo la parte int variable A esta seccioacuten se le

denomina declaracioacuten Se trata de la declaracioacuten de una variable de nombre

ldquovariablerdquo

Una variable es una posicioacuten de memoria con nombre que se usa para mantener

un valor que puede ser modificado por el programa3 Las variables son

declaradas usadas y liberadas Una declaracioacuten se encuentra ligada a un tipo a

un nombre y a un valor

Baacutesicamente la declaracioacuten de una variable presenta el siguiente aspecto

tipo nombre [=valor]

Los corchetes significan que esa parte es opcional Por ejemplo la declaracioacuten

int mi_variable=5

declara una variable tipo entero de nombre ldquomi_variablerdquo y le asigna el valor ldquo5rdquo

C++ es sensible a mayuacutesculas y minuacutesculas asiacute que si el nombre de nuestra

variable empieza con una letra en mayuacutesculas debemos de asegurarnos que

durante el resto del coacutedigo nos refiramos a ella exactamente como la escribimos

Los nombres de las variables no pueden usar signos de puntuacioacuten soacutelo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 10

LENGUAJE DE PROGRAMACION I DEV C++

caracteres ldquoA-Zrdquo ldquoa-zrdquo ldquo_ldquo ldquo0- 9rdquo aunque ninguacuten nombre debe comenzar con

un nuacutemero (0-9) Ademaacutes no se deben de repetir nombres de variables en el

mismo contexto

Ademaacutes de las restricciones anteriores existe otra y esta tiene que ver con las

palabras reservadas del lenguaje que no son muchas a comparacioacuten de otros

lenguajes como Basic Las palabras que se presentan en la siguiente lista no

pueden ocuparse como nombres de variables funciones u otras instrucciones

definidas por el programador

asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

Las variables se pueden declarar en tres sitios baacutesicos dentro de las funciones

(ya sea la funcioacuten main u otras creadas por el programador) estas variables son

llamadas locales en la definicioacuten de paraacutemetros de una funcioacuten como se veraacute

maacutes adelante y fuera de todas las funciones variables globales

Programa 3include ltiostreamgtusing namespace stdint variable_global=10int main()int variable_local=20coutltltnprograma que muestra los usos de variables globales y localesnltltendlcoutltltla variable global tiene asignado un ldquo ltltvariable_globalltltendlcoutltltnla variable local tiene asignado un ltltvariable_localltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

Programa que muestra los usos de las variables globales y locales

La variable global tiene asignado un 10

La variable local tiene asignado un 20

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 11

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 7: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 7

LENGUAJE DE PROGRAMACION I DEV C++

CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++

21 Identificador definicioacuten

un identificador es un conjunto de caracteres alfanumeacutericos de cualquier longitud

que sirve para identificar las entidades del programa (clases funciones

variables tipos compuestos Etc) Los identificadores pueden ser combinaciones

de letras y nuacutemeros Cada lenguaje tiene sus propias reglas que definen como

pueden estar construidos En el caso de C++ son las que se indican a

continuacioacuten Cuando un identificador se asocia a una entidad concreta entonces

es el nombre de dicha entidad y en adelante la representa en el programa Por

supuesto puede ocurrir que varios identificadores se refieran a una misma

entidad

Nota el concepto de entidad es muy amplio corresponde a un valor clase

elemento de una matriz variable funcioacuten miembro de clase instancia de clase

enumerador plantilla o espacio de nombres del programa

22 Identificadores C++

Los identificadores C++ pueden contener las letras a a z y A a Z el guioacuten bajo

_ (Underscore) y los diacutegitos 0 a 9

Caracteres permitidos

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y

Z

_

Diacutegitos permitidos

0 1 2 3 4 5 6 7 8 9

Solo hay dos restricciones en cuanto a la composicioacuten

El primer caraacutecter debe ser una letra o el guioacuten bajo El Estaacutendar establece que

los identificadores comenzando con guioacuten bajo y mayuacutescula no deben ser

utilizados Este tipo de nombres se reserva para los compiladores y las Libreriacuteas

Estaacutendar Tampoco se permite la utilizacioacuten de nombres que contengan dos

guiones bajos seguidos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 8

LENGUAJE DE PROGRAMACION I DEV C++

El estaacutendar ANSI establece que como miacutenimo seraacuten significativos los 31 primeros

caracteres aunque pueden ser maacutes seguacuten la implementacioacuten [1] Es decir para

que un compilador se adhiera al estaacutendar ANSI debe considerar como

significativos al menos los 31 primeros caracteres

Los identificadores distinguen mayuacutesculas y minuacutesculas asiacute que Sum sum y suM

son distintos para el compilador

23 TIPOS DE DATOS FUNDAMENTALES

Los prototipos de variables utilizados en los programas de ejemplo hasta el

momento han sido en su mayoriacutea de tipo entero (int) pero es iloacutegico pensar que

eacuteste sea el uacutenico que se llegue a utilizar Ademaacutes del tipo entero existen otros

Los tipos de datos atoacutemicos son los tipos de datos maacutes sencillos a partir de los cuales se

pueden construir otros maacutes complejos La siguiente tabla ilustra estos tipos con sus intervalos

de valores posibles y el nuacutemero de bytes que ocupan

Nombre Descripcion tam Rango

char Caraacutecter o pequentildeos enteros 1bytesigned -128 to 127unsigned 0 to 255

short int (short) Entero corto

2bytes

signed -32768 to 32767unsigned 0 to 65535

int Entero4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

long int (long) Entero largo

4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

bool Valor Booleano Puede tomar 2 valores true(1) o false(0)

1byte 1 orsquo 0

float Numero de punto flotante4bytes

34e +- 38 (7 digits)

double Numero de punto flotante doble precisioacuten

8bytes

17e +- 308 (15 digits)

long double Numero largo de punto flotante doble precision

8bytes

17e +- 308 (15 digits)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 9

LENGUAJE DE PROGRAMACION I DEV C++

24 VARIABLES Anteriormente vimos la forma general de un programa un programa

sumamente sencillo Ahora veamos un programa muy parecido al anterior

Programa middot 2include ltiostreamgtusing namespace stdint main( )int variablevariable=5coutltltvariablesystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

10Presione una tecla para continuar

Notemos en esta ocasioacuten soacutelo la parte int variable A esta seccioacuten se le

denomina declaracioacuten Se trata de la declaracioacuten de una variable de nombre

ldquovariablerdquo

Una variable es una posicioacuten de memoria con nombre que se usa para mantener

un valor que puede ser modificado por el programa3 Las variables son

declaradas usadas y liberadas Una declaracioacuten se encuentra ligada a un tipo a

un nombre y a un valor

Baacutesicamente la declaracioacuten de una variable presenta el siguiente aspecto

tipo nombre [=valor]

Los corchetes significan que esa parte es opcional Por ejemplo la declaracioacuten

int mi_variable=5

declara una variable tipo entero de nombre ldquomi_variablerdquo y le asigna el valor ldquo5rdquo

C++ es sensible a mayuacutesculas y minuacutesculas asiacute que si el nombre de nuestra

variable empieza con una letra en mayuacutesculas debemos de asegurarnos que

durante el resto del coacutedigo nos refiramos a ella exactamente como la escribimos

Los nombres de las variables no pueden usar signos de puntuacioacuten soacutelo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 10

LENGUAJE DE PROGRAMACION I DEV C++

caracteres ldquoA-Zrdquo ldquoa-zrdquo ldquo_ldquo ldquo0- 9rdquo aunque ninguacuten nombre debe comenzar con

un nuacutemero (0-9) Ademaacutes no se deben de repetir nombres de variables en el

mismo contexto

Ademaacutes de las restricciones anteriores existe otra y esta tiene que ver con las

palabras reservadas del lenguaje que no son muchas a comparacioacuten de otros

lenguajes como Basic Las palabras que se presentan en la siguiente lista no

pueden ocuparse como nombres de variables funciones u otras instrucciones

definidas por el programador

asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

Las variables se pueden declarar en tres sitios baacutesicos dentro de las funciones

(ya sea la funcioacuten main u otras creadas por el programador) estas variables son

llamadas locales en la definicioacuten de paraacutemetros de una funcioacuten como se veraacute

maacutes adelante y fuera de todas las funciones variables globales

Programa 3include ltiostreamgtusing namespace stdint variable_global=10int main()int variable_local=20coutltltnprograma que muestra los usos de variables globales y localesnltltendlcoutltltla variable global tiene asignado un ldquo ltltvariable_globalltltendlcoutltltnla variable local tiene asignado un ltltvariable_localltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

Programa que muestra los usos de las variables globales y locales

La variable global tiene asignado un 10

La variable local tiene asignado un 20

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 11

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 8: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++

21 Identificador definicioacuten

un identificador es un conjunto de caracteres alfanumeacutericos de cualquier longitud

que sirve para identificar las entidades del programa (clases funciones

variables tipos compuestos Etc) Los identificadores pueden ser combinaciones

de letras y nuacutemeros Cada lenguaje tiene sus propias reglas que definen como

pueden estar construidos En el caso de C++ son las que se indican a

continuacioacuten Cuando un identificador se asocia a una entidad concreta entonces

es el nombre de dicha entidad y en adelante la representa en el programa Por

supuesto puede ocurrir que varios identificadores se refieran a una misma

entidad

Nota el concepto de entidad es muy amplio corresponde a un valor clase

elemento de una matriz variable funcioacuten miembro de clase instancia de clase

enumerador plantilla o espacio de nombres del programa

22 Identificadores C++

Los identificadores C++ pueden contener las letras a a z y A a Z el guioacuten bajo

_ (Underscore) y los diacutegitos 0 a 9

Caracteres permitidos

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y

Z

_

Diacutegitos permitidos

0 1 2 3 4 5 6 7 8 9

Solo hay dos restricciones en cuanto a la composicioacuten

El primer caraacutecter debe ser una letra o el guioacuten bajo El Estaacutendar establece que

los identificadores comenzando con guioacuten bajo y mayuacutescula no deben ser

utilizados Este tipo de nombres se reserva para los compiladores y las Libreriacuteas

Estaacutendar Tampoco se permite la utilizacioacuten de nombres que contengan dos

guiones bajos seguidos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 8

LENGUAJE DE PROGRAMACION I DEV C++

El estaacutendar ANSI establece que como miacutenimo seraacuten significativos los 31 primeros

caracteres aunque pueden ser maacutes seguacuten la implementacioacuten [1] Es decir para

que un compilador se adhiera al estaacutendar ANSI debe considerar como

significativos al menos los 31 primeros caracteres

Los identificadores distinguen mayuacutesculas y minuacutesculas asiacute que Sum sum y suM

son distintos para el compilador

23 TIPOS DE DATOS FUNDAMENTALES

Los prototipos de variables utilizados en los programas de ejemplo hasta el

momento han sido en su mayoriacutea de tipo entero (int) pero es iloacutegico pensar que

eacuteste sea el uacutenico que se llegue a utilizar Ademaacutes del tipo entero existen otros

Los tipos de datos atoacutemicos son los tipos de datos maacutes sencillos a partir de los cuales se

pueden construir otros maacutes complejos La siguiente tabla ilustra estos tipos con sus intervalos

de valores posibles y el nuacutemero de bytes que ocupan

Nombre Descripcion tam Rango

char Caraacutecter o pequentildeos enteros 1bytesigned -128 to 127unsigned 0 to 255

short int (short) Entero corto

2bytes

signed -32768 to 32767unsigned 0 to 65535

int Entero4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

long int (long) Entero largo

4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

bool Valor Booleano Puede tomar 2 valores true(1) o false(0)

1byte 1 orsquo 0

float Numero de punto flotante4bytes

34e +- 38 (7 digits)

double Numero de punto flotante doble precisioacuten

8bytes

17e +- 308 (15 digits)

long double Numero largo de punto flotante doble precision

8bytes

17e +- 308 (15 digits)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 9

LENGUAJE DE PROGRAMACION I DEV C++

24 VARIABLES Anteriormente vimos la forma general de un programa un programa

sumamente sencillo Ahora veamos un programa muy parecido al anterior

Programa middot 2include ltiostreamgtusing namespace stdint main( )int variablevariable=5coutltltvariablesystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

10Presione una tecla para continuar

Notemos en esta ocasioacuten soacutelo la parte int variable A esta seccioacuten se le

denomina declaracioacuten Se trata de la declaracioacuten de una variable de nombre

ldquovariablerdquo

Una variable es una posicioacuten de memoria con nombre que se usa para mantener

un valor que puede ser modificado por el programa3 Las variables son

declaradas usadas y liberadas Una declaracioacuten se encuentra ligada a un tipo a

un nombre y a un valor

Baacutesicamente la declaracioacuten de una variable presenta el siguiente aspecto

tipo nombre [=valor]

Los corchetes significan que esa parte es opcional Por ejemplo la declaracioacuten

int mi_variable=5

declara una variable tipo entero de nombre ldquomi_variablerdquo y le asigna el valor ldquo5rdquo

C++ es sensible a mayuacutesculas y minuacutesculas asiacute que si el nombre de nuestra

variable empieza con una letra en mayuacutesculas debemos de asegurarnos que

durante el resto del coacutedigo nos refiramos a ella exactamente como la escribimos

Los nombres de las variables no pueden usar signos de puntuacioacuten soacutelo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 10

LENGUAJE DE PROGRAMACION I DEV C++

caracteres ldquoA-Zrdquo ldquoa-zrdquo ldquo_ldquo ldquo0- 9rdquo aunque ninguacuten nombre debe comenzar con

un nuacutemero (0-9) Ademaacutes no se deben de repetir nombres de variables en el

mismo contexto

Ademaacutes de las restricciones anteriores existe otra y esta tiene que ver con las

palabras reservadas del lenguaje que no son muchas a comparacioacuten de otros

lenguajes como Basic Las palabras que se presentan en la siguiente lista no

pueden ocuparse como nombres de variables funciones u otras instrucciones

definidas por el programador

asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

Las variables se pueden declarar en tres sitios baacutesicos dentro de las funciones

(ya sea la funcioacuten main u otras creadas por el programador) estas variables son

llamadas locales en la definicioacuten de paraacutemetros de una funcioacuten como se veraacute

maacutes adelante y fuera de todas las funciones variables globales

Programa 3include ltiostreamgtusing namespace stdint variable_global=10int main()int variable_local=20coutltltnprograma que muestra los usos de variables globales y localesnltltendlcoutltltla variable global tiene asignado un ldquo ltltvariable_globalltltendlcoutltltnla variable local tiene asignado un ltltvariable_localltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

Programa que muestra los usos de las variables globales y locales

La variable global tiene asignado un 10

La variable local tiene asignado un 20

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 11

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 9: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

El estaacutendar ANSI establece que como miacutenimo seraacuten significativos los 31 primeros

caracteres aunque pueden ser maacutes seguacuten la implementacioacuten [1] Es decir para

que un compilador se adhiera al estaacutendar ANSI debe considerar como

significativos al menos los 31 primeros caracteres

Los identificadores distinguen mayuacutesculas y minuacutesculas asiacute que Sum sum y suM

son distintos para el compilador

23 TIPOS DE DATOS FUNDAMENTALES

Los prototipos de variables utilizados en los programas de ejemplo hasta el

momento han sido en su mayoriacutea de tipo entero (int) pero es iloacutegico pensar que

eacuteste sea el uacutenico que se llegue a utilizar Ademaacutes del tipo entero existen otros

Los tipos de datos atoacutemicos son los tipos de datos maacutes sencillos a partir de los cuales se

pueden construir otros maacutes complejos La siguiente tabla ilustra estos tipos con sus intervalos

de valores posibles y el nuacutemero de bytes que ocupan

Nombre Descripcion tam Rango

char Caraacutecter o pequentildeos enteros 1bytesigned -128 to 127unsigned 0 to 255

short int (short) Entero corto

2bytes

signed -32768 to 32767unsigned 0 to 65535

int Entero4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

long int (long) Entero largo

4bytes

signed -2147483648 to 2147483647unsigned 0 to 4294967295

bool Valor Booleano Puede tomar 2 valores true(1) o false(0)

1byte 1 orsquo 0

float Numero de punto flotante4bytes

34e +- 38 (7 digits)

double Numero de punto flotante doble precisioacuten

8bytes

17e +- 308 (15 digits)

long double Numero largo de punto flotante doble precision

8bytes

17e +- 308 (15 digits)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 9

LENGUAJE DE PROGRAMACION I DEV C++

24 VARIABLES Anteriormente vimos la forma general de un programa un programa

sumamente sencillo Ahora veamos un programa muy parecido al anterior

Programa middot 2include ltiostreamgtusing namespace stdint main( )int variablevariable=5coutltltvariablesystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

10Presione una tecla para continuar

Notemos en esta ocasioacuten soacutelo la parte int variable A esta seccioacuten se le

denomina declaracioacuten Se trata de la declaracioacuten de una variable de nombre

ldquovariablerdquo

Una variable es una posicioacuten de memoria con nombre que se usa para mantener

un valor que puede ser modificado por el programa3 Las variables son

declaradas usadas y liberadas Una declaracioacuten se encuentra ligada a un tipo a

un nombre y a un valor

Baacutesicamente la declaracioacuten de una variable presenta el siguiente aspecto

tipo nombre [=valor]

Los corchetes significan que esa parte es opcional Por ejemplo la declaracioacuten

int mi_variable=5

declara una variable tipo entero de nombre ldquomi_variablerdquo y le asigna el valor ldquo5rdquo

C++ es sensible a mayuacutesculas y minuacutesculas asiacute que si el nombre de nuestra

variable empieza con una letra en mayuacutesculas debemos de asegurarnos que

durante el resto del coacutedigo nos refiramos a ella exactamente como la escribimos

Los nombres de las variables no pueden usar signos de puntuacioacuten soacutelo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 10

LENGUAJE DE PROGRAMACION I DEV C++

caracteres ldquoA-Zrdquo ldquoa-zrdquo ldquo_ldquo ldquo0- 9rdquo aunque ninguacuten nombre debe comenzar con

un nuacutemero (0-9) Ademaacutes no se deben de repetir nombres de variables en el

mismo contexto

Ademaacutes de las restricciones anteriores existe otra y esta tiene que ver con las

palabras reservadas del lenguaje que no son muchas a comparacioacuten de otros

lenguajes como Basic Las palabras que se presentan en la siguiente lista no

pueden ocuparse como nombres de variables funciones u otras instrucciones

definidas por el programador

asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

Las variables se pueden declarar en tres sitios baacutesicos dentro de las funciones

(ya sea la funcioacuten main u otras creadas por el programador) estas variables son

llamadas locales en la definicioacuten de paraacutemetros de una funcioacuten como se veraacute

maacutes adelante y fuera de todas las funciones variables globales

Programa 3include ltiostreamgtusing namespace stdint variable_global=10int main()int variable_local=20coutltltnprograma que muestra los usos de variables globales y localesnltltendlcoutltltla variable global tiene asignado un ldquo ltltvariable_globalltltendlcoutltltnla variable local tiene asignado un ltltvariable_localltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

Programa que muestra los usos de las variables globales y locales

La variable global tiene asignado un 10

La variable local tiene asignado un 20

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 11

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 10: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

24 VARIABLES Anteriormente vimos la forma general de un programa un programa

sumamente sencillo Ahora veamos un programa muy parecido al anterior

Programa middot 2include ltiostreamgtusing namespace stdint main( )int variablevariable=5coutltltvariablesystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

10Presione una tecla para continuar

Notemos en esta ocasioacuten soacutelo la parte int variable A esta seccioacuten se le

denomina declaracioacuten Se trata de la declaracioacuten de una variable de nombre

ldquovariablerdquo

Una variable es una posicioacuten de memoria con nombre que se usa para mantener

un valor que puede ser modificado por el programa3 Las variables son

declaradas usadas y liberadas Una declaracioacuten se encuentra ligada a un tipo a

un nombre y a un valor

Baacutesicamente la declaracioacuten de una variable presenta el siguiente aspecto

tipo nombre [=valor]

Los corchetes significan que esa parte es opcional Por ejemplo la declaracioacuten

int mi_variable=5

declara una variable tipo entero de nombre ldquomi_variablerdquo y le asigna el valor ldquo5rdquo

C++ es sensible a mayuacutesculas y minuacutesculas asiacute que si el nombre de nuestra

variable empieza con una letra en mayuacutesculas debemos de asegurarnos que

durante el resto del coacutedigo nos refiramos a ella exactamente como la escribimos

Los nombres de las variables no pueden usar signos de puntuacioacuten soacutelo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 10

LENGUAJE DE PROGRAMACION I DEV C++

caracteres ldquoA-Zrdquo ldquoa-zrdquo ldquo_ldquo ldquo0- 9rdquo aunque ninguacuten nombre debe comenzar con

un nuacutemero (0-9) Ademaacutes no se deben de repetir nombres de variables en el

mismo contexto

Ademaacutes de las restricciones anteriores existe otra y esta tiene que ver con las

palabras reservadas del lenguaje que no son muchas a comparacioacuten de otros

lenguajes como Basic Las palabras que se presentan en la siguiente lista no

pueden ocuparse como nombres de variables funciones u otras instrucciones

definidas por el programador

asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

Las variables se pueden declarar en tres sitios baacutesicos dentro de las funciones

(ya sea la funcioacuten main u otras creadas por el programador) estas variables son

llamadas locales en la definicioacuten de paraacutemetros de una funcioacuten como se veraacute

maacutes adelante y fuera de todas las funciones variables globales

Programa 3include ltiostreamgtusing namespace stdint variable_global=10int main()int variable_local=20coutltltnprograma que muestra los usos de variables globales y localesnltltendlcoutltltla variable global tiene asignado un ldquo ltltvariable_globalltltendlcoutltltnla variable local tiene asignado un ltltvariable_localltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

Programa que muestra los usos de las variables globales y locales

La variable global tiene asignado un 10

La variable local tiene asignado un 20

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 11

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 11: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

caracteres ldquoA-Zrdquo ldquoa-zrdquo ldquo_ldquo ldquo0- 9rdquo aunque ninguacuten nombre debe comenzar con

un nuacutemero (0-9) Ademaacutes no se deben de repetir nombres de variables en el

mismo contexto

Ademaacutes de las restricciones anteriores existe otra y esta tiene que ver con las

palabras reservadas del lenguaje que no son muchas a comparacioacuten de otros

lenguajes como Basic Las palabras que se presentan en la siguiente lista no

pueden ocuparse como nombres de variables funciones u otras instrucciones

definidas por el programador

asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while

Las variables se pueden declarar en tres sitios baacutesicos dentro de las funciones

(ya sea la funcioacuten main u otras creadas por el programador) estas variables son

llamadas locales en la definicioacuten de paraacutemetros de una funcioacuten como se veraacute

maacutes adelante y fuera de todas las funciones variables globales

Programa 3include ltiostreamgtusing namespace stdint variable_global=10int main()int variable_local=20coutltltnprograma que muestra los usos de variables globales y localesnltltendlcoutltltla variable global tiene asignado un ldquo ltltvariable_globalltltendlcoutltltnla variable local tiene asignado un ltltvariable_localltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

Programa que muestra los usos de las variables globales y locales

La variable global tiene asignado un 10

La variable local tiene asignado un 20

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 11

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 12: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Presione una tecla para continuar

Una variable global puede ser modificada en cualquier parte del programa

mientras que una variable local soacutelo puede ser modificada y utilizada dentro de la

funcioacuten en la que se ha declarado Por supuesto antes de utilizar una variable y

hacer operaciones con ella hay que declararla

Por lo general siempre se trata de utilizar lo menos posible la declaracioacuten de

variables globales El siguiente ejemplo muestra que se pueden declarar

variables en cualquier parte del programa siempre y cuando se declaren antes

de usarlas

programa 4

include ltiostreamgtusing namespace stdint main( )int variable1=10coutltltla variable 1 tiene almacenado un ltltvariable1ltltendlvariable1=50int variable2=variable1+30coutltltnla variable 2 almacena un ltltvariable2ltltendlsystem(ldquopauserdquo)return 0

Ejecucioacuten del programa

La variable 1 tiene almacenado un 10La variable 2 almacena un 80Presione una tecla para continuar

En un programa puede que necesitemos declarar un dato y asignarle un nombre

pero que eacuteste no pueda ser modificado En este caso debemos declarar una

constante

Por ejemplo el siguiente programa calcula el aacuterea de un ciacuterculo

Programa 5include ltiostreamgtusing namespace stdint main( )const float pi=3141592int radio=5float areaarea=piradioradiocoutltltel area del circulo es ltltarealtltendl

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 12

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 13: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

system(ldquopauserdquo)return 0Ejecucion del programa

El area del circulo es 785398Presione una Tecla para continuar

Declaramos una constante del tipo de datos float le damos el nombre ldquopirdquo y le

asignamos el valor 3141592 Este valor jamaacutes podraacute ser modificado en ninguna

parte del programa

25 Inicializacion de variables

Cuando declaramos una variable local su valor es por defecto indeterminado Pero usted puede querer que esa variable almacene un valor a la vez que es declarado Para hacer esto usted puede inicializar la variable Hay dos modos de hacer esto en C ++

El primer modo es antildeadiendo un signo igual seguido del valor al cual la variable seraacute inicializada

tipo identificador = valor_inicial

Por ejemplo si queremos declarar que una variable int de nombre ldquoardquo y que sea inicializada con un valor 0 en el momento que es declarado nosotros podriacuteamos escribir

Otro modo de inicializar variables se realiza incluyendo el valor inicial entre pareacutentesis (())

tipo identificador (valor_inicial)

Por ejemplo

int a (0)

Ambas formas son validas y equivalentes en C++

Veamos el siguiente ejemplo

Programa 6

inicializacion de variablesinclude ltiostreamgtusing namespace std

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 13

int a = 0

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 14: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

int main () int a=5 valor inicial = 5 int b(2) valor inicial = 2 int resultado valor inicial indeterminado

a = a + 3 resultado = a - b cout ltlt resultadoltltendlsystem(ldquopauserdquo) return 0

Ejecucioacuten del programa

6Presione una tecla para continuar

26 Introduccioacuten a cadenas

Las variables que pueden almacenar los valores no numeacutericos que son maacutes largos que un caraacutecter son conocidas como cadenas

El libreriacutea del lenguaje C ++ proporciona el soporte a las cadenas mediante la clase estandar string Este no es un tipo fundamental pero se comporta de un modo similar como tipos fundamentales haciendo su uso maacutes sencillo

Una primera diferencia con los tipos de datos fundamentales es que para declarar y usar las variables de este tipo tenemos que incluir un archivo de cabecera adicional en nuestro coacutedigo original ltstringgt

programa 7

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace stdint main () string micadena = Antildeo del deber ciudadano cout ltlt micadenaltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Aplusmno del deber ciudadanoPresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 14

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 15: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Como usted puede ver en el ejemplo anterior las cadenas pueden ser inicializadas con cualquier literal de cadena vaacutelido como las variables de tipo numeacutericas puede ser inicializado a cualquier literal vaacutelido numeacuterico Ambos formatos de inicializacioacuten son vaacutelidos con cadenas

string micadena = Antildeo del deber ciudadanostring micadena (Antildeo del deber ciudadano)

Las cadenas tambieacuten pueden realizar todas las otras operaciones baacutesicas que realizan los tipos de datos fundamentales como ser declarado sin un valor inicial y asignaacutersele valores durante la ejecucioacuten

Programa 8

mi primera cadenainclude ltiostreamgtinclude ltstringgtusing namespace std

int main () string mensaje mensaje = Esta es la cadena inicial cout ltlt mensaje ltlt endl mensaje = Esta es una cadena diferente cout ltlt mensaje ltlt endl system(ldquopause ldquo) return 0

Ejecucioacuten del Programa Esta es la cadena inicialEsta es una cadena diferentePresione una tecla para continuar hellip

CONSTANTES

Las constantes son expresiones con un valor que permanece fijo

27 Literales

Los literales son usados para expresar valores particulares dentro del coacutedigo original de un programa Ya hemos usado estos antes para dar valores concretos a variables o expresar mensajes que quisimos que nuestros programas imprimieran por ejemplo cuando escribimos

a = 10

El 10 en este pedazo de coacutedigo es un literal constante

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 15

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 16: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

El literales constantes puede ser dividido en Nuacutemeros enteros Nuacutemeros de Punto flotante Caraacutecteres Cadenas y Valores Booleanos

28 Numeros Enteros1652507-274

Los nuacutemeros anteriores son constantes numeacutericos que identifica valores decimales enteros Noacutetese que para expresar una constante numeacuterica no tenemos que escribir comillas dobles () ni ninguacuten caraacutecter especial No hay duda que es un constante siempre que nosotros escribamos 1776 en un programa nos referiremos al valor 1776

Ademaacutes de nuacutemeros decimales (aquellos que usamos cada diacutea) C ++ permite el empleo como literales constantes de nuacutemeros octales (base 8) y nuacutemeros hexadecimales (base 16) Si queremos expresar un nuacutemero octal tenemos que precederlo con 0 (el caraacutecter cero) Y para expresar un nuacutemero hexadecimal tenemos que precederlo con los caraacutecteres 0x Por ejemplo los literales constantes siguiente son equivalentes

75 decimal0113 octal0x4b hexadecimal

Todos estos representan el mismo nuacutemero 75 (setenta y cinco) expresado como un numero en base 10 nuacutemero octal y nuacutemero hexadecimal respectivamente

Los literales constantes como variables son considerados que tienen un tipo de dato especifico Por defecto los literales enteros son de tipo int Sin embargo podemos forzarlos a ser unsigned (sin signo) antildeadieacutendole el caraacutecter u o enteros mas largos antildeadiendo la l

75 int75u unsigned int75l long75ul unsigned long

En ambos casos el sufijo puede ser especificado usando letras mayuacutesculas o minuacutesculas

29 Nuacutemeros de Punto flotante

Ellos expresan nuacutemeros con decimales yo exponentes Pueden incluir un punto decimal un caraacutecter e (que expresa el exponente al que esta elevada la base 10)

314159 314159602e23 602 x 1023

16e-19 16 x 10-19

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 16

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 17: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

30 30

Estos son cuatro nuacutemeros vaacutelidos con decimales expresados en C ++ El primer nuacutemero es la PI el segundo es el nuacutemero de Avogadro el tercero es la carga eleacutectrica de un electroacuten (un numero sumamente pequentildeo ) - todos ellos aproximados - y el uacuteltimo es el nuacutemero tres expresado como literal numeacuterico de punto flotante

El tipo de por defecto para literales de punto flotante es double Si usted expliacutecitamente quiere expresar expliacutecitamente literal numeacuterico float o long double podraacute usar los sufijos de f ograve l respectivamente

314159L long double602e23f float

Cualquiera de las letras pueden ser de una constante numeacuterica de punto flotante punto flotante ( e f l) puede ser escrita usando letras mayuacutesculas o minuacutesculas

210 Caracter y cadena de caracteres

Tambieacuten existen constantes no numeacutericas como

zpUNICAcomo estas

Las dos primeras expresiones representan el caraacutecteres solo constantes y los dos siguientes representan literales de cadenas compuestas por varios caracteres Note que para representar un caraacutecter solo lo incluimos entre comillas simples () y las cadenas entre comillas dobles ()

Escribiendo tanto el caraacutecter simples como las cadenas de caracteres es necesario ponerlos entre comillas para diferenciarlos de los identificadores de variables o palabras reservadas observe la diferencia entre estas dos expresiones

xx

x solo se refiere a una variable cuyo identificador es x mientras que x (incluido dentro de comillas simples) mandariacutea al caraacutecter x constante

El caraacutecter y la cadena de caracteres tienen ciertas particularidades como las secuencias de escape Estos son los caraacutecteres especiales que son difiacuteciles o imposibles expresar de otra manera en el coacutedigo original de un programa como cambio de linea (n) o la tabulacion (t) Todos ellos son precedidos por un

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 17

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 18: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

backslash () Aquiacute usted tiene una lista de algunos de tales secuencias de escape

n Linea nueva

r Retorno de carro

t tab

v Tab vertical

b backspace

f form feed (page feed)

a Alarma sonora

Comilla simple()

Comilla doble ()

Signo interrogacion ()

backslash ()

Por ejemplo

ntizquierda t derechaunondosntres

Adicionalmente usted puede expresar cualquier caraacutecter por su coacutedigo numerico ASCII escribiendo un caraacutecter backslash () seguido del coacutedigo de ASCII expresado como un numero octal (base 8) o hexadecimal (base 16) En el primer caso (octal) los diacutegitos inmediatamente deben seguir el backslash (por ejemplo 23 o 40) en el segundo caso (hexadecimal) un caraacutecter x debe ser escrito antes de los diacutegitos ellos mismos (por ejemplo x20 o x4A)

Las cadenas de caracteres pueden extenderse por mas de una linea de colocando un signo de backslash () al final de cada liacutenea a continuar

cadena expresada en dos lineas

Usted tambieacuten puede concatenar varias cadenas separandolas por una o varios espacios en blanco tabuladores o newline

esto forma una simple cadena de caracteres

Finalmente si deseamos escribir amplias cadenas de caracteres podemos prcederla con el prefijo L

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 18

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 19: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

LEsta es una amplia cadena de caracteres

2 11 Literales BooleanosHay soacutelo dos valores vaacutelidos Booleanos verdadero y falso Estos pueden ser expresados en C ++ como los valores de tipo bool por usando los literales Booleanos verdaderos y falsos

212 Constantes definidas (define)

Usted puede definir sus propios nombres para constantes que usa muy a menudo sin necesidad recurrir a variables que consumen demasiada memoria simplemente por usando la directiva de preprocesador define Su formato es

define identificador valor

Por ejemplo

define PI 314159265define NUEVALINEA n

Esto define dos nuevos constantes PI Y NUEVALINEA Una vez que ellos son definidos usted puede usarlos en el resto del coacutedigo como cualquier otra constante regular por ejemplo

Programa 9

constantes definidas calcula aacuterea del circulo

include ltiostreamgtusing namespace std

define PI 314159define NUEVALINEA n

int main () double r=50 radio double circle

circle = 2 PI r cout ltlt circle cout ltlt NUEVALINEA system(ldquopauserdquo) return 0

Ejecucion del programa

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 19

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 20: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

314159Presione una tecla para continuar

De hecho la uacutenica cosa que el preprocesador del compilador hace cuando encuentra directivas define es de sustituir cualquier presencia de su identificador (en el ejemplo anterior estos eran la PI Y NUEVALINEA) por el coacutedigo al cual ellos han sido definidos (314159265 y n respectivamente)

La directiva define no es una instruccioacuten C ++ sino una directiva para el preprocesador por lo tanto se asume la liacutenea entera como la directiva y no se requiere un punto y coma () a su final

213 Declaracion de constantes (const)With the const prefix you can declare constants with a specific type in the same way as you would do with a variable

Con el prefijo const se puede declarar las constantes con un tipo de dato especifico de la misma forma que para declarar las variables

const int Ancho = 100const char tabulador = tconst zipcode = 12440

En caso de que no sea especificado ningun tipo de dato compilador asume que es de tipo int

214 OPERADORES

Ahora que sabemos de la existencia de variables y constantes podemos comenzar a operar con ellos Para tal objetivo C ++ integra a los operadores A diferencia de otras lenguajes cuyos operadores son principalmente las palabras clave los operadores en C ++ mayormente son hechas de los signos que no son la parte del alfabeto pero estaacuten disponibles en todos los teclados Esto hace del C ++ un lenguaje con coacutedigos mas cortos e internacional ya que esto significa menos palabras en Ingles pero requieren un poco de esfuerzo inicial para su aprendizaje

2141Asignacion (=)El operador de Asignacioacuten asigna un valor a la variable

a = 5

Esta declaracioacuten asigna el nuacutemero entero 5 a la variable a la parte en el lado izquierdo del operador de asignacioacuten (=)es conocida como el lvalue (el valor izquierdo) y el derecho como el rvalue (el valor derecho) El lvalue tiene que ser una variable mientras que el rvalue puede ser un constante una variable el resultado de una operacioacuten o cualquier combinacioacuten de estos

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 20

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 21: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

La regla maacutes importante cuando la asignacioacuten es la regla derecha-a-izquierdo La operacioacuten de asignacioacuten siempre ocurre del derecho a izquierdo y nunca en el otro sentido

a = b

Esta declaracioacuten asigna a la variable a (el lvalue) el valor contenido en la variable b (el rvalue) El valor que fue almacenado hasta este momento en a no es considerado en absoluto en esta operacioacuten y de hecho que el valor es perdido Considere tambieacuten que soacutelo asignamos el valor de b a a en el momento de la operacioacuten de asignacioacuten Por lo tanto un cambio posterior de b no afectaraacute el nuevo valor de a

Veamos el siguiente programa

Programa 10

operador de asignacioacuten

include ltiostreamgtusing namespace stdint main () int a b a b a = 10 a10 b b = 4 a10 b4 a = b a4 b4 b = 7 a4 b7

cout ltlt a cout ltlt a cout ltlt b cout ltlt bltltendl system(ldquopauserdquo) return 0

Ejecucioacuten del programa

a4 b7Presione cualquier tecla para continuar

Este coacutedigo nos daraacute como el resultado que el valor contenido en a es 4 y el contenido en la b es 7 observe como a no fue afectado por la modificacioacuten final de b aun cuando nosotros declaraacuteramos a = b anteriormente Una caracteriacutestica que C ++ tiene sobre otros lenguajes de programacioacuten es que la operacioacuten de asignacioacuten puede ser usada como el rvalue (o la parte de un rvalue) para otra operacioacuten de asignacioacuten Por ejemplo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 21

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 22: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

a = 2 + (b = 5)

Es equivalente a

b = 5a = 2 + b

Esto quiere decir primero asigne 5 a la variable b y luego asigne a la variable a el valor 2 maacutes el resultado de la asignacioacuten anterior de b (es decir 5) quedando con un valor final de 7 La expresioacuten siguiente es tambieacuten vaacutelida en C ++

a = b = c = 5

Asigna el valor de 5 a las tres variables a b y c

2142 Operadores Arimeticos ( + - )Las cinco operaciones aritmeacuteticas soportadas por el lenguaje C ++ son

+ adicioacuten

- sustraccioacuten

multiplicacioacuten

divisioacuten

Modulo o resto

Las operaciones de adicioacuten substraccioacuten multiplicacioacuten y divisioacuten literalmente estaacuten en correspondencia con sus operadores respectivos matemaacuteticos El uacutenico que quizaacutes no haya usado puede ser el moacutedulo cuyo operador es el signo de porcentaje (el ) El moacutedulo es la operacioacuten que da el resto de una divisioacuten de dos valores Por ejemplo si escribimos

a = 11 3

la variable a contiene el valor 2 donde 2 es el resto de dividirse 11 entre 3

2143 Operadores compuestos

Cuando queremos modificar el valor de una variable al efectuar una operacioacuten sobre el valor actualmente almacenado en aquella variable podemos usar los operadores de asignacioacuten compuestos

expresioacuten es equivalente a

valor += incremento valor = valor + incremento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 22

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 23: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

a -= 5 a = a - 5

a = b a = a b

precio = unidad + 1 precio = precio (unidad + 1)

Y lo mismo para todos los otros operadores Por ejemplo

Programa 11

Operadores de asignacion compuestosinclude ltiostreamgtusing namespace stdint main () int a b=3 a = b a+=2 equivalent to a=a+2 cout ltlt altltendl system(ldquopauserdquo) return 0Ejecucioacuten del programa

5presione una tecla para continuar

2144 Incremento y decremento(++ --)

Simplificando auacuten maacutes algunas expresiones el operador de Incremento (++) y el operador de decremento (-) aumentan o reducen en una unidad el valor almacenado en una variable Ellos son equivalentes a + =1 y a - =1 respectivamente Asiacute

c++c+=1c=c+1

Todos son equivalentes en su funcionalidad Los tres aumentan en una unidad el valor de c

Una caracteriacutestica de este operador es que puede ser usado tanto como un prefijo como como un sufijo Esto quiere decir que puede ser escrito antes del identificador variable (++ a) o despueacutes (a ++) Aunque una simple expresioacuten como a++ o ++ a tengan exactamente el mismo significado en otras expresiones en las cuales el resultado del aumento o la operacioacuten de disminucioacuten es evaluado como un valor en una expresioacuten externa ellos pueden tener una diferencia importante en su significado En el caso que el operador de incremento como un prefijo (++ a) el valor es aumentado antes de que el resultado de la expresioacuten sea evaluado y por lo tanto el valor aumentado es considerado en la

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 23

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 24: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

expresioacuten externa en caso de que sea usado como un sufijo (un ++) el valor almacenado en a es aumentado despueacutes de la evaluacioacuten y por lo tanto el valor almacenado antes de que la operacioacuten de incremento sea evaluada en la expresioacuten externa Note la diferencia

Ejemplo 1 Ejemplo 2

B=3A=++B A contiene 4 B contiene 4

B=3A=B++ A contiene 3 B contiene 4

En el Ejemplo 1 la B es incrementada antes de que su valor sea copiado a A Mientras en el Ejemplo 2 el valor de B es copiado a A y luego la B es aumentada

2145 Operadores Relacionales y de Igualdad

Para evaluar una comparacioacuten entre dos expresiones podemos usar los operadores relacionales y de igualdad El resultado de una operacioacuten relacional es un valor Booleano que soacutelo puede ser verdadero o falso Podemos comparar dos expresiones por ejemplo saber si ellos son iguales o si uno es mayor que el otro es Aquiacute estaacute una lista de los operadores relacionales y de igualdad que pueden ser usados en C ++

==

Igual a

= No igual a

gt Mayor que

lt Menor que

gt=

Mayor o igual a

lt=

Menor o gual que

Aqui algunos ejemplos

(13 == 3) evaluado falso(0)(5 gt 4) evaluado verdadero(1)(3 = 2) evaluado verdadero(1)(6 gt= 6) evaluado verdadero(1)(5 lt 5) evaluado a falso(0)

Desde luego en vez de usar solo constantes soacutelo numeacutericas podemos usar cualquier expresioacuten vaacutelida incluyendo variables Suponga a=2 b=3 y c=6

(a == 5) evalua falso debido a que a no es igual a 5

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 24

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 25: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

(ab gt= c) verdadero debido a que (23 gt= 6) es verdadero (b+4 gt ac) falso debido a que (3+4 gt 26) es falso ((b=2) == a) verdadero

iexclMucho cuidado El operador = (un signo igual) no es el mismo como el operador == (dos signos iguales) el primer es un operador de asignacioacuten (asigna el valor en su derecho a la variable en su izquierdo) y el otro un (==) es el operador de igualdad que se compara si ambas expresiones en los dos lados de ello son iguales el uno al otro Asiacute en la uacuteltima expresioacuten ((b=2) == a) primero asignamos el valor 2 a la b y luego lo comparamos a a esto tambieacuten almacena el valor 2 entonces el resultado de la operacioacuten es verdadero

2146 Operadores logicos ( ampamp || )

El Operador () es el operador C ++ para realizar la operacioacuten Booleana (NOT) tiene soacutelo un operando localizado a su derecha y la uacutenica cosa que hace es invertir el valor de ello produciendo falso si su operando es verdadero y verdadero si su operando es falso Baacutesicamente esto devuelve el valor Booleano opuesto de su operando Por ejemplo

The logical operators ampamp and || are used when evaluating two expressions to obtain a single relational result The operator ampamp corresponds with Boolean logical operation AND This operation results true if both its two operands are true and false otherwise The following panel shows the result of operator ampamp evaluating the expression a ampamp b

Los operadores loacutegicos ampamp y || son usados para evaluar dos expresiones para obtener resultado relacional simple El operador ampamp corresponde con la operacioacuten Booleana loacutegica AND (Y) Esta operacioacuten resulta verdadera si sus dos operandos son verdaderos o ambos son falsos La siguiente tabla muestra los resultados del operador ampamp evaluando la expresioacuten a ampamp b

a ba ampamp

b

V V V

V F F

F V F

F F V

El operador || corresponde con la operacioacuten Booleana loacutegica OR Esta operacioacuten resulta verdadero si cualquiera de uno de sus dos operandos es verdadero y

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 25

(5 == 5) da falso(0) (6 lt= 4) da verdadero(1) true da falso(0)false da verdadero(1)

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 26: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

rsulta falso soacutelo cuando ambos operandos son falsos Aquiacute estaacuten los resultados posibles de a ||b

Nota El siacutembolo | se obtiene mediante la combinacioacuten ALT +124

2147 OPERADOR ||

a b a || b

V V V

V F V

F V V

F F F

Por ejemplo

( (5 == 5) ampamp (3 gt 6) ) da falso( V ampamp F )( (5 == 5) || (3 gt 6) ) da verdadero ( V || F )

2148 OPERADOR CONDICIONAL ( )

El operador condicional evaluacutea una expresioacuten que devuelve un valor si aquella expresioacuten es verdadera y otro si la expresioacuten es evaluada como falso Su formato es

condicion result1 result2

Si la condicioacuten es verdadera la expresioacuten devolveraacute el resultado1 de lo contrario retornara el resultado2

7==5 4 3 devuelve 37==5+2 4 3 devuelve 45gt3 a b devuelve el valor de a

programa 12operador condicionalinclude ltiostreamgtusing namespace stdint main () int abc a=2 b=7 c = (agtb) a b

cout ltlt cltltendl system(ldquopauserdquo) return 0

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 26

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 27: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

conditional operator

include ltiostreamgtusing namespace std

int main () int abc

a=2 b=7 c = (agtb) a b

cout ltlt c

return 0

Ejecucioacuten del programa

7presione una tecla para continuarhellip

2149 Operador Coma ( )

El operador de coma() se usa para separar dos o maacutes expresiones que son incluidas donde soacutelo una expresioacuten es esperada Cuando el conjunto de expresiones tiene que ser evaluado para un valor soacutelo la expresioacuten de derecha es considerada

Por ejemplo el siguiente coacutedigo

a = (b=3 b+2)

Primero asignariacutea el valor 3 a la b y luego asignariacutea b+2 a la variable a Tan al final la variable a contendriacutea el valor 5 mientras la variable b contendriacutea el valor 3

21410 Operador tipo Casting ( Conversioacuten de tipo de datos)

El tipo operador Casting le permite convertir un dato de un tipo dado al otro Hay varios modos de hacer esto en C ++ El maacutes simple que ha sido heredado del lenguaje C debe preceder la expresioacuten para ser convertida por el nuevo tipo incluido entre pareacutentesis (())

int ifloat f = 314i = (int) f

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 27

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 28: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

El coacutedigo anterior convierte el nuacutemero 314 de punto flotante a un valor de nuacutemero entero (3) el resto se pierde Aquiacute el operador typecasting era (int) Otro modo de hacer la misma cosa en C ++ es usando la notacioacuten funcional precediendo la expresioacuten a ser convertida por el tipo encerrando la expresioacuten entre pareacutentesis

i = int ( f )

Ambas formas de conversioacuten de tipos son validos en C++

215 Jerarquia de operadoresCuando se escriben expresiones complejas con varios operandos podemos tener algunas dudas sobre el cual operando es evaluado primero y cual despueacutes Por ejemplo en esta expresioacuten

a = 5 + 7 2

Podremos dudar sobre su interpretacioacuten

a = 5 + (7 2) resulta 6 oa = (5 + 7) 2 resulta 0

La respuesta correcta es la primera de las dos expresiones con un resultado de 6 Hay una orden establecida con la prioridad o jerarquia de cada operador y no soacutelo los aritmeacuteticos sino para todos los operadores que pueden aparecer en C ++ Del mayor prioridad a la maacutes baja la prioridad es como sigue

Nive

Operador Descripcionagrupacio

n

1 ambito Izq A der

2() [] -gt ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid

postfix Izq A der

3

++ -- ~ sizeof new delete unario (prefix)

Der A izq amp

indireccion y reference (punteros)

+ - Operador de signo unario

4 (type) type casting Der A izq

5 -gt Puntero -a-miembro

Izq A der

6 multiplicativo Izq A der

7 + - aditivo Izq A der

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 28

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 29: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

8 ltlt gtgt shift Izq A der

9 lt gt lt= gt= relacional Izq A der

10 == = equality Izq A der

11 amp bitwise AND Izq A der

12 ^ bitwise XOR Izq A der

13 | bitwise OR Izq A der

14 ampamp logical AND Izq A der

15 || logical OR Izq A der

16 condicional Der A izq

17 = = = = += -= gtgt= ltlt= amp= ^= = asignacion Der A izq

18 coma Der A izq

La agrupacioacuten define el orden de preferencia en la cual los operadores son evaluados en el caso que hay varios operadores del mismo nivel en una expresioacuten Todos estos niveles de preferencia para operadores pueden ser manipulados o hacerse maacutes simples y sin ambiguumledades usando signos de pareacutentesis () como en este ejemplo

Podra se escrita como

a = 5 + (7 2)

o

a = (5 + 7) 2

Dependiendo de la operacioacuten que buscamos

Si se quiere escribir expresiones complicadas y usted no estaacute completamente seguro de los niveles de preferencia siempre incluya pareacutentesis Esto tambieacuten haraacute un coacutedigo maacutes faacutecil para leer

CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 29

a = 5 + 7 2

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 30: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Usando la libreriacutea estandar de entrada y salida seremos capaces de interactuar con el usuario ya sea por imprimiendo mensajes sobre la pantalla y permitiendo la entrada del usuario mediante el teclado

La biblioteca estaacutendar C ++ incluye el archivo de cabecera iostream donde los objetos de flujos de entrada y salidas son declaradas

31 Salida standar(cout)

Por defecto la salida estaacutendar de un programa es la pantalla y el objeto de flujo C ++ definido para tener acceso a ello es cout

cout es usado conjuntamente con el operador de insercioacuten que es escrito como ltlt(dos signos menor)

cout ltlt sentencia de salida imprime sentencia de salida cout ltlt 120 imprime 120 en pantallacout ltlt x imprime el contenido de x

El operador ltlt inserta los datos que lo siguen en el flujo que lo precede En los ejemplos anteriores insertoacute la cadena de caracteres ldquosentencia de salida ldquo la constante numeacuterica 120 y la variable x en el flujo de salida estandar cout Note que la sentencia en la primera instruccioacuten esta incluida entre dobles comillas () porque es una cadena de caracteres Por ejemplo estas dos sentencias tienen resultados muy diferentes

cout ltlt Hola imprime Holacout ltlt Hola imprime el contenido de la variable hola

El operador de insercioacuten (ltlt) puede ser usado mas de una vez en una sentencia simple

cout ltlt Hola ltlt yo soy ltlt una sentencia C++

Esta uacuteltima declaracioacuten imprimiriacutea el mensaje iexclHola soy una sentencia C ++ en la pantalla La utilidad de repetir al operador de insercioacuten (ltlt) es demostrada cuando queremos imprimir una combinacioacuten de variables y constantes o maacutes de una variable

cout ltlt Hola tengo ltlt age ltlt antildeos and mi codigo es ltlt zipcode

Si asumimos que la variable de edad contiene el valor 24 y la variable zipcode contiene 90064 la salida de la declaracioacuten anterior seriacutea

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 30

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 31: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Hola tengo 24 aplusmnos y mi codigo es 90064

Es importante notar que cout no antildeade un salto de liacutenea despueacutes de su salida a no ser que nosotros expliacutecitamente lo indiquemos por lo tanto las declaraciones siguientes

cout ltlt Esta es una sentencia cout ltlt Esta es otra sentencia

mostraraacute sobre la pantalla uno despueacutes del otro sin ninguacuten salto de liacutenea entre ellos

Aun cuando nosotros los hubieacuteramos escrito en dos inserciones diferentes en cout Para realizar un salto de liacutenea sobre la salida expliacutecitamente debemos insertar un caraacutecter de liacutenea nueva en cout En C ++ un caraacutecter de liacutenea nueva puede ser especificado como n (backslash n)

cout ltlt Primera sentencian cout ltlt Segunda sentencianTercera sentencia

Esto produce la siguiente salida

Adicionalmente para antildeadir una nueva liacutenea podraacute utilizarse el manipulador endl Por ejemplo

cout ltlt Primera Sentencia ltlt endlcout ltlt Segunda sentencia ltlt endl

imprimira

El manipulador endl produce una nueva liacutenea exactamente como la insercioacuten de n

32 Entrada estandar(cin)

El dispositivo de entrada estaacutendar es por lo general el teclado El manejo de la entrada estaacutendar en C ++ es hecho aplicando al operador de extraccioacuten (gtgt)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 31

Esta es una sentencia Esta es otra Sentencia

Primera sentenciaSegunda sentenciaTercera sentencia

Primera sentenciaSegunda sentencia

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 32: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

sobre el flujo cin El operador debe ser seguido de la variable que almacenaraacute los datos que van a ser extraiacutedos del flujo Por ejemplo

int edadcin gtgt edad

La primera declaracioacuten declara una variable de tipo int llamada edad y el segundo espera una entrada de cin (desde el teclado) para almacenarlo en esta variable entera cin soacutelo puede procesar la entrada del teclado una vez que la tecla RETURN haya sido presionada Por lo tanto incluso si usted solicita un solo caraacutecter la extraccioacuten de cin no trataraacute la entrada hasta que el usuario presione la tecla RETURN despueacutes que el caraacutecter haya sido ingresado Usted siempre debe considerar el tipo de la variable que se esta usando como un contenedor de las extracciones cin Si usted solicita un nuacutemero entero deberaacute recibir un nuacutemero entero si usted solicita un caraacutecter deberaacute recibir un caraacutecter y si usted solicita una cadena de caracteres usted deberaacute ingresar una cadena de caracteres

Programa 13

ejemplo entrada y salida io

include ltiostreamgtusing namespace std

int main () int i cout ltlt ingrese un valor entero cin gtgt i cout ltlt El valor ingresado es ltlt i cout ltlt y su duplo es ltlt i2 ltlt n system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un valor entero 204El valor ingresado es 204 y su duplo es 408Presione una tecla para continuar

El usuario de un programa puede ser uno de los factores que generan errores auacuten en los programas maacutes simples que usan cin (como el que que acabamos de ver) Desde si usted solicita un valor de nuacutemero entero y el usuario introducen un nombre o cadena de caracteres el resultado puede causar su programa una operacioacuten fallida ya que no es lo que nosotros esperaacutebamos del usuario

Tambien se podra usar cin cuando se requieran ingresar mas de un dato

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 32

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 33: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

cin gtgt a gtgt b

Es equivalente a

cin gtgt acin gtgt b

En ambos casos el usuario debe dar dos datos una para la variable a y el otro para la variable b que puede ser separada por cualquier separador vaacutelido un espacio un tab o una nueva liacutenea

EJERCICIOS PROPUESTOS

1- Convertir la edad en antildeos de una persona a meses

2- Convertir soles a doacutelares

3- Evaluar la funcioacuten para cualquier valor de x

4-Calcular el intereacutes que gana un capital de x soles a una tasa de intereacutes del 15 anual en un periodo de n antildeos

5-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada

6-Convertir degC a degF

CAPITULO IV ESTRUCTURAS DE CONTROL

Un programa por lo general no es limitado con una secuencia lineal de instrucciones Durante su proceso un programa puede bifurcarse repetir el coacutedigo o tomar decisiones Para tal objetivo C ++ proporciona las estructuras de control que sirven para especificar que es lo que tiene que hacer el programa cuando y bajo cuales circunstancias

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 33

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 34: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Con la introduccioacuten a las estructuras de control vamos tener que tener un nuevo concepto la declaracioacuten compuesta o bloque de instrucciones Un bloque es un grupo de instrucciones que son separadas por puntos y coma () pero agrupado juntos en un bloque incluido entre llaves

instrucciograven1 instrucciograven2 instrucciograven3

La mayoriacutea de las estructuras de control que nosotros veremos en esta seccioacuten requieren una declaracioacuten geneacuterica como la parte de su sintaxis Una declaracioacuten puede ser cualquiera una declaracioacuten simple (una instruccioacuten simple que se termina con un punto y coma) o una declaracioacuten compuesta (varias instrucciones agrupadas en un bloque) como el que solamente(justo) descrito En el caso que queremos que la declaracioacuten sea una declaracioacuten simple no tenemos que incluirlo en abrazaderas () Pero en el caso que queremos que la declaracioacuten sea una declaracioacuten compuesta debe ser incluido entre llaves () formando un bloque

41 Estructura Condicional if elseLa palabra clave if es usada para ejecutar una declaracioacuten o bloque soacutelo si una condicioacuten es verdadera (Estructura condicional simple)

Pseudocoacutedigo Diagrama de flujo

Su Sintaxis es

if (condicioacuten) instruccioacuten

Donde la condicioacuten es la expresioacuten que estaacute siendo evaluada Si esta condicioacuten es verdadera la declaracioacuten es ejecutada Si es falso la declaracioacuten no es ejecutada y el programa sigue directamente despueacutes de esta estructura condicional

Por ejemplo la secciograven de coacutedigo siguiente imprimerdquo x es 100 ldquo soacutelo si el valor almacenado en la variable x es igual a 100

Si queremos que maacutes de una declaracioacuten sea ejecutada en caso de que la condicioacuten sea verdadera podemos especificar un bloque usando llaves

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 34

if (x == 100) cout ltlt x es 100

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 35: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

if (x == 100) cout ltlt x is cout ltlt x

Ademaacutes podemos especificar lo que queremos realizar si la condicioacuten no es verdadera usando la palabra clave else Su forma usada conjuntamente con if es

(estructura Condicional doble)

Pseudocoacutedigo Diagrama de flujo

Sintaxis

if (condicion) instruccion1 else instruccion2

Por ejemplo

if (x == 100) cout ltlt x es 100else cout ltlt x no es 100

Imprime en pantalla x es 100 si x tiene un valor de 100 pero si no es asiacute se imprime x no es 100

Las estructuras de comparacioacuten muacuteltiples son tomas de decisioacuten especializadas que permiten comparar una variable contra distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma comuacuten es la siguiente

(estructura condicional Multiple)

Pseudocoacutedigo Diagrama de flujo

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 35

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 36: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Si if + else puede ser concatenado con la intencioacuten de verificar un rango de valores

El ejemplo siguiente muestra que si el valor actualmente almacenado en x es positivo negativo o ninguno de ellos (p ej el cero)

if (x gt 0) cout ltlt x es positivoelse if (x lt 0) cout ltlt x es negativoelse cout ltlt x es 0

Recuerde que en caso de que queremos que maacutes que una declaracioacuten sola sea ejecutada debemos agruparlos en un bloque por incluyeacutendolos entre llaves

Programas Propuestos

1- Capturar un nuacutemero cualesquiera e informar si es o no es mayor de 100

2- Capturar un numero entero cualesquiera e informar si es o no es muacuteltiplo de 4 ( recordar el operador mod() analizado en el tema de operadores aritmeacuteticos)

1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3

3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos

Cantidad fija de $500 si no rebasan los 300 Kms

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 36

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 37: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Distancia recorrida mayor de 300 Kms

Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra

Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000

1 - Realizar un programa que lea por teclado dos nuacutemeros si el primero es mayor al segundo informar su suma y diferencia en caso contrario informar el producto y la divisioacuten del primero respecto al segundo

2 - Se ingresa por teclado un valor entero mostrar una leyenda que indique si el nuacutemero es positivo cero o negativo

3 - De un postulante a un empleo que realizoacute un test de capacitacioacuten se obtuvo la siguiente informacioacuten nombre del postulante cantidad total de preguntas que se le realizaron y cantidad de preguntas que contestoacute correctamente Se pide confeccionar un programa que lea los datos del postulante e informe el nivel del mismo seguacuten el porcentaje de respuestas correctas que ha obtenido y sabiendo queNivel superior Porcentajegt=90Nivel medio Porcentajegt=75 y lt90Nivel regular Porcentajegt=50 y lt75Fuera de nivel Porcentajelt50)

4 - De un operario se conoce su sueldo y los antildeos de antiguumledad Se pide confeccionar un programa que lea los datos de entrada e informea) Si el sueldo es inferior a 500 y su antiguumledad es igual o superior a 10 antildeos otorgarle un aumento del 20 mostrar el sueldo a pagarb) Si el sueldo es inferior a 500 pero su antiguumledad es menor a 10 antildeos otorgarle un aumento de 5 c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en la paacutegina sin cambios

42 La estructura selectiva switch

Las estructuras Swicht es una estructura de comparacioacuten muacuteltiple es una toma de decisioacuten especializada que permiten evaluar una variable con distintos posibles resultados ejecutando para cada caso una serie de instrucciones especificas La forma es la siguiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 37

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 38: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Pseudocoacutedigo Diagrama de flujo

La sintaxis de la declaracioacuten de swicht es un poco peculiar Su objetivo es de comprobar varios valores posibles constantes para una expresioacuten Algo similar a que hicimos anteriormente con el anidamiento de varias instrucciones if else Su Sintaxis es la siguiente

switch (expresion) case constante1 grupo de instrucciones 1 break case constante2 group of statements 2 break default grupo default de instrucciones

Esto trabaja de manera siguiente switch evaluacutea la expresioacuten y comprueba si esto es equivalente a constante1 si es asi se ejecuta el grupo de declaraciones 1 hasta que encuentre la instruccioacuten Break Cuando encuentra la instruccioacuten BREAK el programa salta al final de la estructura selectiva Switch

Si la expresioacuten no fuera igual a constante1 debera evaluarse la constante2 y si es verdadera ejecutara el grupo de instrucciones 2 hasta que encuentre la instruccioacuten break y luego brincaraacute al final del interruptor la estructura selectiva swicht

Finalmente si el valor de expresioacuten no coincide con ninguna de las constantes el programa ejecutaraacute las declaraciones incluidas despueacutes de default

Ambos de los fragmentos de codigo siguientes tienen el mismo comportamiento

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 38

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 39: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Ejemplo switch Equivalente if-else

switch (x) case 1 cout ltlt x es 1 break case 2 cout ltlt x es 2 break default cout ltlt valor de x desconocido

if (x == 1) cout ltlt x es 1 else if (x == 2) cout ltlt x es 2 else cout ltlt valor de x desconocido

La instruccioacuten switch es un poco peculiar dentro del lenguaje C ++ porque usa etiquetas en vez de bloques Esto nos obliga a poner instrucciones break despueacutes del grupo de instrucciones que queremos ejecutar para una condicioacuten especiacutefica De no ser asi las demaacutes instrucciones de las otras constantes hasta el final de la instruccioacuten Swicht tambieacuten seraacuten ejecutadas

Por ejemplo si no incluiacutemos una declaracioacuten break despueacutes del primer grupo para el caso 1 el programa automaacuteticamente no brincaraacute al final del interruptor el bloque selectivo y esto seguiriacutea ejecutando el resto de declaraciones hasta que esto alcance instruccioacuten break o el final del bloque selectivo switch Esto hace innecesario de incluir llaves encerrando la instrucciones para cada uno de los casos y tambieacuten puede ser uacutetil ejecutar el mismo bloque de instrucciones para valores posibles diferentes para la expresioacuten que esta siendo evaluada Por ejemplo

switch (x) case 1 case 2 case 3 cout ltlt x es 1 2 o 3 break default cout ltlt x no es 1 2 o 3

Note que el interruptor soacutelo puede ser usado para comparar una expresioacuten contra constantes Por lo tanto no podemos poner variables como etiquetas (por ejemplo case n donde la n es una variable) o rangos (case (1 3)) porque ellos no son constantes validas en C ++

Si usted tiene que comprobar rangos o los valores que no son constantes se usan un anidamiento ifelse

Ejercicios Propuestos1- Escribe un programa que calcule el sueldo semanal de un empleado si la empresa donde trabaja paga a sus empleados por horas trabajadas semanalmente siguiendo las siguientes consideracionesExisten dos departamentos en los que a sus empleados se les pagan las siguientes cantidades por hora 1) Contabilidad 625 Soleshora2) Produccioacuten 245 Soleshora

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 39

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 40: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Ademaacutes la empresa otorga a sus empleados un bono por asistencia seguacuten el reporte de asistencias del uacuteltimo antildeo0 (cero) faltas 1850 soles adicionales2 faltas 900 soles adicionales3 faltas 300 soles adicionales

Maacutes de 3 faltas no recibe bono por asistencia El programa deberaacute preguntarEl departamento en que trabaja en el empleado (1 =contabilidad oacute 2 =produccioacuten) el nuacutemero de faltas que tiene en el uacuteltimo antildeo trabajado y horas trabajadas por semanaDespueacutes de pedir esta informacioacuten el programa calcularaacute el sueldo integrado del empleado que se obtendraacute de la siguiente manera

sueldo_neto= (horas_trabajadassueldo_diario)

sueldo_integrado=sueldo_neto+bono_por_asistencia

Finalmente mostrara un reporte como el siguienteSueldo netoxxxxxxxBono por asistenciaxxxxxxxSueldo integradoxxxxxxx

2-Un almaceacuten de alimentos atendiendo al monto anual que los clientes compran al almaceacuten los clasifica y les otorga descuentos permanentes seguacuten la tabla que se muestra a continuacioacuten a- Cliente Preferente recibe el 5 de descuento en montos menores a 50000 soles recibe el 10 de descuento en montos de 50000 soles o maacutesb- Cliente especial recibe el 2 de descuento en montos menores a 50000 soles recibe el 5 de descuento en montos de 50000 soles o maacutesc- Cliente Ordinario no recibe descuentoEl programa deberaacute preguntar la clasificacioacuten del cliente y el monto a pagar posteriormente mostraraacute un reporte como el siguienteMonto a pagarxxxxxxxDescuentoxxxxxxxTOTAL con descuentoxxxxxxx

3-Una empresa familiar de zapatos fabrica 3 modelos de zapatos para caballero con los siguientes precios de venta1- Modelo Ejecutivo345502- Modelo Premier298703- Modelo Emperador24600Los 3 modelos son fabricados uacutenicamente en talla 8 La empresa planea fabricar los tres modelos tambieacuten en tallas 9 y 10 y desea un programa que calcule los precios de venta para estas nuevas tallas Se sabe que por cada nuacutemero que se aumente en la talla del zapato su precio de venta deberaacute incrementarse 10 soles esto significa que si el modelo Emperador cuesta 24600 soles en medida nuacutemero 8 su costo en nuacutemero 9 seraacute 25600 y en 10 es 26600Escribe un programa que pida el modelo del zapato (a b oacute c) y la medida (89 oacute 10) e imprima en pantalla su precio de venta correspondiente

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 40

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 41: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

4-Una asociacioacuten de asistencia social otorga las siguientes cantidades por concepto de beca mensual a estudiantes con pobreza extrema y moderada de los siguientes 3 niveles

a) Primariabeca baacutesica=30000b) Secundariabeca baacutesica=60000c) Preparatoriabeca baacutesica=90000

Adicionalmente se suman las siguientes cantidades a la beca baacutesica dependiendo del estado de la vivienda en la que habita el estudiante 1) Su familia vive en casa propia= no se incrementa su beca baacutesica2) Su familia renta casa= se suman 10000 soles a su beca baacutesica3) Vivienda irregular sin servicios= se suman 20000 soles a su beca baacutesica

Escribe un programa que pregunte el nivel del estudiante( a)primaria b)secundaria oacute c)preparatoria) Pregunte tambieacuten la condicioacuten de la vivienda que el estudiante habita(1) casa propia 2)casa rentada oacute 3)vivienda irregular sin servicios)Posteriormente muestre en pantalla el monto total de su beca

5-Escribe un programa que muestre nombres propios para hombre o mujer cuya primer letra sea una vocal esto es el programa deberaacute pedir la Vocal con la que se desea el nombre (a e i o u) y preguntar si se desea nombre para hombre o para mujer (1- hombre 2- mujer) posteriormente mostraraacute el nombre que corresponda a esa seleccioacuten los nombres propuestos sonAlbertoAacutengelaErnestoEmiliaIgnaciolIrisOctavioOdalisUlisesUrsula

Estructuras de Iteracion (lazos)

Los lazos tienen como el objetivo de repetir una declaracioacuten un cierto nuacutemero de veces o mientras una condicioacuten es realizada

43 El lazo while Su formato es

while (expresion) instruccioacuten

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 41

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 42: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Su funcionalidad debe simplemente repetir la declaracioacuten mientras la condicioacuten puesta en la expresioacuten es verdadera( distinto de cero)

Por ejemplo vamos a hacer un programa con la cuenta regresiva que usa un lazo-while

Programa 14

conteo descendente usando Whileinclude ltiostreamgtusing namespace std

int main () int n cout ltlt Ingrese numero inicial gt cin gtgt n

while (ngt0) cout ltlt n ltlt --n cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese numero inicial gt 77 6 5 4 3 2 1 FIN presione una tecla para continuar

Cuando el programa comienza pide al usuario ingresar un nuacutemero de partida para la cuenta regresiva Entonces el lazo while comienza si el valor ingresado por el usuario cumple con la condicioacuten ngt 0 ( n es mayor cero) el bloque que sigue a la condicioacuten seraacute ejecutada y repetida mientras la condicioacuten (n gt 0) siga siendo verdadera

El proceso total del programa anterior puede ser interpretado seguacuten la secuencia siguiente (comenzando en main )

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 42

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 43: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

1 El usuario asigna un valor a n

2 La condicion while es evaluada (ngt0) En este punto hay dos posibilidades La condicion es verdadera La instruccion es ejecutada ( ir al paso 3) la condicion es falsa ignorar instruccioacuten y continuar (ir al paso 5)

3 Ejecutar instruccioncout ltlt n ltlt --n(imprime el valor de n en la pantalla y decrementa el valor de n en 1)

4 Fin del bloque Regresar automaticamente al paso 2

Continuar el programa despueacutes del bloque Imprimir FIN y terminar el programa

Cuando creamos un lazo While siempre debemos considerar que tiene que terminarse en alguacuten punto por lo tanto debemos proporcionar dentro del bloque alguacuten meacutetodo de obligar a la condicioacuten de hacerse falsos en alguacuten punto si no el lazo seguiraacute infinitamente En este caso hemos incluido - la n que disminuye el valor de la variable que es evaluada en la condicioacuten (n) en cada iteracioacuten hasta que el valor de n se hace cero y por tanto la condicioacuten sea falsa terminando el lazo

Desde luego esto es una accioacuten tan simple para nuestro ordenador que la cuenta regresiva entera es realizada al instante y sin demora

Ejercicios Propuestos

1 - Realizar un programa que imprima 25 teacuterminos de la serie 11 - 22 - 33 - 44 etc (No se ingresan valores por teclado)

2 - Mostrar los muacuteltiplos de 8 hasta el valor 500 Debe aparecer en pantalla 8 -16 -24 etc

3 - Escribir un programa que lea 10 notas de alumnos y nos informe cuaacutentos tienen notas mayores o iguales a 11 y cuaacutentos menores

4 - Se ingresan un conjunto de 5 alturas de personas por teclado Mostrar la altura promedio de las personas

5 - En una empresa trabajan 5 empleados cuyos sueldos oscilan entre $100 y $500 realizar un programa que lea los sueldos que cobra cada empleado e informe cuaacutentos empleados cobran entre $100 y $300 y cuaacutentos cobran maacutes de $300 Ademaacutes el programa deberaacute informar el importe que gasta la empresa en sueldos al personal

6 - Desarrollar un programa que permita cargar 5 nuacutemeros enteros y luego nos informe cuaacutentos valores fueron pares y cuaacutentos imparesEmplear el operador en la condicioacuten de la estructura condicional

if (valor2==0)

El operador retorna el resto de la divisioacuten valor 2 Por ejemplo 12 2 retorna 0 13 2 retorna 1 porque el resto de dividir 13 en 2 es 1

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 43

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 44: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

44 El lazo do-while

Su formato es

do instrucciograven while (condicion)

Su funcionalidad es exactamente la misma que el lazo WHILE con la excepcioacuten que en el do-while la condicioacuten es evaluada despueacutes de la ejecucioacuten de la instruccioacuten permitiendo al menos una ejecucioacuten de la instruccioacuten incluso si la condicioacuten fuese falsa Por ejemplo el programa de ejemplo siguiente repite cualquier nuacutemero en el que usted ingrese hasta que usted ingrese 0

Programa 15

include ltiostreamgtusing namespace std

int main () unsigned long n do cout ltlt Ingrese un numero (0 para terminar) cin gtgt n cout ltlt Ha ingresado ltlt n ltlt n while (n = 0) system(ldquopauserdquo) return 0

Ejecucioacuten del programa

Ingrese un numero (0 para terminar ) 12Ha ingresado 12Ingrese un numero (0 para terminar ) 0Ha ingresado 0Presione cualquier tecla para continuar

Programas Propuestos

1 - Realizar un programa que acumule (sume) valores ingresados por teclado hasta ingresa el 9999 (no sumar dicho valor solamente indica que ha finalizado la carga) Imprimir el valor acumulado e informar si dicho valor es cero mayor a cero o menor a cero

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 44

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 45: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

En un banco se procesan datos de las cuentas corrientes de sus clientes De cada cuenta corriente se conoce nuacutemero de cuenta nombre del cliente y saldo actual El ingreso de datos debe finalizar al ingresar un valor negativo en el nuacutemero de cuentaSe pide confeccionar un programa que lea los datos de las cuentas corrientes e informea) De cada cuenta nuacutemero de cuenta nombre del cliente y estado de la cuenta seguacuten su saldo sabiendo que Estado de la cuenta `Acreedor acutesi el saldo es lt 0

Deudor si el saldo es lt0Nulo si el saldo es =0

b) La suma total de los saldos acreedores

3 - Se realizoacute un censo provincial y se desea procesar la informacioacuten obtenida en dicho censo De cada una de las personas censadas se tiene la siguiente informacioacuten nuacutemero de documento edad y sexo (femenino o masculino)Se pide confeccionar un programa que lea los datos de cada persona censada (para finalizar ingresar el valor cero en el nuacutemero de documento) e informar a) Cantidad total de personas censadasb) Cantidad de varonesc) Cantidad de mujeres

45 El lazo For

Su formato es

for (inicializacioacuten condicioacuten incremento) instruccioacuten

Y su principal funcioacuten es repetir la declaracioacuten mientras la condicioacuten sea verdadera como en el lazo while Pero ademaacutes el lazo for proporciona posiciones especiacuteficas para contener una declaracioacuten de inicializacioacuten y una declaracioacuten de incremento Entonces este lazo sobre todo es disentildeado

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 45

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 46: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

para realizar una accioacuten repetidora con un contador que es inicializado e incrementado sobre cada iteracioacuten

La forma de trabajar es como sigue

1 La inicializacioacuten es ejecutada Generalmente es un valor inicial que se pone para una variable contadora Esto es ejecutado soacutelo una vez

2 La condicioacuten es evaluada Si es verdadera el lazo sigue si no los finales de lazo y la instruccioacuten son salteados (no ejecutado)

3 La instruccion es ejecutada Pudiendo ser una o un bloque delimitado entre llaves

4 Finalmente independientemente de lo especificado en el campo de incremento es ejecutado y el lazo regresa al paso 2

Veremos un ejemplo de cuenta descendente usando un lazo for

Programa 16

conteo descendente usando forinclude ltiostreamgtusing namespace stdint main () for (int n=10 ngt0 n--) cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINPresione una tecla para continuar

La inicializacioacuten y el campo de incremento son opcionales Ellos pueden permanecer vaciacuteos pero en todos los casos los signos de punto y coma entre ellos deben ser escritos Por ejemplo nosotros podriacuteamos escribir para ( n lt 10) si quisieacuteramos especificar ninguna inicializacioacuten y ninguacuten aumento o para ( n lt 10 n ++) si quisieacuteramos incluir un campo de incremento pero ninguna inicializacioacuten (tal vez porque la variable ya fue inicializada antes)

Opcionalmente usando al operador de coma () podemos especificar maacutes que una expresioacuten en cualquiera de los campos incluidos en un para el lazo como en la inicializacioacuten por ejemplo El operador de coma () es un separador de expresioacuten esto sirve para separarse maacutes que una expresioacuten donde soacutelo una es

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 46

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 47: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

esperada Por ejemplo suponga que quisimos inicializar maacutes que una variable en nuestro lazo

for ( n=0 i=100 n=i n++ i-- ) instrucciones

Este lazo se ejecutaraacute 50 veces si n o i son modificados dentro del lazo

n comienza con un valor de 0 y con 100 la condicioacuten n =i ( n no es igual a i) Como la n es aumentada en uno y la i es disminuido uno la condicioacuten del lazo se hara falso despueacutes del 50 iteraciones cuando tanto la n como i sean iguales a 50

Ejercicios Propuestos

1 - Desarrollar un programa que solicite la carga de 10 nuacutemeros e imprima la suma de lo uacuteltimos 5 valores ingresados

2- Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50)

3 - Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 teacuterminos)Ejemplo Si ingreso 3 deberaacute aparecer en pantalla los valores 3 6 9 hasta el 36

4 - Realizar un programa que lea los lados de 4 triaacutengulos e informar a) De cada uno de ellos queacute tipo de triaacutengulo es equilaacutetero (tres lados iguales) isoacutesceles (dos lados iguales) o escaleno (ninguacuten lado igual)b) Cantidad de triaacutengulos de cada tipoc) Tipo de triaacutengulo del que hay menor cantidad

5 - Se realiza la carga de 10 valores enteros por teclado Se desea conocer

a) La cantidad de valores negativos ingresadosb) La cantidad de valores positivos ingresadosc) La cantidad de muacuteltiplos de 15d) El valor acumulado de los nuacutemeros ingresados que son pares

6 - Se cuenta con la siguiente informacioacutenLas edades de 50 estudiantes del turno mantildeanaLas edades de 60 estudiantes del turno tarde

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 47

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 48: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Las edades de 110 estudiantes del turno nocheLas edades de cada estudiante deben ingresarse por tecladoa) Obtener el promedio de las edades de cada turno (tres promedios)b) Imprimir dichos promedios (promedio de cada turno)c) Mostrar por pantalla un mensaje que indique cual de los tres turnos tiene un promedio de edades mayor

7Resolver la Ecuacioacuten X2 + Y 2 = Z2

Para valores de X Y Z que varian desde 1 a 25

46 La instruccion break

Usando Break podemos interrumpir la ejecucioacuten de un lazo incluso si la condicioacuten for no es verdadera Esto puede ser usado para terminar un lazo infinito y obligarlo a terminar antes de su finalizaciograven normal iquestPor ejemplo vamos a parar el conteo descendente antes de su final normal (tal vez debido a un error de comprobacioacuten de la maquina)

Programa 17

ejemplo de uso de break

include ltiostreamgtusing namespace std

int main () int n for (n=10 ngt0 n--) cout ltlt n ltlt if (n==3) cout ltlt contador interrumpidon break system(ldquopauserdquo)

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 48

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 49: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

return 0

Ejecucion del programa

10 9 8 7 6 5 43 contador interrumpido Presione una tecla para continuarhelliphelliphelliphellip

47 Instruccion continue

La instruccioacuten hace que el programa salte las instrucciones siguientes del lazo como si el final del bloque hubiese sido alcanzado ocasionando que se regrese al inicio de la iteracioacuten siguiente Por ejemplo vamos a saltar el nuacutemero 5 en nuestra cuenta regresiva

Programa 17

ejemplo de la instruccion CONTINUEinclude ltiostreamgtusing namespace std

int main () for (int n=10 ngt0 n--) if (n==5) continue cout ltlt n ltlt cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 4 3 2 1 FINPresione una tecla para continuar

48 La instruccion goto Goto permite hacer un salto absoluto a otro punto en el programa deberiacutea usarse con precaucioacuten ya que su ejecucioacuten causa un salto incondicional ignorando cualquier tipo de limitaciones cercanas

El punto de destino es identificado por una etiqueta que es usada como un argumento para la instruccioacuten goto Una etiqueta es hecha de un identificador vaacutelido seguido de un doble punto ()

Por lo general esta instruccioacuten no tiene ninguacuten empleo concreto en programacioacuten estructurada u orientada a objetos aparte de aquellos de lo que los aficinados a los programas de bajo nivel pueden encontrar para ello Por ejemplo aquiacute estaacute nuestro lazo de cuenta regresiva que usa goto

Programa 18

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 49

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 50: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

goto uso del goto

include ltiostreamgtusing namespace std

int main () int n=10 lazo cout ltlt n ltlt n-- if (ngt0) goto lazo cout ltlt FINn system(ldquopauserdquo) return 0

Ejecucion del programa

10 9 8 7 6 5 4 3 2 1 FINpresione una tecla para continuar

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 50

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa
Page 51: GUIA_C++

LENGUAJE DE PROGRAMACION I DEV C++

Ing Javier Echegaray Rojo Ing Wilder Romaacuten Munive Pag 51

  • CAPIacuteTULO 1 INTRODUCCIOacuteN AL LENGUAJE C++
    • 11 ESTRUCTURA BAacuteSICA DE UN PROGRAMA
      • CAPITULO 2 VARIABLES TIPOS DE DATOS EN C++
        • 21 Identificador definicioacuten
        • 22 Identificadores C++
        • 23 TIPOS DE DATOS FUNDAMENTALES
        • 24 VARIABLES
        • 25 Inicializacion de variables
        • 26 Introduccioacuten a cadenas
        • 27 Literales
        • 28 Numeros Enteros
        • 29 Nuacutemeros de Punto flotante
        • 210 Caracter y cadena de caracteres
        • 2 11 Literales Booleanos
        • 212 Constantes definidas (define)
        • 213 Declaracion de constantes (const)
        • 214 OPERADORES
          • 2141Asignacion (=)
          • 2142 Operadores Arimeticos ( + - )
          • 2143 Operadores compuestos
          • 2144 Incremento y decremento(++ --)
          • 2145 Operadores Relacionales y de Igualdad
          • 2146 Operadores logicos ( ampamp || )
          • 2147 OPERADOR ||
          • 2148 OPERADOR CONDICIONAL ( )
          • 2149 Operador Coma ( )
          • 21410 Operador tipo Casting ( Conversioacuten de tipo de datos)
            • 215 Jerarquia de operadores
              • CAPITULO 3 ENTRADA Y SALIDA BAacuteSICA
                • 31 Salida standar(cout)
                • 32 Entrada estandar(cin)
                  • CAPITULO IV ESTRUCTURAS DE CONTROL
                    • 41 Estructura Condicional if else
                      • 1 - Se ingresan tres notas de un alumno si el promedio es mayor o igual a once mostrar el mensaje Promocionado Tener en cuenta que para obtener el promedio debemos operar suma=nota1+nota2+nota3 y luego hacer promedio=suma3 3-Una compantildeiacutea de alquiler de automoacuteviles sin conductor desea un programa para emitir las facturas de sus clientes teniendo presente los siguientes puntos
                      • Cantidad fija de $500 si no rebasan los 300 Kms
                      • Distancia recorrida mayor de 300 Kms
                      • Si Dist gt 300 Kms y lt= 1000 Kms se pagaraacute $500 + $30 por Km extra
                      • Si Dist gt 1000 Kms se pagaraacute $500 $30 por Km extra hasta los primeros 1000 Kms y $20 por Km extra a partir del Km 1000
                        • 42 La estructura selectiva switch
                        • 43 El lazo while
                        • 44 El lazo do-while
                        • 45 El lazo For
                        • 46 La instruccion break
                          • Ejecucion del programa
                            • 47 Instruccion continue
                              • Ejecucion del programa
                                • 48 La instruccion goto
                                  • Ejecucion del programa