Está en la página 1de 110

UNIVERSIDAD DE ORIENTE

NÚCLEO DE MONAGAS
INGENIERIA DE SISTEMAS
PROGRAMACIÓN ORIENTADA A OBJETOS
SECCION 01

Profesor: Estudiante:
Marcano Yunelkis, C.I: 19.603.291

Maturín, 02 de mayo de 2012


Los primeros computadores se programaban en realidad recableándolos. Esto prácticamente
equivalía a reconstruir todo el computador cuando se requería de un nuevo programa. La
tarea era simplificada gracias a un panel de contactos (muy similar al de los primeros
conmutadores telefónicos que eran atendidos por operadoras, y que hoy en día sólo
llegamos a ver en viajes películas en blanco y negro.) con el que era posible enlazar
circuitos para crear secciones dedicadas a una actividad específicas. La programación del
computador se llevaba a cabo, literalmente, reconstruyéndolo.

Mientras que el recablear al computador establecía una clara distinción entre los datos
(representados por los estados o señales eléctricas que serín mantenidas por los relevadores
o a través de los bulbos que conformaban al computador) y el programa (las conexiones
que serían establecidas entre estos componentes del hardware) la labor de "programación"
requería sino del propio creador del computador si a un verdadero experto y conocedor de
electrónica, principios de lógica digital y del problema mismo. En 1944, J. von Neumann se
unió al proyecto ENIAC y propuso codificar las instrucciones como números y
almacenarlos en la memoria de la maquina. La primera computadora en usar el citado
concepto fue la famosa EDVAC (Electronic Discrete-Variable Automatic Computer, es
decir “computadora automática electrónica de variable discreta, desarrollada por Von
Neumann, Eckert y Mauchly. Los programas almacenados dieron a las computadoras
flexibilidad y confiabilidad, haciéndolas más rápidas y menos sujetas a errores que los
programas mecánicos.

Esto vino a cambiar con el concepto del programa almacenado, un concepto teórico muy
importante que fue establecido por el matemático John von Neumann el 30 de junio de
1945 en un borrador sobre el diseño de la EDVAC. A diferencia de los primeros
computadores, von Neumann proponía que tanto el programa como sus datos fueran
almacenados en la memoria del computador. Esto no solo simplificaba la labor de
programación al no tener que llevar a cabo el recableado del computador sino que además
libraba y generalizaba el diseño del hardware para hacerlo independiente de cualquier
problema y enfocado al control y ejecución del programa. Este concepto fue tan importante
y decisivo que dio lugar al concepto de la arquitectura de von Neumann, aún presente en
nuestros días.

“La arquitectura de un computador define su comportamiento funcional”

Von Neumann estableció en 1945 un modelo de computador, que se considera todavía


como la arquitectura básica de los computadores digitales moderno. En la figura se muestra
la estructura general de un computador con arquitectura Von Neumann.
Las computadoras con esta arquitectura constan de cinco partes: La unidad aritmético-
lógica o ALU, la unidad de control, la memoria principal, un dispositivo de entrada/salida y
el bus.

I. Unidad Aritmético-Lógica (U. A. L.).


 Realiza las operaciones elementales, tanto aritméticas como lógicas, que
implementa el computador: suma, resta, AND, OR, NOT, etc.
 Los datos con los que opera se leen de la M. P., y pueden almacenarse
temporalmente en los registros que contiene la U. A. L.

II. Unidad de Control (U. C.).

 Ejecuta las instrucciones máquina almacenadas en la M. P. Para ello:

a. Captura las instrucciones de la MP y las decodifica.


b. Según el tipo de instrucción, genera las señales de control a todas las unidades del
computador para poder realizar su ejecución. En la figura estas señales se indican
mediante trazos.
Si la instrucción opera con datos deberá acceder a la MP para transferirlos a la
UAL.
Proporciona las señales necesarias a la UAL para que realice la operación
correspondiente a la instrucción.
Controlará las Unidades de Control de E/S si la instrucción accede a alguno de estos
dispositivos.
c. Tiene un registro apuntador, denominado Contador de Programa, que en cada
instante contiene la dirección de la próxima instrucción a ejecutar.

III. Memoria Principal (M. P.)


Se compone de un conjunto de celdas del mismo tamaño (número de bits). Cada celda está
identificada por un número binario único, denominado dirección.

Una vez seleccionada una celda mediante su correspondiente dirección, se pueden hacer
dos operaciones:

 Lectura. Permite conocer el valor almacenado anteriormente.


 Escritura. Almacena un nuevo valor.

En la arquitectura Von Neumann, la M. P. almacena tanto las instrucciones máquina como


los datos.

IV. Unidad de Entrada/Salida (U. E/S.).

 Realiza la transferencia de información con las unidades externas, denominadas


Periféricos: unidades de almacenamiento secundario (disco duro, disquette, cinta, etc),
impresoras, terminales, etc.
 Generalmente los programas y los datos tienen un tamaño elevado por lo que no se
pueden almacenar por completo en la MP. Por otra parte, el usuario de un computador
tiene la necesidad de ejecutar varios programas, simultáneamente.
Por ello, se utiliza la memoria secundaria (MS), que se considera como un periférico.
La MS es más lenta que la principal, pero tiene una mayor capacidad de
almacenamiento.
 Como para ejecutar un programa este debe estar en la M.P., la U. C. genera las señales
necesarias a la U. E/S. para transferir los datos y los programas desde la M.S. a la M.P.
 Además la U. E/S. permite otras operaciones, como visualizar en una pantalla
(terminal) o imprimir en papel (impresora) los resultados obtenidos.

V. Buses.

 Además de las 4 unidades básicas, en un computador existen conjuntos de señales, que


se denominan buses, y cuya función es transferir las instrucciones y los datos entre las
distintas unidades.
 Estos buses se representan en la figura mediante flechas de trazo continuo. Se suelen
distinguir tres tipos de buses:

a. Bus de datos: se utiliza para mover datos entre el procesador y la memoria, entre el
procesador y los dispositivos de entrada-salida (puertos) o entre la memoria y los
dispositivos de entrada-salida.
b. Bus de direcciones: para indicar la dirección de memoria o puerto sobre la que
quiere leer o escribir.
c. Bus de control: se utiliza para habilitar el dispositivo sobre el que se va a leer o
escribir e indicar cuál de estas operaciones se va a realizar

La Unidad Central de Proceso (U.C.P.) Es el conjunto formado por la U.C., los registros (es
una memoria de alta velocidad y poca capacidad, integrada en el microprocesador, que
permite guardar transitoriamente y acceder a valores muy usados, generalmente en
operaciones matemáticas) y la U.A.L., es decir es el bloque encargado de ejecutar las
instrucciones.

Con la aparición de los circuitos integrados, y en concreto a partir de los años 70, cuando la
tecnología alcanzó el nivel de integración adecuado, se integró en una sola pástilla la
U.C.P. A este circuito integrado se le denomina Microprocesador.

En general, la función esencial de la máquina de Von Neumann, como la de cualquier


computador, es procesar información. Para ello, necesita saber el tipo de procesamiento y
los datos que utilizará. El tipo se especifica mediante un programa, que es un conjunto de
instrucciones u órdenes elementales, denominadas instrucciones máquina, que ejecuta el
computador (Aritméticas: suma, resta, multiplicación, división..., Lógicas: AND, OR,
NOT, XOR ..., Transferencia de datos: cargar, almacenar, transferir ..., Saltos y
Bifurcaciones condicionales, etc). Por tanto, se necesita un soporte que almacene tanto el
programa como los datos. El bloque de Memoria Principal interna es el que realiza esta
función.

Una computadora con esta arquitectura realiza o emula los siguientes pasos
secuencialmente:

 Enciende el computador y obtiene la siguiente instrucción desde la memoria en la


dirección indicada por el contador de programa y la guarda en el registro de instrucción.
 Aumenta el contador de programa en la longitud de la instrucción para apuntar a la
siguiente.
 Decodifica la instrucción mediante la unidad de control. Ésta se encarga de coordinar el
resto de componentes del ordenador para realizar una función determinada.
 Se ejecuta la instrucción. Ésta puede cambiar el valor del contador del programa,
permitiendo así operaciones repetitivas. El contador puede cambiar también cuando se
cumpla una cierta condición aritmética, haciendo que el ordenador pueda 'tomar
decisiones', que pueden alcanzar cualquier grado de complejidad, mediante la aritmética
y lógica anteriores.
 Vuelve al paso 2
La arquitectura de Von Neumann se caracteriza o se basa en tres conceptos:

 Las instrucciones y los datos se almacenan en una misma memoria de lectura y


escritura.
 El contenido de la memoria se direcciona por localidad, es decir, por la posición que
ocupa y no por el tipo de datos.
 La ejecución de las instrucciones es secuencial. Después de una instrucción se ejecuta la
ubicada en la siguiente posición de la memoria principal. No obstante, se puede
modificar el orden de ejecución mediante instrucciones específicas.

El término arquitectura de von Neumann se acuñó a partir del memorando First Draft of a
Report on the EDVAC (1945) escrito por el conocido matemático John von Neumann en el
que se proponía el concepto de programa almacenado. Dicho documento fue redactado en
vistas a la construcción del sucesor de la computadora ENIAC y su contenido fue
desarrollado por John Presper Eckert, John William Mauchly, Arthur Burks y otros durante
varios meses antes de que von Neumann redactara el borrador del informe. Es por ello que
otros tecnólogos como David A. Patterson y John L. Hennessy promueven la sustitución de
este término por el de arquitectura Eckert-Mauchly.
REFERENCIAS BIBLIOGRAFICAS

 Arquitectura de Computadora de Von Neumann. (2012). [pagina web en línea]

Disponible en: www.seccperu.org/node/187

 Tema 1 Introducción a los computadores. (2012). [pagina web en línea]

Disponible en: cristobaldominguez.com/.../introduccion%20computadores.%20UCO...


Formato de archivo: PDF/Adobe Acrobat

 Principia - Arquitectura de Computadores: Capítulo III. (2012). [pagina web en línea]

Disponible en: www. homepage.mac.com/eravila/computerII.html

 Maquina de Von Neumann. (2012). [pagina web en línea]

Disponible en: www.slideshare.net/jcmoreno/22-maquinade-von-neumann

FUNDAMENTOSDE PROGRAMACIÓN

Asignatura correspondiente al plan de estudiosde la carrera de Ingeniería Informática

UNIDAD 7

OPERADORES yESTRUCTURAS de CONTROL en C++

Ing. Horacio Loyarte ® 2008

Unidad 7 2

Ingeniería Informática

Fundamentos de Programación 2008

UNIDAD 7

Expresiones, operadores yestructuras de control en C++

Resumen de Conceptos

Introducci

ón

Hemos estudiado las estructuras de control desde el punto de vista algor

tmico.Ya conocemos entonces para que sirve cada una de estas estructuras(secuenciales,
condicionales y repetitivas) y que tipo de problemas algor

ítmicos

podemos resolver con ellas. En esta unidad nos proponemos desarrollar en queforma se
implementan las estructuras de control en el lenguaje C++.B

ásicamente aprenderemos las equivalencias entre la sintaxis del pseudocódigo

la sintaxis del lenguaje C++. Usted podr

á apreciar que estas equivalencias son

muy simples y en muchos casos se limitan a casi una traducci

ón entre el

castellano (pseudoc

ódigo) y el inglés (C++l). Por ejemplo, la estructura que

conocemos como

Mientras

hacer

se traducir
á en

while

.Antes de introducirnos en las estructuras de control de C++, estudiaremos laimportancia de


los operadores, su sintaxis y su jerarqu

ía. Con ellos podremos

construir expresiones esenciales para el planteo de las estructuras de control.Las actividades


de esta unidad est

án diseñadas para trabajar con el e

ntornointegrado de C++ Builder en modo consola. La mayor parte del tiempo de


estudioconsistir

á en actividades de programación. ¡No hay mejor forma de aprender la

sintaxis de un lenguaje de programaci

ón que programando!
Unidad 7 3

Ingeniería Informática

Fundamentos de Programación 2008

Expresiones

Toda expresi

ón consiste en

un conjunto de operandos ligados por operadores.

Utilizaremos expresiones en C++ habitualmente para efectuar c

álculos,
relaciones, asignaciones, etc.Para plantear expresiones en C++ debemos conocer los
numerosos operadoresque posee este lenguaje.

Operadores

Operadores Aritméticos

Como su nombre lo indica, los operadores aritm

éticos nos permiten efectuar

álculos aritméticos. La

jerarquía o precedencia

de estos operadores es id

éntica

a la que empleamos en el

álgebra de números. Esta jerarquía se puede alterar

empleando par

éntesis.

Operador En tipos Enteros En tipos Reales+

ímbolo + unario

ímbolo + unario

ímbolo

unario s

ímbolo

unario

suma suma

resta resta

producto producto

divisi

ón entera

divisi

ón en punto flotante

resto de la divisi

ón entera

NA (no aplicable)

++

incremento NA

--

decremento NASe debe tener en cuenta que las operaciones algebraicas tienen
asociatividad deizquierda a derecha pero respetando la precedencia de los operadoresaritm

éticos.

Ejemplos:

10 + 7


4

arroja como resultado

13

. Se

resuelve:

( 10 + 7 )

porque ante igual prioridad de operadores se asocia de izquierda a derecha.

6+2*9

arroja como resultado

24

. Se resuelve:

6+(2*9)

porque el operador producto tiene prioridad (precede) al operador de la suma.

21 / 4

arroja

(entero)

20.0 / 4.0

arroja

5.0

(punto flotante)

21 % 4

arroja
1

(entero)

++x

incrementa en

el valor de

xx++

toma el valor de

y luego lo incrementa a en

1
Unidad 7 4

Ingeniería Informática

Fundamentos de Programación 2008

--x

decrementa en

el valor de

xx--

pos

decrementa en

el valor de

xNota

: obs

érvese en los 2 ejemplos siguientes la diferencia entre los operadores

de incremento y decremento cuando preceden a una variable y cuando lasuceden.

int n=2;cout<< n++ ;

/*

Se visualiza un 2. C++ envía el contenido de

a la salida através de cout y luego incrementa en 1 a

*/

int n=2;cout << ++ n ;

/* Se visualiza un 3. C++ incrementa en 1 a

n
y luego muestra el nuevo valor de

*/

Operadores de asignación

El operador

permite asignar el resultado de la expresi

ón de la derecha a la

variable de la izquierda.

x = 130 ;

Debemos observar que este operador es asociativo por la derecha, por lo cualpodemos
hacer asignaciones m

últiples o simultáneas.

a = b = c = 30 ;

Esto permite asignar simult

án

eamente a las tres variables el valor 30. Elcompilador realiza la asociaci

ón del modo siguiente:

a = (b = (c = 30))

. Debeobservarse que para C++ la proposici

ón

c = 30

tiene doble sentido: 1) setrata de una asignaci

