Chapter 1 – Introduction to Computers and C++ Programming

Download Report

Transcript Chapter 1 – Introduction to Computers and C++ Programming

Capítulo 1 – Introducción a las
Computadoras y a la Programación en C++
Índice del capítulo
1.1
Introducción
1.2
¿Qué es una Computadora?
1.3
Organización de las Computadoras
1.4
Evolución de los Sistemas Operativos
1.5
Computación Personal, Distribuida y Cliente/Servidor
1.6
Lenguajes de Programación
- Lenguajes Máquina, Ensambladores, y de Alto Nivel
- Historia de C y C++
- Biblioteca Estándar de C++
- Java
- Visual Basic, Visual C++ y C#
- Otros Lenguajes de alto nivel
1.7
Historia de Internet y de la World Wide Web
- Historia de Internet
- Historia de la World Wide Web
- Consorcio World Wide Web (W3C)
 2003 Prentice Hall, Inc. All rights reserved.
1
Capítulo 1 – Introducción a las
Computadoras y a la Programación en C++
Índice del capítulo
1.8
Programación Estructurada
1.9
Tendencia Clave de Software: Tecnología de Objetos
1.10
Introducción a la Programación en C++
- Fundamentos del entorno C++ típico
- Un Programa Sencillo: Impresión de 1 Línea de Texto
- Otro Programa Simple: Suma de 2 Enteros
- Conceptos sobre Memoria
- Aritmética
- Toma de Decisiones: Operadores de Igualdad y Relacionales
1.11
Pensando en Objetos: Introducción a la Tecnología de
Objetos y al Lenguaje de Modelado Unificado (UML)
 2003 Prentice Hall, Inc. All rights reserved.
2
3
1.1 Introducción
• Software
– Instrucciones para indicar a la computadora que ejecute
acciones y tome decisiones
• Hardware
• Versión estándar de C++
– Estados Unidos
• Instituto Nacional Americano de Estándares (ANSI: American
National Standards Institute)
– Resto del mundo
• Organización Internacional de Estándares (ISO: International
Organization for Standardization)
• Programación Estructurada
• Programación Orientada a Objetos
 2003 Prentice Hall, Inc. All rights reserved.
4
1.2
¿Qué es una Computadora?
• Computadora
– Dispositivo capaz de efectuar cálculos y tomar decisiones
lógicas
• Programas de Computación
– Conjunto de instrucciones que controlan el procesamiento de
datos de la computadora
• Hardware
– Dispositivos que forman una computadora
• Teclado, pantalla, ratón, discos, memoria, CD-ROM, unidades
de procesamiento, …
• Software
– Programas que se ejecutan en la computadora
 2003 Prentice Hall, Inc. All rights reserved.
5
1.3 Organización de las Computadoras
•
Seis unidades lógicas en una computadora
1. Unidad de entrada
•
•
Sección “receptora”
Obtiene información de dispositivos de entrada
– Teclado, ratón, micrófono, escáner, redes, …
2. Unidad de salida
•
•
•
Sección de “embarque”
Toma la información procesada por la computadora
Sitúa la información en los dispositivos de salida
– Pantalla, impresora, redes, …
– Información usada para controlar otros dispositivos
 2003 Prentice Hall, Inc. All rights reserved.
6
1.3 Organización de las Computadoras
•
Seis unidades lógicas en una computadora
3. Unidad de Memoria (memoria, memoria primaria)
•
•
•
Sección de “almacén” de acceso rápido y capacidad
relativamente baja
Retiene la información introducida a través de la unidad de
entrada
– Disponibilidad inmediata para su procesamiento
Retiene la información procesada
– Hasta que se pueda colocar en los dispositivos de salida
4. Unidad Aritmético Lógica (ALU)
•
•
Sección de “manufactura”
Realiza cálculos aritméticos y toma decisiones lógicas
 2003 Prentice Hall, Inc. All rights reserved.
7
1.3 Organización de las Computadoras
•
Seis unidades lógicas en una computadora
5. Unidad Central de Procesamiento (CPU)
•
•
Sección “administrativa”
Supervisa y coordina las otras secciones de la computadora
6. Unidad de almacenamiento secundario
•
•
•
•
•
Sección de “almacén” a largo plazo y alta capacidad
Almacena
– Programas inactivos o datos
En dispositivos de almacenamiento secundarios
– Discos
Acceso más lento que a memoria primaria
Costo por unidad de almacenamiento menor que memoria
primaria
 2003 Prentice Hall, Inc. All rights reserved.
