Está en la página 1de 32

Programacin para

Ciencias e Ingeniera 1
Introduccin a computadores y C++

Juan Almendriz - USFQ


Empecemos
Juan Almendriz - USFQ
Introduccin a computadores y C++
Introduccin
C++ uno de los lenguajes de desarrollo de software ms populares:
billones de telfonos celulares, smartphones, y otros dispositivos porttiles.

Programacin orientada a objetos: metodologa clave de programacin.

En este curso: C++11.

Computadores e Internet
La mayora de empresas influyentes de las ltimas dcadas: tecnologa.

Cmo mejora la tecnologa la vida de las personas?

3 Juan Almendriz - USFQ


Introduccin a computadores y C++
Hardware y software
Computadores actuales realizan billones de clculos por segundo, ms que
las que un humano en toda su vida.
Supercomputadores: cuatrillones de instrucciones por segundo.
Supercomputador de IBM Sequoia:
17 cuatrillones de clculos por segundo
(17,17 petaflops): 2,3 millones por cada
persona en el planeta.

4 Juan Almendriz - USFQ


Introduccin a computadores y C++
Hardware y software
Algunos conceptos

Programa: secuencia de instrucciones para procesar datos.


Software: programas que se ejecutan en un computador.
Hardware: conjunto de dispositivos/piezas que forman un computador.

Los costos del hardware y software se han decrementado significativamente


debido al rpido desarrollo de tecnologas.

Costos actuales vs anteriores? De qu estn hechas?

5 Juan Almendriz - USFQ


Introduccin a computadores y C++
Hardware y software
Ley de Moore (Gordon Moore, co-fundador Intel, 1965)

Cada dos aos la capacidad de los computadores se duplica: memoria,


almacenamiento, velocidad de procesamiento.
Reduccin de costos.
Similar comportamiento en el campo de las comunicaciones.

6 Juan Almendriz - USFQ


Introduccin a computadores y C++
Hardware y software
Organizacin del computador
Varias unidades lgicas:

Unidad de entrada: obtiene datos y programas desde dispositivos de


entrada y los ubica a disposicin de otras unidades para su
procesamiento. Ejemplos?

Unidad de salida: toma la informacin procesada y la ubica en


dispositivos de salida para que est disponible para su uso fuera del
computador. Ejemplos?

Unidad de memoria (memoria principal): seccin de rpido acceso que


retiene la informacin hacindola inmediatamente disponible para su
procesamiento. De qu tipo es la informacin que almacena?
Capacidad?
7 Juan Almendriz - USFQ
Introduccin a computadores y C++
Hardware y software
Organizacin del computador

Unidadaritmtico-lgica (ALU): realiza clculos y toma decisiones. Se


implementa como parte del CPU.

Unidad central de procesamiento (CPU): coordina y supervisa la


operacin de las otras unidades. Un procesador multincleo
implementa varios CPUs en un solo chip. Cantidad de operaciones?

Unidad de almacenamiento secundario: seccin de almacenamiento de


gran capacidad y a largo plazo, almacena programas o datos que no
estn siendo usados por el computador. La informacin es de tipo
persistente. Ejemplos? Costos vs. memoria principal?

8 Juan Almendriz - USFQ


Introduccin a computadores y C++
Hardware y software
Organizacin del computador

9 Juan Almendriz - USFQ


Introduccin a computadores y C++
Jerarqua de datos

10 Juan Almendriz - USFQ


Introduccin a computadores y C++
Jerarqua de datos
Bit (binary digit): dato ms pequeo, puede ser 1 0.
Carcter: dgitos, letras
y smbolos. Cada carcter es representado
por un patrn de unos y ceros. Conjuntos de caracteres?

Campo: conjunto de caracteres o bytes con un significado. Ejemplo?


Registro: grupo de campos relacionados. Ejemplo?
Archivo: grupo de registros relacionados.
Base de datos: coleccin electrnica de datos organizada para fcil
acceso y manipulacin. El modelo ms popular de base de datos es el
relacional: tabla - registro - campo. Ejemplo?

11 Juan Almendriz - USFQ


Introduccin a computadores y C++
Tipos de lenguajes

Lenguaje de mquina: lenguaje que consiste


nicamente de bits, definido por la
a r q u i t e c t u r a d e l c o m p u t a d o r.
Representacin binaria de instrucciones.

Lenguajeensamblador: lenguaje que utiliza


instrucciones cortas para representar
operaciones elementales. Representacin
simblica de instrucciones. Los
ensambladores convier ten lenguaje
ensamblador en lenguaje de mquina.

12 Juan Almendriz - USFQ


Introduccin a computadores y C++
Tipos de lenguajes

Lenguaje de alto nivel: permite escribir


programas usando palabras y notacin
algebraica que el programador entiende
fcilmente. Ejemplos?
El compilador convierte lenguaje de alto nivel
en lenguaje ensamblador (o lenguaje de
mquina).
Un intrprete ejecuta directamente un
programa en alto nivel, sin necesidad de
compilarlo. Lenguajes de scripting como
JavaScript y PHP son procesados por
intrpretes.