ón y 2) se trata de una exp

resi

ón que arroja el resultado


30

cout << ( n = 5 ) ;

// asigna 5 a la variable n y visualiza 5 (resultado de laexpresión)

Operadores relativos de asignación

C++ dispone de operadores relativos, que permiten hacer m

ás eficiente el código

ejecutable resultante de la compilaci

ón

Operador Asignación abreviada Asignación no abreviada+ =

x+=yx=x+y

-=

x-=yx=x-y

*=

x*=yx=x*y

/=

x/=yx=x/y

%=

x%=yx=x%y
Unidad 7 5

Ingeniería Informática

Fundamentos de Programación 2008

Operadores Relacionales

C++ dispone de operadores relacionales, cuyo concepto es id

éntico al que
poseen en el

álgebra de números. Su simbología también es similar, a excepción

de los operadores

igual que

distinto que

como veremos a continuaci

ón.

Estos operadores nos permitir

án plantear e

xpresiones relacionales, las cuales alser evaluadas arrojar

án un valor de verdad:

verdadero

falso

. C++ dispone delvalor

int

cero (0 ) para representar al valor

falso

y de un valor

int

distinto decero para

verdadero

Valor de verdadRepresentación enC++


FalsoVerdaderoCeroDistinto de Cero

Los operadores relacionales permiten relacionar (comprara) operandos de tiposcompatibles