8
1.4 Evolución de los Sistemas Operativos
• Primeras computadoras
– Procesamiento por lotes monousuario
• Sólo un trabajo o tarea a la vez
• Procesaban los datos en grupos (lotes)
• Pilas de tarjetas perforadas
• Sistemas operativos
– Sistemas de software
– Administraban la transición entre trabajos
– Aumentó el rendimiento
• Cantidad de trabajo que procesa el computador
 2003 Prentice Hall, Inc. All rights reserved.
9
1.4 Evolución de los Sistemas Operativos
• Multiprogramación
– Muchos trabajos o tareas compartiendo los recursos del
computador
– Operación “simultánea” de muchos trabajos
• Tiempo compartido
– Década de los 60
– Caso especial de la multiprogramación
– Usuarios acceden a computadora mediante terminales
• Dispositivos con teclado y pantalla
• Docenas o cientos de usuarios
– Ejecuta una parte pequeña de la tarea de un usuario y luego
procede a darle servicio al siguiente
– Ventaja:
• El usuario recibe respuestas casi inmediatas a sus solicitudes
 2003 Prentice Hall, Inc. All rights reserved.
10
1.5 Computación Personal, Distribuida, y
Cliente/Servidor
• Computadoras personales
–
–
–
–
1977: Apple Computer
Suficientemente económicos para uso personal
1981: Computadora Personal IBM
Unidades independientes
• Redes de computadoras
– Mediante líneas telefónicas
– Redes de área local (LANs)
• Computación distribuida
– El cómputo se distribuye a través de redes hacia los sitios
donde se realiza el trabajo real de organización
 2003 Prentice Hall, Inc. All rights reserved.
11
1.5 Computación Personal, Distribuida, y
Cliente/Servidor
• Estaciones de trabajo (workstations)
– Proporcionan enormes capacidades
– Información compartida a través de redes
• Computación cliente/servidor
– Servidores de archivos
• Almacén común de programas y datos
– Computadoras cliente
• Acceden a los servidores de archivos a través de la red
• UNIX, Linux, sistemas basados en ventanas de
Microsoft
 2003 Prentice Hall, Inc. All rights reserved.
12
1.6 Lenguajes de Programación
1.6.1 Lenguajes máquina, ensambladores y de alto nivel
•
Tres tipos de lenguajes de programación
1. Lenguaje máquina
•
•
•
•
•
•
•
Único lenguaje que computadora entiende directamente
“Lenguaje natural” de computadora
Definido por diseño de hardware
– Dependientes de la máquina
Generalmente constan de cadenas de números
– Se reducen a ceros y unos
Indica a computadoras que efectúen operaciones elementales
– Una a la vez
Engorrosos para el ser humano
Ejemplo:
+1300042774
+1400593419
+1200274027
 2003 Prentice Hall, Inc. All rights reserved.
13
1.6 Lenguajes de Programación
1.6.1 Lenguajes máquina, ensambladores y de alto nivel
•
Tres tipos de lenguajes de programación
2. Lenguaje ensamblador
•
•
•
•
Abreviaturas parecidas al inglés para representar operaciones
elementales de la máquina
Más claro para los humanos
Incomprensible para computadoras
– Programas traductores (ensambladores)
• Convertir a lenguaje máquina
Ejemplo:
LOAD PAGABASE
ADD
PAGAEXTRA
STORE PAGATOTAL
 2003 Prentice Hall, Inc. All rights reserved.
14
1.6 Lenguajes de Programación
1.6.1 Lenguajes máquina, ensambladores y de alto nivel
•
Tres tipos de lenguajes de programación
2. Lenguajes de alto nivel
•
•
•
•
•
Instrucciones similares a inglés común, contienen notaciones
matemáticas comunes
Una sola instrucción efectúa tareas complejas
– Lenguaje ensamblador requiere muchas instrucciones
para realizar tareas simples
Programas traductores (compiladores)
– Convierten a lenguaje máquina
Programas intérprete
– Ejecutan directamente programas en lenguajes de alto
nivel
Ejemplo:
pagaTotal = pagaBase + pagaTiempoExtra
 2003 Prentice Hall, Inc. All rights reserved.