13 Juan Almendriz - USFQ


Introduccin a computadores y C++
C++
Evolucion a partir de C, que fue desarrollado por Dennis Ritchie en los
Laboratorios Bell. Es posible escribir programas en C que se puedan
ejecutar en la mayora de computadores.

Estandarizado por American National Standards Institue (ANSI) y International


Organization for Standarization (ISO) en 1990: ANSI/ISO 9899: 1990.

C11 es el ltimo estndar, hace a C ms consistente con C++.

C++ es una extensin de C, desarrollado por Bjarne Stroustrup en 1979 en


Bell Laboratories. Originalmente se denomin C con clases, renombrado
en los 80s.

C++ provee algunas funcionalidades que mejoran C y provee la capacidad


para programacin orientada a objetos.
14 Juan Almendriz - USFQ
Introduccin a computadores y C++
C++
Librera estndar de C++

Los programas en C++ estn formados por clases y funciones.

El programador puede programarlas o hacer uso de la extensa


coleccin disponible en la C++ Standard Library. Ventajas?
Desventajas?

Dos tareas: aprender el lenguaje C++ y aprender a usar las clases y


funciones de la librera estndar.

15 Juan Almendriz - USFQ


Introduccin a computadores y C++
Ambiente de desarrollo de C++
C++ consta de tres partes: un ambiente de desarrollo de programas, el
lenguaje y la librera estndar C++.

Los programas en C++ generalmente tienen seis fases: edicin,


preprocesamiento, compilacin, enlace, carga y ejecucin.

Fase 1: Edicin del programa


Se escribe el programa (source code o cdigo fuente) usando un editor y se
almacena en disco. Las extensiones para un programa en C++ tpicamente
son: .cpp, .cxx, .cc .C.

16 Juan Almendriz - USFQ


Introduccin a computadores y C++
Ambiente de desarrollo de C++
Fase 1: Edicin del programa
Para el desarrollo en C++ estn disponibles integrated development
environments (IDEs): proveen herramientas que soportan el proceso, editores,
y debuggers para localizar errores lgicos. Ejemplos: Microsoft Visual Studio,
DevC++, NetBeans, Eclipse, Xcode.

Fase 2: Preprocesamiento

El preprocesador se ejecuta automticamente y obedece a ciertos


comandos, directivas de preprocesamiento, que indican qu manipulaciones
deben realizarse. Estas directivas generalmente incluyen otros archivos de
texto para ser compilados, y realizan ciertos reemplazos.
17 Juan Almendriz - USFQ
Introduccin a computadores y C++
Ambiente de desarrollo de C++
Fase 3: Compilacin
El compilador traduce el programa en C++ en lenguaje de mquina.

Fase 4: Enlace
El linker enlaza el cdigo compilado con aquel de funciones y datos
referenciados que estn ubicados en otro sitio, como libreras estndar o
privadas. Produce un programa ejecutable si se ha compilado y enlazado
correctamente (imagen ejecutable).

18 Juan Almendriz - USFQ


Introduccin a computadores y C++
Ambiente de desarrollo de C++
Fase 5: Carga
El loader toma una imagen ejecutable del disco y la transfiere a memoria.
Otros componentes adicionales tambin podran ser cargados.

19 Juan Almendriz - USFQ


Introduccin a computadores y C++
Ambiente de desarrollo de C++
Fase 6: Ejecucin
Finalmente, el computador bajo el control del CPU, ejecuta cada instruccin
del programa. Podran ejecutarse varias instrucciones en paralelo.

20 Juan Almendriz - USFQ


Introduccin a computadores y C++
Ambiente de desarrollo de C++
Problemas en tiempo de ejecucin

Los programas podran fallar cuando se ejecuten.

Ejemplo: divisin por cero (operacin ilegal): mensaje de error. Qu hacer?

Programas obtienen datos de cin (standard input stream): teclado u otro


dispositivo.

Los datos se entregan a cout (standard output stream): pantalla u otro


dispositivo: disco, impresoras. Imprimir un resultado = mostrarlo en pantalla.

Para mostrar mensajes se utiliza cerr (standard error stream): generalmente


pantalla.

21 Juan Almendriz - USFQ


Introduccin a computadores y C++
Sistemas operativos
Software que facilita el uso de los computadores para usuarios,
desarrolladores de aplicaciones y administradores de sistemas.

Proveen servicios que permiten que las aplicaciones se ejecuten de forma


segura, eficiente y concurrente.

Kernel: software que contiene los componentes clave del sistema operativo.

Ejemplos de sistemas operativos de PCs? De servidores?

De smartphones y tablets?

22 Juan Almendriz - USFQ


Introduccin a computadores y C++
Sistemas operativos
Windows

Desarrollado por Microsoft a mediados de los 80s.


Software propietario. Primera versin?

Consiste de una interfaz grfica de usuario (GUI)