Operador Significado Ejemplo==

Igual que a == b

!=

Distinto que a != b

<

Menor que a < b

>

Mayor que a > b

<=

Menor o igual que a <= b

>=

Mayor o igual que a >= bUtilizaremos expresiones relacionales y l

ógicas para varias estructuras de control

de C++ que nos permitir

án plantear decisiones en el programa.

Los operadores relacionales se asocian de izquierda a derecha y tienen menorprioridad que


los operadores aritm

éticos por lo tanto una expresión del tipo:

a +b < 10 * c

equivale a

(a + b) < (10 * c)

Es posible asignar el resultado de una expresi

ón relacional a una variable:

int m = 12 + 3 <= 10
// asigna cero

(falso)

a la variable entera

Operadores Lógicos

Los operadores l

ógicos propiamente dichos de C++ son la conjunción o and

&&

), la disyunci

ón u or (

||

) y la negaci

ón o not (

). Conceptualmentefuncionan de igual forma que en la l

ógica algebraica.

Recordemos que la conjunci

ón (

&&

) arroja un resultado verdadero (

uno

) solo siambos operandos son verdaderos; la disyunci

ón (

||
) solo es falsa si ambosoperandos son falsos; y la negaci

ón (

) es un operador unario que invierte elvalor de verdad del operador afectado.