15
1.6 Lenguajes de Programación
1.6.2 Historia de C y C++
• Historia de C
– Evolución a partir de otros 2 lenguajes de programación
• BCPL y B
– Lenguajes “sin tipos”
– Dennis Ritchie (Laboratorios Bell)
• Añadió tipos de datos y otras características
– Lenguaje de desarrollo de UNIX
– Independiente del hardware
• Programas portables
– 1989: estándar ANSI
– 1990: Se publica el estándar ANSI/ISO
• ANSI/ISO 9899: 1990
 2003 Prentice Hall, Inc. All rights reserved.
16
1.6 Lenguajes de Programación
1.6.2 Historia de C y C++
• Historia de C++
–
–
–
–
Extensión de C
A principios de los 80: Bjarne Stroustrup (Laboratorios Bell)
Características que “engalanan” C
Proporciona capacidades para programación orientada a
objetos
• Objetos: componentes de software reutilizables
– Simulan elementos reales
• Programas orientados a objetos
– Más fáciles de entender, corregir y modificar
– Lenguaje híbrido
• Estilo C
• Estilo orientado a objetos
• Ambos
 2003 Prentice Hall, Inc. All rights reserved.
17
1.6 Lenguajes de Programación
1.6.3 Biblioteca estándar de C++
• Programas C++
– Constan de partes llamadas clases y funciones
• Biblioteca estándar de C++
– Amplia colección de clases y funciones
• “Enfoque de bloques de construcción” para crear
programas
– “Reutilización de software”
 2003 Prentice Hall, Inc. All rights reserved.
18
1.6 Lenguajes de Programación
1.6.4 Java
• Java
– 1991: Sun Microsystems
• Proyecto Green
– 1995: Sun Microsystems
• Presentación oficial de Java
–
–
–
–
Páginas web con contenido dinámico e interactivo
Desarrollo de aplicaciones de empresa a gran escala
Realza la funcionalidad de los servidores web
Proporciona aplicaciones para dispositivos de consumo
• Teléfonos móviles, buscas, PDAs (Personal Digital Assistants),
…
 2003 Prentice Hall, Inc. All rights reserved.
19
1.6 Lenguajes de Programación
1.6.5 Visual Basic, Visual C++ y C#
• BASIC
– Código simbólico de instrucciones multipropósito para
principiantes (Beginner’s All-Purpose Symbolic Instruction Code)
– Mediados-1960: Prof. John Kemeny y Thomas Kurtz (Dartmouth
College)
• Visual Basic
– 1991
• Resultado del interfaz gráfico de usuario (GUI) de Microsoft
Windows (desarrollado a finales 80, principios 90)
– Características que aumentan su potencialidad
• GUI, manipulación de eventos, acceso al entorno de programación de
aplicaciones Windows 32-bit (Win32 API), programación orientada a
objetos, manipulación de errores
– Visual Basic .NET
 2003 Prentice Hall, Inc. All rights reserved.
20
1.6 Lenguajes de Programación
1.6.5 Visual Basic, Visual C++ y C#
• Visual C++
– Implementación de C++ de Microsoft
• Incluye extensiones
• Clases de Creación de Microsoft (MFC: Microsoft Foundation
Classes)
• Bibliotecas comunes
– GUI, gráficos, redes, multiusuario, …
– Compartidas entre Visual Basic, Visual C++ y C#
• Plataforma .NET
– Aplicaciones basadas en Web
• Distribuidas a gran variedad de dispositivos
– Teléfonos móviles, computadoras de sobremesa
– Aplicaciones en lenguajes dispares pueden comunicarse
 2003 Prentice Hall, Inc. All rights reserved.
21
1.6 Lenguajes de Programación
1.6.5 Visual Basic, Visual C++ y C#
• C#
– Anders Hejlsberg y Scott Wiltamuth (Microsoft)
– Diseñado específicamente para la plataforma .NET
– Raíces en C, C++ y Java
• Fácil migración a .NET
– Lenguaje de programación visual dirigido por eventos,
completamente orientado a objetos
– Entorno de desarrollo integrado (IDE: Integrated
Development Environment)
• Crear, ejecutar, comprobar y depurar programas C#
• Desarrollo Rápido de Aplicaciones (RAD: Rapid Application
Development)
– Interoperatividad de lenguajes
 2003 Prentice Hall, Inc. All rights reserved.
