2003 prentice hall, inc. all rights reserved. 1 capítulo 1 – introducción a las computadoras y a...

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

Upload: sol-siles

Post on 22-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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.1 Introducción

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ítulo1.1 Introducción1.2 ¿Qué es una Computadora?1.3 Organización de las Computadoras1.4 Evolución de los Sistemas Operativos1.5 Computación Personal, Distribuida y Cliente/Servidor1.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)

Page 2: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

2

Capítulo 1 – Introducción a las Computadoras y a la Programación en C++Índice del capítulo1.8 Programación Estructurada1.9 Tendencia Clave de Software: Tecnología de Objetos1.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

Relacionales1.11 Pensando en Objetos: Introducción a la Tecnología de

Objetos y al Lenguaje de Modelado Unificado (UML)

Page 3: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 4: 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.1 Introducción

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

Page 5: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

5

1.3 Organización de las Computadoras

• Seis unidades lógicas en una computadora1. 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

Page 6: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

6

1.3 Organización de las Computadoras

• Seis unidades lógicas en una computadora3. 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

Page 7: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

7

1.3 Organización de las Computadoras

• Seis unidades lógicas en una computadora5. 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

Page 8: 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.1 Introducción

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

Page 9: 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.1 Introducción

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

Page 10: 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.1 Introducción

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

Page 11: 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.1 Introducció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

Page 12: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

121.6 Lenguajes de Programación1.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

Page 13: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

13

• Tres tipos de lenguajes de programación2. 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 PAGABASEADD PAGAEXTRASTORE PAGATOTAL

1.6 Lenguajes de Programación1.6.1 Lenguajes máquina, ensambladores y de

alto nivel

Page 14: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

141.6 Lenguajes de Programación1.6.1 Lenguajes máquina, ensambladores y de

alto nivel

• Tres tipos de lenguajes de programación2. 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

Page 15: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

15

1.6 Lenguajes de Programación1.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

Page 16: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

16

1.6 Lenguajes de Programación1.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

Page 17: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

17

1.6 Lenguajes de Programación1.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”

Page 18: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

18

1.6 Lenguajes de Programación1.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), …

Page 19: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

19

1.6 Lenguajes de Programación1.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

Page 20: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

20

1.6 Lenguajes de Programación1.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

Page 21: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

21

1.6 Lenguajes de Programación1.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

Page 22: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

22

1.6 Lenguajes de Programación1.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

Page 23: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

23

1.6 Lenguajes de Programación1.6.6 Otros Lenguajes de Alto Nivel

• Pascal – 1971: Prof. Niklaus Wirth

– Uso académico

Page 24: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 25: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 26: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 27: 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.1 Introducción

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)

Page 28: 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.1 Introducción

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

Page 29: 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.1 Introducción

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

Page 30: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 31: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

311.10 Introducción a la Programación en C++

1.10.1 Fundamentos de un Entorno C++ TípicoFases de programas C++:

1. Edición

2. Preprocesamiento

3. Compilación

4. Enlace

5. Carga

6. Ejecución

Cargador

MemoriaPrimaria

El programador crea el programa en el editor y lo almacena en el disco.

El programa preprocesador preprocesa el código.

El cargador pone el programa en memoria.

La CPU toma cada instrucción y la ejecuta, posiblemente almacenando nuevos valores de datos a medida que se ejecuta el programa.

CompiladorEl compilador crea el código objeto y lo guarda en disco.

El editor de enlaces enlaza el código objeto con las bibliotecas, crea un fichero ejecutable y lo almacena en disco.

Editor

Preprocesador

Editor de enlaces

 CPU

MemoriaPrimaria

.

.

.

.

.

.

.

.

.

.

.

.

Disco

Disco

Disco

Disco

Disco

Page 32: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 33: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 34: 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.1 Introducción

2003 Prentice Hall, Inc.All rights reserved.

Outline34

1 // Fig. 1.2: fig01_02.cpp2 // Un primer programa en C++.3 #include <iostream>4 5 // la función main comienza la ejecución del programa6 int main()7 {8 std::cout << "¡Bienvenido a C++!\n";9 10 return 0; // indica que el programa terminó satisfactoriamente11 12 } // fin de la función main

¡Bienvenido a C++!

Directiva del preprocesador para incluir el fichero de cabecera de flujo de entrada/salida <iostream>.

La función main aparece una sola vez en cada programa C++.

La función main devuelve un valor entero.

La llave izquierda { comienza el cuerpo de la función.

El nombre cout pertenece al espacio de nombres (namespace) std.

Operador de inserción de flujo (stream).

La palabra clave return es una de las que hace finalizar la función; el valor 0 indica que el programa finalizó satisfactoriamente.

La llave derecha correspondiente } finaliza el cuerpo de la función.

Comentarios de una línea.

Las sentencias finalizan con un punto y coma ;.

Page 35: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 36: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

361.10 Introducción a la Programación en

C++ 1.10.2 Un Programa Sencillo: Imprimir 1 línea

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

Page 37: 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.1 Introducción

2003 Prentice Hall, Inc.All rights reserved.

Outline37

1 // Fig. 1.4: fig01_04.cpp2 // Impresión de una línea con varias instrucciones.3 #include <iostream>4 5 // la función main comienza la ejecución del programa6 int main()7 {8 std::cout << “¡Bienvenido "; 9 std::cout << “a C++!\n";10 11 return 0; // indica que el programa finalizó satisfactoriamente12 13 } // fin de la función main

¡Bienvenido a C++!

Varias sentencias de inserción de flujo producen una línea de salida.