Unidad 7 6

Ingeniería Informática

Fundamentos de Programación 2008

Operador Significado Ejemplo!


Negaci

ón ( no )

! a <= b

&&

Conjunci

ón ( y )

a < b && n==100

||

Disyunci

ón ( o )

x == 10 || a != c

Evaluación en cortocircuito

C++ dispone la evaluaci

ón de una expres

ón lógica de izquierda a derecha. Si el

operando de la izquierda es suficiente para determinar el resultado de laproposici

ón, no se evalúa el operando de la derecha. Por ejemplo:

6 < 3 && z== 4

el operando

z == 4

no llegar

á a evaluarse pues

6<3

ya decidi
ó el

resultado

cero

(falso) de toda la proposici

ón.

Operadores de Manipulación de Bits

Estos operadores tratan a la informaci

ón de cada operando como un conjunto de

bits. Solo se pueden emplear con operandos de tipo discreto y no con n

úmeros

de punto flotante (reales). Suelen emplearse en el acceso a los bits individualesde los datos
en memoria o para operar sobre la memoria de video en ciertasrepresentaciones gr

áficas.

Operador Significado Ejemplo&

Y (and)1110 0011

&

1010 01011010 0001

O (or)1110 0011

1010 01011110 0111

O excluyente (xor)1110 0011

1010 01010100 0110

~
No (not)

1110 00110001 1100

>>

Desplazam. de bits aizquierda

<<

Desplazam. de bits aizquierdaLa ventaja de estos operadores es que son eficientes y se


equiparan envelocidad de ejecuci

ón al lenguaje ensamblador.

Otros Operadores

C++ dispone de otros operadores que describiremos m

ás adelante conforme

avancemos en el desarrollo de nuevos temas. Por ejemplo: operador dedesplazamiento, el


de direcciones, operador condicional, operador de

ámbito de

resoluci

ón, operador coma, operador ( ) , operador [ ].

Precedencia de Operadores en C++

La precedencia o prioridad de un operador determina el orden de aplicaci

ón de

los operadores de una expresi

ón. En la tabla siguiente se indican los grupos de

operadores seg

ún orden de prioridad.
Unidad 7 7

Ingeniería Informática

Fundamentos de Programación 2008

Proiridad ycategoríaOperador Función o significadoAsociati-vidad

1.

(Prioridad m

ás
alta)

( )[ ]

::.

Llamada a funci

ón

Sub

índice de arreglos

Selector indirecto de miembroSelector de

ámbito de

resoluci

ón

Selector directo de miembroI-D2.Unarios

!~+-++--&*sizeof newdelete

Negaci

ón lógica

Complemento a uno (bits)M

ás (unario)

Menos (unario)IncrementoDecrementoDirecci

ón

Indirecci

ón

Tama

ño del operando en bytes

Alocaci
ón dinámica en memoria

Eliminaci

ón dinámica

D-I3.Acceso amiembros

Lee o modifica el valorapuntadoAccede a un miembro de unobjeto apuntadoI-


D4.Multiplicativos

* /%

Multiplicaci

ón

Divisi

ón entera o flotante

Resto de la divisi

ón entera

(m

ódulo)

I-D5.Aditivos

+-

ás binario

Menos binarioI-D6.Desplazamiento

>><<

Desplazamiento a la derechaDesplazamiento a la IzquierdaI-D7.Relacional

<<=>>=

Menor queMenor o igual queMayor queMayor o igual queI-D8.Igualdad


==!=

Igual queDistinto queI-D9.

&

And (manipulaci

ón de bits)

I-D10.

Xor (manipulaci

ón de bits)

I-D11.

Or (manipulaci

ón de bits)

I-D12.

&&

Conjunci

ón lógica

and I-D13.

||

Disyunci

ón lógica or

I-D14.Condicional

?:

a ? x : y (significa: if a thenb,else c )D-I15.Asignaci

ón
=*= /=%=+=

D-I
Unidad 7 8

Ingeniería Informática

Fundamentos de Programación 2008

-=&=^=| =<<=>>=

16. Coma

(prioridad m

ás baja)

Evaluaci

ón múltiple

Si en una expresi

ón aparecen operadores consecutivos de igual prioridad debe

considerarse la forma de asociarlos para resolver la expresi

ón. Por ejemplo en

aritm

ética: ante la presencia de operadores de suma ( + ) y resta (

- ), los cualestienen igual prioridad, C++ asocia de izquierda a derecha como corresponde al

álgebra de números. La expresión

a+b-c

se resuelve:

(a+b)-c

Deben tenerse en cuenta las reglas siguientes para el planteo de expresiones:

Todos los operadores de un mismo grupo tienen igual prioridad yasociatividad.


Si dos operadores se aplican a un operando, se aplica antes el de mayorprioridad

Asociatividad I-D significa que primero se aplica el operador de laizquierda y luego el


siguiente hacia la derecha. Asociatividad D-Isignifica hacer lo contrario.

La precedencia o prioridad de operadores puede alterarse con lospar

éntesis, quienes tienen máxima prioridad.

Estructuras de Control

C++ dispone de varias estructuras para controlar la l

ógica de ejecución de los

programas. Estas estructuras pueden clasificarse en:

condicionales o selectivas,repetitivas y de interrupción o salto no condicional

Tipo de estructura Sentencia C++

Repetitiva

whiledo-whilefor

Condicional o selectiva

if-elseswitch

Salto no condicionalo interrupci

ón

breakcontinue
Unidad 7 9

Ingeniería Informática