22
1.6 Lenguajes de Programación
1.6.6 Otros Lenguajes de Alto Nivel
• FORTRAN
– Traductor de Fórmulas (FORmula TRANslator)
– 1954-1957: IBM
– Cálculos matemáticos complejos
• Aplicaciones científicas y de ingeniería
• COBOL
– Lenguaje Común Orientado a Negocios (COmmon Business
Oriented Language)
– 1959: fabricantes de computadoras, usuarios de
computadoras del gobierno y la industria
– Manipula de manera precisa y eficiente grandes cantidades
de información
• Aplicaciones comerciales
 2003 Prentice Hall, Inc. All rights reserved.
23
1.6 Lenguajes de Programación
1.6.6 Otros Lenguajes de Alto Nivel
• Pascal
– 1971: Prof. Niklaus Wirth
– Uso académico
 2003 Prentice Hall, Inc. All rights reserved.
24
1.7 Historia de Internet y de la World Wide Web
1.7.1 Historia de Internet
• Finales de los 60: ARPA
– Agencia de Proyectos Avanzados de Investigación (ARPA:
Advanced Research Projects Agency)
• Departamento de Defensa de EEUU
– ARPAnet
– Correo electrónico (e-mail)
• Conmutación de paquetes
– Transferencia de datos digitales mediante paquetes pequeños
– Permite a múltiples usuarios enviar/recibir datos
simultáneamente sobre las mismas vías de comunicación
• Control no centralizado
– Si una parte de la red falla, las otras partes todavía pueden
seguir operando
 2003 Prentice Hall, Inc. All rights reserved.
25
1.7 Historia de Internet y de la World Wide Web
1.7.1 Historia de Internet
• TCP/IP
– Protocolo de Transmisión de Control (TCP: Transmission
Control Protocol)
• Mensajes correctamente encaminados
• Mensajes llegan intactos
– Protocolo de Internet (IP)
• Comunicación entre variedad de hardware y software de redes
• Arquitectura actual de Internet
• Ancho de banda
– Capacidad de transmisión en las líneas de comunicación
 2003 Prentice Hall, Inc. All rights reserved.
26
1.7 Historia de Internet y de la World Wide Web
1.7.2 Historia de la World Wide Web
• World Wide Web
– 1990: Tim Berners-Lee (CERN: Centro Europeo de
Investigación Nuclear)
– Localizar y visualizar documentos basados en multimedia
– Información accesible instantánea y convenientemente a
todo el mundo
– Exposición mundial factible
• Individuos y pequeños negocios
– Cambio en la forma de hacer negocios
• Consorcio World Wide Web (W3C)
–
–
–
–
1994: Tim Berners-Lee
Desarrollo de tecnologías no propietarias e interoperables
Organización de estandarización
3 centros (MIT, INRIA, Univ. Keio) y 400 miembros
 2003 Prentice Hall, Inc. All rights reserved.
27
1.8 Programación estructurada
• Programación estructurada (1960s)
– Enfoque disciplinado para escribir programas
– Más claros, más fáciles de probar y depurar, y más sencillos
de modificar
• Pascal (Blaise Pascal, matemático y filósofo s. XVII)
– 1971: Niklaus Wirth
• Ada (Lady Ada Lovelace: escribió primer programa a ps. 1800)
– 1970s - principios 1980s: Departamento de Defensa de los
EEUU
– Multitareas
• El programador puede especificar muchas actividades que se
ejecutarán en paralelo (simultáneamente)
 2003 Prentice Hall, Inc. All rights reserved.
28
1.9 Tendencia Clave del Software:
Tecnología de Objetos
• Objetos
– Componentes software reutilizables que modelan instancias
del mundo real
– Unidades de software significativas
• Objetos dato, objetos tiempo, objetos sueldo, objetos factura,
objetos audio, objetos video, objetos fichero, objetos
documento, etc.
• Cualquier nombre puede ser representado mediante un objeto
– Más comprensibles, mejor organizados y más fáciles de
mantener que la programación procedimental
– Favorece la modularidad
• Reutilización de software
– Bibliotecas
• MFC (Microsoft Foundation Classes)
• Rogue Wave
 2003 Prentice Hall, Inc. All rights reserved.