construida sobre DOS: sistema operativo muy
popular con el cual se interacta por comandos.

Windows tom varios conceptos (iconos, mens


y ventanas) desarrollados por Xerox y los
populariz antes que los sistemas Macintosh de
Apple.

Sistema operativo ms usado en el


mundo. ltima versin?
23 Juan Almendriz - USFQ
Introduccin a computadores y C++
Sistemas operativos
Linux

El mayor xito del movimiento open source.

En el movimiento open source personas y empresas contribuyen en el


desarrollo, mantenimiento y evolucin del software como intercambio por
el derecho de usar ese software de forma gratuita.

Se supone que al ser revisado por ms personas, los errores se encuentran


ms rpidamente. Es cierto?

Organizaciones de la comunidad open source: Eclipse Foundation, Mozilla


Foundation, Apache Software Foundation, SourceForge.

Negocio a partir de software open source: Facebook.


24 Juan Almendriz - USFQ
Introduccin a computadores y C++
Sistemas operativos
Linux

Core del sistema operativo: linux kernel.

El cdigo fuente de Linux est disponible para el pblico, libre para examinar
y modificar, se puede descargar e instalar.

Diversidad de distribuciones.

Por qu no se ha extendido en PCs tanto como Windows?

25 Juan Almendriz - USFQ


Introduccin a computadores y C++
Sistemas operativos
Apple OS X, Apple iOS

Apple fundada en 1976 por Jobs y Wozniak lleg rpidamente a ser un lder
en computadores personales.

1979: Jobs visita Xerox PARC para mirar


desarrollo de GUI. Sirve de inspiracin para
Apple Macintosh, lanzada en Super Bowl de
1984.
1985: Jobs deja Apple y funda NEXT.
1988: Crea la interfaz de usuario del sistema
operativo NeXTSTEP.
1996: Jobs regresa a Apple. Apple compra NEXT.
OS X es descendiente de NeXTSTEP. Basado en UNIX (BSD). Versiones?
iOS, derivado de OS X. Dnde se usa? Versiones?
26 Juan Almendriz - USFQ
Introduccin a computadores y C++
Sistemas operativos
Android

Sistema operativo de dispositivos mviles


de ms rpido crecimiento. Plataforma
abierta y gratuita. Beneficio?

Basado en kernel de Linux y Java.

Desarrollado por Android Inc., adquirida


por Google en 2005. Usado en centenas de
miles de dispositivos. Ejemplos? Marcas?

27 Juan Almendriz - USFQ


Introduccin a computadores y C++
Internet y la Web
Red global de computadores, posible debido a la convergencia de las
computadoras y las tecnologas de comunicacin.

En los 60s, ARPA (Advanced Research Projects Agency) implement ARPANET


para conectar los computadores principales de alrededor de una docena de
universidades fundadores. ARPANET evolucion hasta lo que hoy
conocemos como Internet.

28 Juan Almendriz - USFQ


Introduccin a computadores y C++
Internet y la Web
Conmutacin de paquetes

Objetivo de ARPANET: mltiples usuarios enviando y recibiendo


informacin simultneamente.

En Internet los datos se envan en pequeos conjuntos llamados paquetes.

Los paquetes contienen direcciones de origen y destino, control de errores


e informacin de secuencia.

Esta tcnica reduce los costos de transmisin: no se necesitan lneas


dedicadas.

La red est diseada para operar sin control centralizado: si una parte de la
red falla, el resto de la red puede continuar enrutando paquetes.
29 Juan Almendriz - USFQ
Introduccin a computadores y C++
Internet y la Web
TCP/IP

TCP (Transmision Control Protocol) es el protocolo (lenguaje, conjunto de


reglas) para comunicarse en Internet. Asegura que los mensajes se enruten
correctamente y lleguen intactos.

IP (Internet Protocol) permite crear una red de redes de computadores, la


arquitectura del Internet actual.

30 Juan Almendriz - USFQ


Introduccin a computadores y C++
Internet y la Web
World Wide Web, HTML, HTTP

World Wide Web permite localizar y mirar la informacin en el Internet.

En 1989, Tim Berners-Lee del CERN (European Organization for Nuclear


Research) empez a desarrollar una tecnologa para compartir informacin
va documentos enlazados. (HTML - HyperText Markup Language).

Cre tambin un protocolo de comunicaciones usado para enviar y recibir


informacin en la web: HTTP - Hypertext Transfer Protocol.

URL - Uniform Resource Locator: indica la direccin de la web que se


despliega en el navegador.

HTTPS - HTTP Secure: estndar para transmitir datos cifrados en la web.


31 Juan Almendriz - USFQ
Introduccin a computadores y C++
Ejecutando una aplicacin en C++
Descargar GuessNumber.zip. Descomprimir.
Guardar en ubicacin que se pueda recordar.
Tecla Windows + R.
Digitar cmd.exe
En la lnea de comandos digitar: c:\directorio\GuessNumber
Interactuar con el programa.
Dudas?

32 Juan Almendriz - USFQ

También podría gustarte