Fundamentos de Programación 2008

while

Las acciones abarcadas por esta estructura se ejecutan repetidamente mientrasla expresi

ón lógica arroje un valor distinto de cero (verdadero).

Sintaxis Ejemplo

while (expresión lógica ){acciones}int a=0;while ( a<100 ){cout << a<<

\n


;a++;}

do-while

Las acciones abarcadas por esta estructura se ejecutan repetidamente hastaque la expresi

ón lógica arroje el resultado cero (falso)

Sintaxis Ejemplo

do{acciones} while (expresión lógica );int b=0;do{b++ ;cout << b<<

\n

;} while ( b<100 )

Sentencia for

Las acciones abarcadas por esta estructura se ejecutan repetidamente hastaque la exp2
arroje cero (falso); exp1 hace de expresi

ón de inicialización y se

ejecutan una

única vez; exp3 se realiza al final del grupo de acciones y

generalmente se emplea para incrementar la variable que controla la estructura

Sintaxis Ejemplo

for (exp1; exp2; exp3){acciones}int a=0;for ( a=0 ; a<100 ; a++ )cout << a<<

\n

El operador coma y la sentencia for

C++ permite a trav

és del operador coma ( , ) realizar más de una instrucción


donde generalmente se admite una.Por ejemplo, en el ciclo for, la primer expresi

ón es usada comúnmente para

inicializar una variable y la tercer expresi

ón para modificar la variable que

controla la estructura. Empleando el operador coma, podemos efectuar m

ás de

una inicializaci

ón.
Unidad 7 10

Ingeniería Informática

Fundamentos de Programación 2008

Ejemplo

int i, j;for (i=0, j=10; i < 10 ; i++, j--)cout << i <<


<< j << endl;

If-else

Se eval

úa la expresión lógica planteada a continuación del if y si es distinta de

cero (verdadero) se realizan las acciones indicadas a continuaci

ón; si la

expresi

ón lógica es cero (falso) se rea

lizan las acciones a continuaci

ón del else.

En esta estructura la salida por cero (falso) puede obviarse; en tal caso, si laexpresi

ón arroja cero (falso) no se ejecutará acción alguna.

Sintaxis Ejemplo

if (expresión lógica)acción 1;elseacción 2;int c=0;if ( c==200 )c = c/2;else c = 2*c;

switch

Esta sentencia permite efectuar una selecci

ón entre múltiples opciones en base

al valor de una variable de control que nos permite gobernar la estructura. Essimilar a la
sentencia case o select de otros lenguajes o el seg

ún que

empleamos en pseudoc

ódigo.

Sintaxis Ejemplo

switch (expresión ){case valor1: acción_1;break;case valor2: acción_2;break;case valor3:


acción_3;break;....................default: acción_m;}cin >> mswitch ( m ){case

: m++break;case

: m=2*m;break;case

3´: m = m / 2;break;default : m = 100;break;}

La acci

ón propuesta a continuación de default se ejecutará si el valor de la

expresi

ón de control no coincide con ninguno de los valores propuestos en la

lista. La opci

ón default es opcional; si no se indica y el valor de la expresión no

aparece en la lista propuesta, ninguna acci

ón será ejecutada.

break y continue

Ambas sentencias interrumpen la ejecuci

ón del grupo de acciones abarcadas por

una estructura repetitiva, saltando al final de la estructura.Luego de la interrupci

ón,

break

, contin
úa con la sentencia que sigue a la

iteraci

ón, abandonando la estructura de repetición;

continue

en cambio, salta al
Unidad 7 11

Ingeniería Informática

Fundamentos de Programación 2008

final de la estructura de repetici

ón pero no la abandona, y permite continuar con


la pr

óxima iteración.

Ejemplo de

break

Ejemplo de

continue

int a = 0;while ( a < 5 ){a++;if a == 4 break;cout << a;}int a = 0;while ( a < 5 ){a++;if
a == 4 continue;cout << a;}

Salida: 1 2 3 Salida: 1 2 3 5

exit( )

Esta funci

ón del lenguaje C++ permite interrumpir un programa, devolviendo un

valor al entorno o plataforma empleado (DOS, UNIX, LINUX).Se halla definida en

stdlib.h

por lo cual se debe incluir a este archivo en lacabecera del programa y devuelve el valor de
su argumento:

void exit( int )

El valor entero que retorna corresponde a cero si se ha interrumpido el programacon

éxito. Un código distinto de cero indica que la interrupción del programa se

ha debido a un error.

Ejemplo

cout<<

Desea continuar operando con el programa (S/N)?


;cin >> resp ;resp = toupper( resp ); //

pasa a mayúsculas

if (resp==´S´) exit(0);

Funciones de biblioteca de C++

ANSI/ISO C++ dispone de una interesante variedad de funciones de biblioteca.Ellas nos


ahorran un importante esfuerzo a la hora de efectuar ciertos c

álculos.

El programador C++ solo debe considerar el tipo de argumento requerido, el tipode


resultado que devuelve y el nombre del archivo de inclusi

ón donde se halla el

prototipo de la funci

ón p

ara indicarlo en la sentencia #

include

correspondiente.M

ás adelante aprenderemos a crear nuestras propias funciones.

Ejemplo

#include <iostream.h>#include <math.h> //

archivo con el prototipo de sin(x)y M_PI

int main ( ) {int ang;cout <<

Ingrese un ángulo en grados:

;cin >> ang;float angr = ang*M_PI/180; //

pasa a radianes el ángulo

cout <<

El seno del ángulo es:

<< sin(angr);return 0; }
Unidad 7 12

Ingeniería Informática

Fundamentos de Programación 2008

aacbb

24

2


3)12ln(

52



ax xe x

ax

Actividades

Ejercicios

Ejercicio 7.1

Utilice la notaci

ón de los operadores aritmé

ticos y funciones matem

áticas que

provee

C++ para escribir las siguientes expresiones. Si le facilita la tarea, puedeutilizar variables
auxiliares.

a)