29
1.10 Introducción a la Programación en C++
• Lenguaje C++
– Permite un enfoque estructurado y disciplinado para abordar el
diseño de programas
• Portabilidad
– Programas C y C++ pueden ejecutarse en diferentes tipos de
computadoras
• Compatibilidad
– Muchas características de las versiones actuales de C++ no son
compatibles con las implementaciones anteriores
• Mostraremos ejemplos que:
– Ilustrarán muchas características importantes de C++
– Se analizarán instrucción por instrucción
• Programación estructurada (Capítulos 2-5)
• Programación orientada a objetos (Capítulos 6-)
 2003 Prentice Hall, Inc. All rights reserved.
30
1.10 Introducción a la Programación en C++
1.10.1 Fundamentos de un Entorno C++ Típico
• Sistemas C++
– Entorno de desarrollo de programas
– Lenguaje
– Biblioteca estándar de C++
 2003 Prentice Hall, Inc. All rights reserved.
31
1.10 Introducción a la Programación en C++
1.10.1 Fundamentos de un Entorno C++ Típico
Fases de programas C++:
1. Edición
2. Preprocesamiento
3. Compilación
Editor
Disco
El programador crea el
programa en el editor y lo
almacena en el disco.
Preprocesador
Disco
El programa preprocesador
preprocesa el código.
Disco
El compilador crea el
código objeto y lo guarda
en disco.
Compilador
Editor de
enlaces
Disco
Memoria
Primaria
4. Enlace
5. Carga
6. Ejecución
Cargador
Disco
El cargador pone el
programa en memoria.
..
..
..
Memoria
Primaria
CPU
..
..
..
 2003 Prentice Hall, Inc. All rights reserved.
El editor de enlaces enlaza
el código objeto con las
bibliotecas, crea un fichero
ejecutable y lo almacena en
disco.
La CPU toma cada
instrucción y la ejecuta,
posiblemente almacenando
nuevos valores de datos a
medida que se ejecuta el
programa.
32
1.10 Introducción a la Programación en C++
1.10.1 Fundamentos de un Entorno C++ Típico
• Entrada/salida
– cin
• Flujo de entrada estándar
• Normalmente es el teclado
– cout
• Flujo de salida estándar
• Normalmente es la pantalla del computador
– cerr
• Flujo de errores estándar
• Despliega mensajes de error
 2003 Prentice Hall, Inc. All rights reserved.
33
1.10 Introducción a la Programación en C++
1.10.2 Un Programa Sencillo: Imprimir 1 línea de texto
• Comentarios
–
–
–
–
Documentan los programas
Facilitan la lectura del programa
Son ignorados por el compilador
Comentarios de una línea
• Comienzan con //
• Directivas del preprocesador
– Procesadas por el preprocesador antes de la compilación
– Comienzan con #
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
// Fig. 1.2: fig01_02.cpp
// Un primer programa en C++.
#include <iostream>
La función main devuelve un
valor entero.
La función main aparece una
sola vez endel
cadaprograma
programa
ejecución
C++.
// la función main comienza la
int main()
{
std::cout << "¡Bienvenido a C++!\n";
return 0;
// indica que el programa terminó
} // fin de la función main
¡Bienvenido a C++!
La palabra clave return es
una de las que hace finalizar
la función; el valor 0 indica
que el programa finalizó
satisfactoriamente.
Comentarios de una
Outline
línea.
Directiva del preprocesador
para incluir el fichero de
cabecera de flujo de
entrada/salida <iostream>.
La llave izquierda { comienza
el cuerpo de la función.
satisfactoriamente
Operador de inserción de
flujo (stream).
El nombre cout pertenece al
espacio de nombres
(namespace) std.
Las sentencias finalizan con
un punto y coma ;.
La llave derecha
correspondiente } finaliza el
cuerpo de la función.
 2003 Prentice Hall, Inc.
All rights reserved.
34
35
1.10 Introducción a la Programación en C++
1.10.2 Un Programa Sencillo: Imprimir 1 línea de texto
• Objeto de flujo de salida estándar
– std::cout
– “Conectado” a la pantalla
– <<
• Operador de inserción de flujo
• El valor a la derecha del operador (operando derecho) se
inserta en el flujo de salida
• Espacio de nombres
– std:: especifica el uso de un nombre que pertenece al
espacio de nombres std
– std:: se elimina con el uso de sentencias using
• Caracteres de escape
– \
– Indica la salida de un carácter “especial”
 2003 Prentice Hall, Inc. All rights reserved.