Page 38: 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.1 Introducción

2003 Prentice Hall, Inc.All rights reserved.

Outline38

1 // Fig. 1.5: fig01_05.cpp2 // Impresión de varias líneas mediante una instrucción3 #include <iostream>4 5 // la función main comienza la ejecución del programa6 int main()7 {8 std::cout << “¡Bienvenido\na\n\nC++!\n";9 10 return 0; // indica que el programa terminó satisfactoriamente11 12 } // final de la función main

¡Bienvenido

a

 

C++!

Uso de caracteres de nueva línea para imprimir en varias líneas.

Page 39: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

391.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 usarlasint entero1;int entero2;int suma;

– Se pueden declarar varias variables del mismo tipo en una sola declaración

• Lista separada por comasint entero1, entero2, suma;

Page 40: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

401.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 (a1A1)

Page 41: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 42: 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.1 Introducción

2003 Prentice Hall, Inc.All rights reserved.

Outline42

1 // Fig. 1.6: fig01_06.cpp2 // Programa de suma.3 #include <iostream>4 5 // la función comienza la ejecución del programa6 int main()7 {8 int entero1; // primer número que introduce el usuario9 int entero2; // segundo número que introduce el usuario 10 int suma; // variable en la que se almacena la suma11 12 std::cout << “Teclee el primer número entero\n"; // solicitud13 std::cin >> entero1; // lee un entero14 15 std::cout << “Teclee el segundo número entero\n"; // solicitud16 std::cin >> entero2; // lee un entero17 18 suma = entero1 + entero2; // asigna la suma19 20 std::cout << “La suma es " << suma << std::endl; // imprime la suma21 22 return 0; // indica que el programa terminó satisfactoriamente23 24 } // fin de la función main

Declaración de las variables enteras.

Uso del operador de flujo de entrada con la entrada de flujo estándar para obtener la entrada del usuario.

Manipulador de flujo std::endl envía a la salida un cambio de línea y luego “descarga el búfer de salida”.

Los cálculos se pueden realizar en sentencias de salida: alternativa para líneas 18 y 20:

std::cout << “La suma es " << entero1 + entero2 << std::endl;

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.

Page 43: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 44: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

441.10 Introducción a la Programación en C++

1.10.4 Conceptos sobre Memoriastd::cin >> entero1;

– Supongamos que el usuario introduce 45

std::cin >> entero2;– Supongamos que el usuario

introduce 72

suma = entero1 + entero2;

entero1 45

entero1 45

entero2 72

entero1 45

entero2 72

suma 117

Page 45: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 46: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

461.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 Módulo

Se evalúan en segundo lugar. Si hay varios, se evalúan de izquierda a derecha.

+ o - Suma Resta

Se evalúan de últimos. Si hay varios, se evalúan de izquierda a derecha.

Page 47: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 48: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

481.10 Introducción a la Programación en C++

1.10.6 Toma de Decisiones: Operadores de Igualdad y Relacionales

Operador de igualdad u operador relacional algebraico estándar

Operador de igualdad o

relacional de C++

Ejemplo de condición C++

Significado de la condició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

Operadores de igualdad

= == x == y x es igual que y

!= x != y x no es igual que y

Page 49: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 50: 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.1 Introducción

2003 Prentice Hall, Inc.All rights reserved.

Outline50

1 // Fig. 1.14: fig01_14.cpp2 // Empleo de instrucciones if, operadores relacionales3 // y operadores de igualdad.4 #include <iostream>5 6 using std::cout; // el programa usa cout7 using std::cin; // el programa usa cin 8 using std::endl; // el programa usa endl9 10 // la función comienza la ejecución del programa11 int main()12 {13 int num1; // primer número que introduce el usuario14 int num2; // segundo número que introduce el usuario15 16 cout << “Teclee dos enteros y le diré\n"17 << “las relaciones que cumplen: ";18 cin >> num1 >> num2; // lee dos enteros19 20 if ( num1 == num2 ) 21 cout << num1 << " es igual a " << num2 << endl;22 23 if ( num1 != num2 )24 cout << num1 << " no es igual a " << num2 << endl;25

sentencias using eliminan la necesidad del prefijo std::

Se puede escribir cout y cin sin el prefijo std::

Declaración de variables.

La estructura if compara los valores de num1 y num2 para comprobar si son iguales.

Si la condición es cierta (es decir, los valores son iguales), se ejecuta esta sentencia.La estructura if compara los

valores de num1 y num2 para comprobar que no son iguales.

Si la condición es cierta (es decir, los valores no son iguales), se ejecuta esta sentencia.

Page 51: 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.1 Introducción

2003 Prentice Hall, Inc.All rights reserved.

Outline51

26 if ( num1 < num2 )27 cout << num1 << " es menor que " << num2 << endl;28 29 if ( num1 > num2 )30 cout << num1 << " es mayor que " << num2 << endl;31 32 if ( num1 <= num2 )33 cout << num1 << " es menor o igual que "34 << num2 << endl;35 36 if ( num1 >= num2 )37 cout << num1 << " es mayor o igual que "38 << num2 << endl;39 40 return 0; // indica que el programa finalizó satisfactoriamente41 42 } // 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

Las sentencias se pueden dividir en varias líneas.

Teclee dos números enteros y le diré

las relaciones que cumplen : 7 7

7 es igual a 7

7 es menor o igual que 7

7 es mayor o igual que 7

Page 52: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 53: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 54: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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

Page 55: 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.1 Introducción

2003 Prentice Hall, Inc. All rights reserved.

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