b)

c)

Ejercicio 7.2

Utilice los operadores aritm

éticos de C++

para plantear las expresiones que seproponen coloquialmente. Si es posible exprese tambi

én la forma abreviada

correspondiente.a) El cociente entre m y n.b) El resto de la divisi

ón entera entre p y q.
c) Incrementar x en 1.d) Incrementar x sumando a x el contenido de c.e) Modificar z, asign

ándole el valor que precede a z.

Ejercicio 7.3

Considere las declaraciones de un programa C++, donde se definen lasvariables

x, y, z, u

como se indica abajo:

float x = 4.5; y = 12.3int z = 10; u = 8;char letra =

Determine el resultado de las siguientes expresiones l

ógicas:

a)

x<y

f)

(z>x)&&(letra<'m')||(letra=='h')

b)

(x <= y) || (letra == 'j')

g)

'2' <= letra

c)

letra <= 'G'

h)

('q' < 's') || false


d)

abs(x-y) > 7.0

i)

sin(y-x) <= 1

e)

u++ >= z-- && 1

j)

touper(letra) ==

Ejercicio 7.4

Utilice las variables

x, y, z, u

definidas en el ejercicio anterior para calcular lassiguientes expresiones matem

áticas

a)

++u / 2

f)

2*--u+x/3

b)

letra + 2

g)

letra += 1

c)
(x-y)/2+abs(u-y)

h)

pow( z,3)

d)

3+u%3

i)

x = (x+1 ) / 2

e)

u++ / 2

j)

u += (z<100)

2)sen(

)(

x z aa

e xaeae




Unidad 7 13

Ingeniería Informática

Fundamentos de Programación 2008

Ejercicio 7.5

Observe las siguientes porciones de c

ódigo C++ siguientes. Trate de determinar

la informaci

ón que se obtendrá como salida a través del flujo


cout

a)

int x=50;cout << ++x <<

<< x;cout << x;

b)

int y=100;int z = --y;cout << z <<

<< y;

c)

int y=200;int z = y--;cout << z <<

<< y;

Ejercicio 7.6

A continuaci

ón se plantea una definición de tipo

enumerado

, y un grupo deexpresiones l

ógicas que emplean datos de ese tipo. Determine el resultado de

cada expresi

ón.
enum lenguajes=(fort,cob,bas,pas,ada,cpp,sql)

expresi

ón

resultado------------------ -------------------

cob < pasfort <= ada((int)bas)-- == cob(int)ada < 53==((int)cpp )++

En todos los casos en que el problema proponga escribir un programa, Ud.debe además
salvar en diskette, compilar, --si es necesario-- depurar, y ejecutar (probar) el programa
propuesto.

Ejercicio 7.7

Ingrese un n

úmer

o e informe: a) si es par o impar; b) si es m

últiplo

de 5 y 3 a la vez.

Ejercicio 7.8

Ingrese tres n

úmeros e informe el mayor.

Ejercicio 7.9

Deseamos saber si un estudiante de primer a

ño vota en las próximas elecciones,

para ello debe ser mayor de 18 a

ño

s. Se ingresan la fecha de nacimiento y devotaci

ón con formato día, mes y año. Informe con un mensaje alusivo.

Ejercicio 7.10
Resolver una ecuaci

ón de segundo grado, cuyas soluciones pueden ser reales o

complejas, ingresando los coeficientes a, b y c. Si las ra

íces fueran complejas

mostrarlas en forma bin

ómica (ej:

-2+3i)

Ejercicio 7.11
Unidad 7 14

Ingeniería Informática


Fundamentos de Programación 2008

Escriba un programa C++ que permita ingresar natural N como dato. Obtenertodos los
pares menores a N. Tener en cuenta que el dato puede ser tanto parcomo impar. Debe dar al
usuario la posibilidad de seleccionar por un men

ú la

opci

ón de visualizar el listado:

a) En forma creciente.b) En forma decreciente

Ejercicio 7.12

Leer un n

úmero natural N. Determinar con un mensaje alusivo si es primo.

Ejercicio 7.13

Determine los 1000 primeros primos.

Ejercicio 7.14

Calcular la suma de los N primeros t

érminos

de la serie infinita, que calculaaproximadamente el seno del par

ámetro x.

Se leen como datos N y x.Obtener adem

ás, la diferencia con el valor de

la funci

ón standard que provee

C++.

Ejercicio 7.15

Escribir un programa C++ que exhiba en pantalla el siguiente men


ú:

Diseño de menús en C++CALCULOSA- Ingresar nuevo dato.B- Calcular el doble del


dato.C- Determinar si es par.D- Determinar si es primo.E- Salir.Elija una Opción
(A..E): _

El programa debe resolver las opciones propuestas en el men

ú.

Adem

ás debe validar la entrada de la opción (A..E) indicando un mensaje de

error si corresponde.Si el usuario intenta elegir las opciones B,C,D o E sin haber pasado
antes por A,indicar dicha situaci

ón con un mensaje alusivo, para que vuelva al menú e

ingrese el dato faltante.

Ejercicio 7.16

Escriba todos los caracteres del c

ódigo ASCII. b) Sólo las letras del abecedario

en may

ús

culas. c) Las letras del abecedario en min

úsculas.

Ejercicio 7.17

Complete el programa C++ cuyo cuerpo de sentencias es el siguiente, siendo zuna variable
del tipo enumerado LENGUAJES. El tipo LENGUAJES se hadefinido en el ejercicio 6.
Pruebe el programa en su computadora.

.....int main {.....for (z=fort; z<sql; ++(int)z)cout << z <<

;
xxxx



357

357!!!...............
Unidad 7 15

Ingeniería Informática

Fundamentos de Programación 2008

return 0;} //