36
1.10 Introducción a la Programación en C++
1.10.2 Un Programa Sencillo: Imprimir 1 línea de texto
Secuencia escape
Descripción
\n
Salto de línea. Coloca el cursor al inicio de la
siguiente línea.
\t
Tabulación horizontal. Mueve el cursor hasta la
siguiente tabulación.
\r
Retorno de carro. Coloca el cursor al inicio de la
línea actual; no avanza a la siguiente línea.
\a
Alerta. Hace sonar la campana del sistema.
\\
Diagonal invertida (backslash). Sirve para imprimir
el carácter de la diagonal invertida.
\"
Comillas. Sirve para imprimir un carácter de
comillas.
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
// Fig. 1.4: fig01_04.cpp
// Impresión de una línea con varias instrucciones.
#include <iostream>
37
Outline
// la función main comienza la ejecución del Varias
programa
sentencias de inserción
int main()
de flujo producen una línea de
{
salida.
std::cout << “¡Bienvenido ";
std::cout << “a C++!\n";
return 0;
// indica que el programa finalizó satisfactoriamente
} // fin de la función main
¡Bienvenido a C++!
 2003 Prentice Hall, Inc.
All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
// Fig. 1.5: fig01_05.cpp
// Impresión de varias líneas mediante una instrucción
#include <iostream>
38
Outline
Uso programa
de caracteres de nueva
// la función main comienza la ejecución del
línea para imprimir en varias
int main()
{
líneas.
std::cout << “¡Bienvenido\na\n\nC++!\n";
return 0;
// indica que el programa terminó satisfactoriamente
} // final de la función main
¡Bienvenido
a
C++!
 2003 Prentice Hall, Inc.
All rights reserved.
39
1.10 Introducción a la Programación en C++
1.10.3 Otro Programa Simple: Suma de 2 enteros
• Variables
– Localización de memoria donde puede almacenarse un valor
– Tipos comunes de datos
• int – números enteros
• char - caracteres
• double – números en punto flotante
– Declaración variables con nombre y tipo de datos antes de
usarlas
int entero1;
int entero2;
int suma;
– Se pueden declarar varias variables del mismo tipo en una
sola declaración
• Lista separada por comas
int entero1, entero2, suma;
 2003 Prentice Hall, Inc. All rights reserved.
40
1.10 Introducción a la Programación en C++
1.10.3 Otro Programa Simple: Suma de 2 enteros
• Variables
– Nombres de variables
• Cualquier identificador válido
– Series de caracteres: letras, dígitos, caracteres de
subrayado (_)
– No pueden comenzar con un dígito
– Sensible a mayúsculas y minúsculas (a1A1)
 2003 Prentice Hall, Inc. All rights reserved.
41
1.10 Introducción a la Programación en C++
1.10.3 Otro Programa Simple: Suma de 2 enteros
• Objeto de flujo de entrada
– >> (operador de extracción de flujo)
• Usado con std::cin
• Espera a que el usuario introduzca un valor y presione la tecla
Enter (Return)
• Almacena el valor en la variable a la derecha del operador
– Convierte el valor al tipo de dato de la variable
• = (Operador de asignación)
– Asigna un valor a la variable
– Operador binario (dos operandos)
– Ejemplo:
suma = variable1 + variable2;
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
42
// Fig. 1.6: fig01_06.cpp
// Programa de suma.
#include <iostream>
Outline
// la función comienza la ejecución del programa
int main()
Declaración de las variables
{
enteras.
int entero1; // primer número que
introduce el usuario
int entero2; // segundo número que introduce el usuario
delque
operador
de flujo la
de suma
int suma;
// variable Uso
en la
se almacena
std::cout << “Teclee el
std::cin >> entero1;
entrada con la entrada de flujo
estándar
paraentero\n";
obtener la // solicitud
primer
número
// lee un entero
entrada del usuario.
std::cout << “Teclee el segundo
número entero\n";
// solicitud
Los cálculos
se pueden realizar
en sentencias
std::cin >> entero2;
// lee un entero
suma = entero1 + entero2;
std::cout << “La suma es "
return 0;
de salida: alternativa
para líneas 18 y 20:
Manipulador de flujo
std::endl envía a la
// asigna la suma
std::cout << “La suma es " << entero1 + entero2 << std::endl;
salida un cambio de línea y
luego
el búfer de
<< suma << std::endl; // imprime
la“descarga
suma
salida”.
// indica que el programa terminó satisfactoriamente
} // fin de la función main
Teclee el primer número entero
45
Teclee el segundo número entero
72
La suma es 117
Concatenación, encadenado o
cascada de operaciones de
inserción de flujo.
 2003 Prentice Hall, Inc.