fin del programa

Ejercicio 7.18

Una Empresa paga a sus 100 operarios semanalmente de acuerdo con lacantidad de horas
trabajadas, a raz

ón de X pesos la hora hasta 40 hs. y un 50%

ás por todas las horas que pasan de 40. Informar el total de salario a cobrar
por cada trabajador.

Ejercicio 7.19

Exhibir en pantalla 50 datos num

éricos generados al azar entre 1 y

5000.Obtener como salida los siguientes par

ámetros estadísticos: a) desviación

standard de la lista; b) la media; c) los 2 mayores y d) el menor de la lista.

Cuestionario

7.1

¿Qué entiende por expresión?

7.2 Mencione los operadores aritm

éti

cos de C++, su jerarqu

ía o prioridad y la

forma en que se asocian.7.3

¿Cómo plantea en C++ la operación de potencia

? Proponga 2 manerasdiferentes de hacerlo.7.4

¿Qué resultados se obtienen de una expresión lógica o relacional en

C++?.

7.5

¿E

s posible en C++ asignar el resultado de una expresi

ón a una variable
de tipo diferente? Explique.7.6

¿ Qué representa en C++ la proposición siguiente:

x = 23

?. En base asu respuesta determine si tiene sentido la sentencia de salida

7.5

¿E

s posible en C++ asignar el resultado de una expresi

ón a una variable

de tipo diferente? Explique.7.6

¿ Qué representa en C++ la proposición siguiente:

x = 23

?. En base asu respuesta determine si tiene sentido la sentencia de salida:

cout<<(x=23)

7.7

¿ Cuál es el mínimo número de iteraciones que efectúa la estructura de

control: a)

while

b)

do

while

c)

for

?.7.8
¿Es posible en una estructura

for

efectuar m

ás de una inicialización en la

primer expresi

ón? ¿Y más de un incremento en la te

rcer expresi

ón?

7.9 Interprete las sentencias

if

anidadas del recuadro. La opci

ón

else

¿a

cu

ál

if

pertenece?7.10

¿Cuál es la ventaja de emplear

switch

en lugar de varios

if

anidados?
OTRA GUIA

Estructuras de control en c++ 5 marzo 2007

Posted by andreseduardo in progrmacion.

trackback

La Estructura de Selección if

La sentencia if se la como estructura de selección simple y su función es realizar o no


una determinada acción o sentencia, basándose en el resultado de la evaluación de
una expresión (verdadero o falso), en caso de ser verdadero se ejecuta la sentencia.

La estructura de selección if (que se muestra en la figura 5.1) trabaja de la siguiente


manera: si la evaluación de la expresión o expresiones es verdadera ( 1 ) entonces
se ejecuta la sentencia a la cual se refiere la estructura de control if. Si fueran varias
sentencias a las que se refiere la estructura if (como se muestra en la figura 5.2) se
tiene que encerrar todas las sentencias entre llaves ( { } ) y si la evaluación de la
expresión es correcta entonces se ejecuta todas las sentencias contenidas entre las
llaves.
Fig. 5.2Si la evaluación de la expresión o expresiones resultaría falsa (0), entonces no
se ejecuta las sentencias.Por ejemplo si dada la edad de una persona quiero dar un
mensaje de que es o no mayor de edad, suponiendo que una persona mayor de edad
tiene por lo menos 21 años, el procedimiento será el siguiente.

#include <iostream.h>
void main()
{
cout<<"¿Qué edad tienes? \n";
cin>>edad
if ( edad > 20 )
cout<<"Eres mayor de edad" ;
}
#include <iostream.h>void main()
{
cout<<"¿Qué edad tienes? \n";
cin>>edad
if ( edad > 20 )
{ cout<<"Eres mayor de edad";
cout<<"Te estas volviendo viejo ";
}
}

En Pseudocódigo el anterior ejemplo se vería de la siguiente forma:

Inicio
Mostrar “¿Qué edad tienes?”
Leer edad
Si Edad > 20 Entonces
Mostrar “Eres mayor de Edad”
Fin Si
Fin

El diagrama de flujo de la estructura if se muestra en la Fig. 5.3, este diagrama


contiene el símbolo diamante que es llamado el símbolo de decisión, que indica que
decisión se debe tomar. El símbolo de decisión contiene una expresión, y la evaluación
de ésta será verdadera o falsa. Las flechas nos indican los dos posibles caminos que se
pueden tomar.
fig 5.3El anterior diagrama de flujo funciona de la siguiente manera:1. Si Edad es
mayor que 20 (verdadero) entonces se muestra “Eres mayor de Edad”2. Si no
entonces no hace nadaImportante. Para mantener el código legible es bueno dejar
espacios o sangrías en todas las líneas de código que están dentro de una estructura
if / else o if, estas instrucciones se las alinean un poco más a la derecha y así podemos
notar claramente que forman parte de las sentencias que componen a la estructura
if.Esta práctica se puede aplicar a cualquier estructura de control.

ESTRUCTURA DE SELECCIÓN IF / ELSE

La estructura if / else lo que hace es ejecutar una acción si el resultado de la


evaluación de la expresión es verdadera y otra acción si el resultado de la evaluación
es falsa.La diferencia con utilizar sólo la estructura if es que si la expresión evaluada es
verdadera sólo en ese caso se ejecuta una acción de otro modo se pasa de largo. En
cambio en la estructura if / else si la expresión es falsa entonces se ejecuta otra
acción.Fig. 5.4En síntesis lo que hace esta estructura es realizar una acción si la
expresión es verdadera y otra si es falsa.
Aquí tenemos un ejemplo para ilustrar la estructura if / else.

#include <iostream.h>void main()


{
if ( edad > 20 )
cout<<"Eres mayor de edad" ;
else
cout<<"No eres mayor de edad";
}