All rights reserved.
43
1.10 Introducción a la Programación en C++
1.10.4 Conceptos sobre Memoria
• Nombres de Variables
– Corresponden a localizaciones de la memoria de la
computadora
– Cada variable tiene un nombre, un tipo, un tamaño y un
valor
– Cada vez que se pone un valor en una variable, se destruye
el valor previo
– Cuando se lee una variable de una localización de memoria,
el proceso es no destructivo
 2003 Prentice Hall, Inc. All rights reserved.
44
1.10 Introducción a la Programación en C++
1.10.4 Conceptos sobre Memoria
std::cin >> entero1;
entero1
45
entero1
45
entero2
72
entero1
45
entero2
72
– Supongamos que el usuario
introduce 45
std::cin >> entero2;
– Supongamos que el usuario
introduce 72
suma = entero1 + entero2;
suma
 2003 Prentice Hall, Inc. All rights reserved.
117
45
1.10 Introducción a la Programación en C++
1.10.5 Aritmética
• Cálculos aritméticos
– *
• Multiplicación
– /
• División
• La división entera trunca el resto
– 7 / 5 se evalúa como 1
– %
• Operador módulo: devuelve el resto
– 7 % 5 se evalúa como 2
 2003 Prentice Hall, Inc. All rights reserved.
46
1.10 Introducción a la Programación en C++
1.10.5 Aritmética
• Reglas de precedencia de operadores
– Operadores entre paréntesis se evalúan primero
• Paréntesis anidados
– Operadores del par más interno se evalúan primero
– Después se aplican multiplicación, división y módulo
• Los operadores se aplican de izquierda a derecha
– Por último, suma y resta
• Los operadores se aplican de izquierda a derecha
Operador(es)
Operación(es)
Orden de evaluación (precedencia)
()
Paréntesis
Se evalúa primero. Si los paréntesis están anidados, la
expresión del par más interno es la primera en evaluarse.
Si hay otros pares de paréntesis “al mismo nivel” (es
decir, no anidados), se evalúan de izquierda a derecha.
*, /, o %
Multiplicación División Se evalúan en segundo lugar. Si hay varios, se evalúan
Módulo
de izquierda a derecha.
+o-
Suma
Resta
 2003 Prentice Hall, Inc. All rights reserved.
Se evalúan de últimos. Si hay varios, se evalúan de
izquierda a derecha.
1.10 Introducción a la Programación en C++
1.10.6 Toma de Decisiones: Operadores de Igualdad y
Relacionales
• Estructura if
– Toma decisiones basándose en la verdad o falsedad de una
condición
• Si la condición se cumple, se ejecuta el cuerpo de la estructura
• Si no se cumple, NO se ejecuta el cuerpo de la estructura
• Operadores de igualdad y relacionales
– Operadores de igualdad
• Mismo nivel de precedencia
– Operadores relacionales
• Mismo nivel de precedencia
– Se asocian de izquierda a derecha
 2003 Prentice Hall, Inc. All rights reserved.
47
1.10 Introducción a la Programación en C++
1.10.6 Toma de Decisiones: Operadores de Igualdad y
Relacionales
Op era d or d e igua ld a d u
op era d or rela c iona l
a lg eb ra ic o está nd a r
Op era d or d e
ig ua ld a d o
rela c iona l d e C++
Ejem p lo d e
c ond ic ión C++
Sig nific a d o d e la
c ond ic ión C++
Operadores Relacionales
>
>
x > y
x es mayor que y
<
<
x < y
x es menor que y

>=
x >= y
x es mayor o igual que y

<=
x <= y
x es menor o igual que y
=
==
x == y
x es igual que y

!=
x != y
x no es igual que y
Operadores de igualdad
 2003 Prentice Hall, Inc. All rights reserved.
48
1.10 Introducción a la Programación en C++
1.10.6 Toma de Decisiones: Operadores de Igualdad y
Relacionales
• Sentencias using
– Eliminan el uso del prefijo std::
– Escribimos cout en vez de std::cout
 2003 Prentice Hall, Inc. All rights reserved.