El diagrama de flujo correspondiente a esta estructura es el siguiente:


fig. 5.5El anterior diagrama de flujo funciona de la siguiente manera:1. Si Edad es
mayor que 20 (verdadero) entonces se muestra: “Eres mayor de Edad”.2. Si no
entonces se muestra: “NO eres mayor de Edad”.

ESTRUCTURAS CONDICIONALES ANIDADAS

Existe el caso de estructuras if, if/else anidadas, que no es más que una estructura if
o if/else dentro de otra.Por ejemplo se desea conocer cuál es el mayor de tres
números A, B ,C.

1: #include <iostream.h>
2: void main()
3: {
4: int A=0, B=0, C=0;
5: cout<<"Ingrese 3 números";
6: cin>>A>>B>>C; //Lectura de valores por teclado
7: if ( A > B )
8: { if (A > C )
9: cout<<"A es el número mayor";
10: else
11: cout<<"C es el número mayor";
12: }
13: else
14: { if ( B > C )
15: cout<<"B es el número mayor";
16: else
17: cout<<"C es el número mayor";
18: }
19: }
Para explicar el funcionamiento del problema anterior se han enumerado todas las
líneas de tal programa.
Suponiendo que los valores ingresados por teclado fueran: A=2, B=1, C=5. El
programa actuaría de la siguiente manera.
El programa se ejecuta secuencialmente hasta la línea 7 donde encuentra una
expresión. Cuando se evalúe la expresión (A > B) línea 7, el resultado es verdadero
(2 > 1), por lo tanto el programa ejecuta la línea 8, en dicha línea encuentra otra
expresión (A > C) y el resultado de evaluar dicha expresión es falso (2 > 5) por lo que
el programa salta hasta la línea 11 y muestra “C es el número mayor”. Luego va a la
línea 12 y verifica el cierre de llaves y finalmente salta hasta la línea 19 siendo la
última línea de ejecución.

Estructura de repeticion forEsta estructura de repetición es más utilizada cuando


sabemos el número de repeticiones que deseamos ejecutar, es parecido al caso de la
estructura while en el caso de límite conocido.
La notación de esta estructura es sencilla y se detalla a continuación

for ( condición de inicio ; expresión ; acción después de cada iteración )


{
sentencia (s);
}

La condición de inicio quiere decir que podemos inicializar una variable que vayamos a
utilizar dentro el cuerpo de la estructura for.
La expresión nos indica que se seguirá iterando mientras la condición sea verdadera.
La acción después de cada iteración viene a ser lo que queremos hacer variar después
de cada iteración, esta variación podría ser un incremento en la variable definida en la
condición de inicio.Al igual que las demás estructuras de control el cuerpo de la
estructura for lleva llaves si este contiene más de una sentencia o instrucción.Ejemplo
Un ejemplo sencillo puede ser que quiero cantar 10 veces la canción del elefante, el
código sería algo así:

#include <iostream.h>
void main()
{
int i;
for( i = 1 ; i<=10 ; i++)
{
cout<<i<<" elefante(s) se balanceaba sobre la tela de una
araña\n”;
cout<<”como veía(n) que resistía fueron a llamar a otro elefante\n ";
}}

El código anterior emitirá por pantalla 10 veces el mensaje de 1 elefante ……. hasta 10
elefantes……
El ejemplo anterior es muy sencillo pero nos muestra el funcionamiento de la
estructura for.

Un ejemplo algo más complejo sería el siguiente problema.


mas ejercicios.

estructura de repeticion do while

Esta estructura de control es muy parecida a la estructura while lo que la hace


diferente es que siempre ejecuta por lo menos una ves el cuerpo de la
estructura, por eso el do, y luego valida una expresión y en función a este
resultado vuelve a iterar o no.
La notación de esta estructura es como sigue:
do
{
sentencias o instrucciones
}
while ( expresión );

Las estructura do/while lleva punto y coma a diferencia de la estructura while.

Ejemplo

Un ejemplo para este caso es el siguiente:


Se desea ingresar por lo menos un nombre de un estudiante por teclado hasta que el
usuario presione ’0′ para salir o cualquier otro número para continuar.

#include <iostream.h>void main()


{
char nom[20]; //Cadena que puede contener 20
caracteres
int rpta=0;
do
{
cout<<”Ingrese el nombre de un estudiante \n”;
cin>>nom;
cout<<"Desea continuar ingresando nombres:
para salir '0'";
cin>>rpta;
}
while(rpta != 0); }

La Estructura de selección múltiple Switch Anteriormente analizamos la estructura if / else en forma

ocasional un algoritmo contendría una serie de decisiones, en las cuales una variable o expresión se

probara por separado contra cada uno de los valores constantes enteros que puede asumir, y se

tomaran diferentes acciones, para esta forma de toma de decisiones se proporciona una estructura

de selección múltiple switch.

La estructura switch esta formada de una serie de etiquetas case y de un caso opcional default, el

siguiente programa utiliza un switch para contar el numero de cada distinta letra de calificacion que

los estudiantes alcanzaron en un examen.

En el programa, el usuario escribe las calificaciones, en letras, correspondiente es a una clase dentro

del encabezado while.CitarWhile ((nota = getchar () ) != EOF)

La asignacion entre parentesis (nota = getchar () ) se ejecuta en primer termino. La asignacion

getchar (proviene de la biblioteca estándar de entrada y salida) lee un carácter del teclado y

almacena este carácter en la variable entera nota. Los caracteres se almacenan por lo regular en

variables de tipo char, sin embargo una característica importante de C es que los caracteres pueden

ser almacenados en cualquier tipo de dato entero, porque en la computadora son representados

como enteros de un bate, por lo tanto podemos tratar a un carácter como si fuera ya sea o un entero

o un carácter dependiendo su uso, en el siguiente programa podemos ver una estructura Switch

También podría gustarte