49
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Fig. 1.14: fig01_14.cpp
// Empleo de instrucciones if, operadores relacionales
// y operadores de igualdad.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
// el programa usa cout
// el programa usa cin
// el programa usa endl
50
Outline
sentencias using eliminan la
necesidad del prefijo std::
Declaración
de
// la función comienza la ejecución
del programa
int main()
variables.
{
Se puede
coutely usuario
int num1; // primer número
queescribir
introduce
sinque
el prefijo
std::
int num2; // segundo cin
número
introduce
el usuario
cout << “Teclee dos enteros y le diré\n"
La estructura if compara los
<< “las relaciones que cumplen: "; Si la condición es
valores
de num1 y num2 para
cin >> num1 >> num2;
// lee
dos enteros
if ( num1 == num2 )
cout << num1 << " es
cierta (es
decir,
los valores son iguales),
comprobar si son
iguales.
Si la condición es cierta (es decir, los
se compara
ejecuta esta
La estructura if
los sentencia.
valores no son iguales), se ejecuta esta
valores
de num1
y num2
igual
a " <<
num2 <<
endl; para
sentencia.
comprobar que no son
iguales.
if ( num1 != num2 )
cout << num1 << " no es igual a " << num2 << endl;
 2003 Prentice Hall, Inc.
All rights reserved.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
51
if ( num1 < num2 )
cout << num1 << " es menor que " << num2 << endl;
Outline
if ( num1 > num2 )
cout << num1 << " es mayor que " << num2 << endl;
if ( num1 <= num2 )
cout << num1 << " es menor o igual que "
<< num2 << endl;
Las sentencias se pueden
dividir en varias líneas.
if ( num1 >= num2 )
cout << num1 << " es mayor o igual que "
<< num2 << endl;
return 0;
// indica que el programa finalizó satisfactoriamente
} // fin de la función main
Teclee dos números enteros y le diré
las relaciones que cumplen: 22 12
22 no es igual a 12
22 es mayor que 12
22 es mayor o igual a 12
Teclee dos números
las relaciones que
7 es igual a 7
7 es menor o igual
7 es mayor o igual
enteros y le diré
cumplen : 7 7
que 7
que 7
 2003 Prentice Hall, Inc.
All rights reserved.
1.11 Pensando en objetos: Introducción a la
Tecnología de Objetos y al Lenguaje de
Modelado Unificado
• Programación Orientada a Objetos (POO)
– Simula objetos reales con equivalentes de software
– Atributos (estado) – propiedades de los objetos
• Tamaño, forma, color, peso, etc.
– Comportamientos (operaciones) - acciones
• Una pelota rueda, bota, se hincha y se deshincha
• Los objetos también pueden realizar acciones
– Herencia
• Nuevas clases de objetos absorben características de clases existentes
– Objetos
• Encapsulan datos (atributos) y funciones (comportamientos)
• Ocultamiento de información
– Se comunican entre ellos a través de interfaces bien definidas, pero
no saben cómo están implementados otros objetos
 2003 Prentice Hall, Inc. All rights reserved.
52
1.26 Pensando en objetos: Introducción a la
Tecnología de Objetos y al Lenguaje de
Modelado Unificado
• Tipos definidos por el usuario (clases)
– Datos miembro
• Componentes de datos de una clase
– Funciones miembro
• Componentes de función de una clase
– Asociación
– Reutilización de clases
 2003 Prentice Hall, Inc. All rights reserved.
53
1.26 Pensando en objetos: Introducción a la
Tecnología de Objetos y al Lenguaje de
Modelado Unificado
• Proceso de análisis y diseño orientado a objetos
(OOAD)
– Análisis de los requerimientos del proyecto
– Diseño para satisfacer los requerimientos
– Pseudocódigo
• Técnica informal de expresar un programa
• Esbozo para guiarnos al escribir el código
 2003 Prentice Hall, Inc. All rights reserved.
54
1.26 Pensando en objetos: Introducción a la
Tecnología de Objetos y al Lenguaje de
Modelado Unificado
• Lenguaje de Modelado Unificado (UML)
– 2001: Grupo de Manipulación de Objetos (OMG)
• Lanzamiento del UML versión 1.4 (versión 2.0 a fs. 2002)
– Modela sistemas orientados a objetos y ayuda en el diseño
– Flexibilidad
• Extensible
• Independiente de los procesos OOAD
• Un conjunto estándar de notaciones
– Lenguaje gráfico complejo, rico en propiedades
 2003 Prentice Hall, Inc. All rights reserved.
55