Cb2016- Diapositivas de Clase

download Cb2016- Diapositivas de Clase

of 45

Transcript of Cb2016- Diapositivas de Clase

  • 8/17/2019 Cb2016- Diapositivas de Clase

    1/45

    COMPUTACION BASICAIng. Arturo Díaz Pulido.

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    2/45

    Fundamentos de la programación

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    3/45

    Informática y computadoraInformática (Ciencia de la computación)Conjunto de conocimientos científicos y técnicasque hacen posible el tratamiento automático

    de la información por medio de Computadoras.El nombre INFORMÁTICA, viene de la unión de los nombresINFORmación y automática.La Informática es una Ciencia. Es la Ciencia que estudia el

    Tratamiento Automático de la Información

    .

    ComputadoraMáquina electrónica, analógica o digital,dotada de una memoria de gran capacidady de métodos de tratamiento de la información,capaz de resolver problemas matemáticos y lógicosmediante la ejecución de programas informáticos

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    4/45

    Hardware y software

    Hardware (tangible - física)

    Componentes que integran

    la parte materialde una computadora

    Software (intangible - lógica)

    Programas, instruccionesy reglas informáticaspara ejecutar tareasen una computadora

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    5/45

    Programación de computadorasProgramar 

    Indicar a la computadora qué es lo que tiene que

    hacer. Es una técnica para desarrollar a través deuna computadora a medida.

    Programa Representación de un algoritmo mediante un

    lenguaje de programación concreto. Secuencia deinstrucciones de un lenguaje de programación queresuelven el problema planteado por un algoritmo

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    6/45

    Computadoras Esquema general

    Memoria

    temporal

    Almacenamiento

    permanente

    Dispositivos

    de entrada

    TecladoRatón

    EscánerTáctil

    Dispositivos

    de salida

    MonitorImpresoraAltavoz

    Unidad Central de ProcesoCentral Processor Unit

    C.P.U.

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    7/45

    Computadoras

    La arquitectura de Von Neumann

    C.P.U. (Procesador)

    Dispositivos de E/S

    Memoria

    A.L.U.Unidad Aritmético-Lógica

    Unidad de Control

    Una ALU de 2 bits (Wi

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    8/45

    Computadoras

    La memoria

    Memoria

    Busde

    datos

    01

    02

    03

    04

    05

    06

    07

    08

    . . .

    Dirección

    Cada celda en una dirección

    Celdas de 8 / 16 / 32 / 64 bi

    Información volátil

    1 Bit = 0 / 1

    1 Byte = 8 bits = 1 carácter

    1 Kilobyte (KB) = 1024 Bytes

    1 Megabyte (MB) = 1024 KB

    1 Gigabyte (GB) = 1024 MB

    1 Terabyte (TB) = 1024 GB

    1 Petabyte (PB) = 1024 TB

    210 = 1024   1000

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    9/45

    Fundamentos de la programación

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    10/45

    Programación de computadoras Los procesadores trabajan con ceros y unos (bits)

    Unidad de memoria básica: Byte (8 bits)

    (2 dígitos hexadecimales: 01011011

    0101 1011

    5B)

    Lenguaje máquina

    Códigos hexadecimales que representan instrucciones,registros de la CPU, direcciones de memoria o datos

    InstrucciónSignificado

    A0 2F  Acceder a la celda de memoria 2F 3E 01 Copiarlo el registro 1 de la ALU

    A0 30  Acceder a la celda de memoria 30 

    3E 02 Copiarlo en el registro 2 de la ALU

    1D Sumar 

    B3 31 Guardar el resultado en la celda de memoria 31

    Lenguaje de ba

    Dependiente de lProgramación

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    11/45

    Lenguaje ensambladorNemotécnicos para los códigos hexadecimales:

    A0 READ 3E REG 1D ADD …

    Mayor legibilidad:

    READ 2F

    REG 01

    READ 30

    REG 02

    ADD

    WRITE 11

    Lenguaje de nivel medio

    Código objeto

    (lenguaje máquina)

    Programa

    ensamblador

    Código fuente

    (lenguaje ensamblador)

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    12/45

    Fundamentos de la programación

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    13/45

    Lenguajes de programación de alto nivel Más cercanos a los lenguajes natural y matemático

    resultado = dato1 + dato2;

    Mayor legibilidad, mayor facilidad de codificación Estructuración de datos / abstracción procediment

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    14/45

    Lenguajes de programación de alto nivel Traducción

    Compiladores:Compilan y enlazanprogramas completos

    Intérpretes:Compilan, enlazan

    y ejecutan instruccióna instrucción

    Compilador

    EnlazadorCódigoobjeto de

    biblioteca

    Código fuente

    #include

    using namespace std;

    int main()

    {

    cout

  • 8/17/2019 Cb2016- Diapositivas de Clase

    15/45

    Los lenguajes de programación de alto nivel

    Genealogía de lenguajes

    BASIC1964

    Logo1968

    R1

    Pytho1991

    Eiffel

    1986

    Modula1975

    Versiones / Están

    Prolog1970

    Haskell1987

    J1C++

    1983

    Smalltalk1971

    Scheme1975

    PL/I1964

    Simula1964

    Ada

    1979

    C1971

    Pascal1970

    CPL1963

    COBOL

    1959

    ALGOL1958

    FORTRAN1954

    Lisp1958

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    16/45

    Fundamentos de la programación

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    17/45

    Un poco de historiaLa prehistoria

    El ábaco

    Siglo XIXMáquina analítica de Charles Babbage

    Lady Ada Lovelace

    es considerada

    la primera

    programadora

    (Wikipedia)

    Ing. Arturo Diaz Pulido.

    http://upload.wikimedia.org/wikipedia/commons/a/ac/AnalyticalMachine_Babbage_London.jpghttp://upload.wikimedia.org/wikipedia/commons/a/ac/AnalyticalMachine_Babbage_London.jpghttp://upload.wikimedia.org/wikipedia/commons/a/ac/AnalyticalMachine_Babbage_London.jpghttp://upload.wikimedia.org/wikipedia/commons/a/ac/AnalyticalMachine_Babbage_London.jpghttp://upload.wikimedia.org/wikipedia/commons/a/ac/AnalyticalMachine_Babbage_London.jpg

  • 8/17/2019 Cb2016- Diapositivas de Clase

    18/45

    Un poco de historiaSiglo XX

    1936 Máquina de Turing

    1946 ENIAC: Primera computadora digital

    de propósito general

    1947 El transistor

    1953 IBM 650: Primera

    computadora a gran escala

    1966 ARPANET: Origen de Internet

    1967 El disquete

    1970 Sistema operativo UNIX

    1972 Primer virus informático (Creeper )

    Lenguaje de programación C

    1974 Protocolo TCP. Primera red local

    ENIAC (Wikipedia

    Ing. Arturo Diaz Pulido.

    http://upload.wikimedia.org/wikipedia/commons/4/4e/Eniac.jpghttp://upload.wikimedia.org/wikipedia/commons/4/4e/Eniac.jpg

  • 8/17/2019 Cb2016- Diapositivas de Clase

    19/45

    Un poco de historia

    1975 Se funda Microsoft

    1976 Se funda Apple

    1979 Juego Pacman

    1981 IBM PCSistema operativo MS-DOS

    1983 Lenguaje de programación C++

    1984 CD-ROM

    1985 Windows 1.0

    1990 Lenguaje HTMLWorld Wide Web

    1991 Sistema operativo Linux

    Apple II (Wikip

    IBM PC (WikipeLinux

    Ing. Arturo Diaz Pulido.

    http://upload.wikimedia.org/wikipedia/commons/b/b0/NewTux.svghttp://upload.wikimedia.org/wikipedia/commons/b/b0/NewTux.svghttp://upload.wikimedia.org/wikipedia/commons/6/69/IBM_PC_5150.jpghttp://upload.wikimedia.org/wikipedia/commons/2/24/Apple_IIe_original.jpg

  • 8/17/2019 Cb2016- Diapositivas de Clase

    20/45

    Un poco de historia1992 Windows 3.1

    1995 Lenguaje de programación JavaDVD

    1998 Se funda Google1999 MSN Messenger

    Siglo XXI

    2001 Windows XPMac OS X

    2002 Mozilla Firefox2007 iPhone

    2008 Android ...

    Ing. Arturo Diaz Pulido.

    http://www.mozilla.com/en-US/firefox/http://www.google.es/imgres?imgurl=http://tecnologyc.com/wp-content/2009/11/actualizar-messenger.jpg&imgrefurl=http://tecnologyc.com/actualizar-messenger/&usg=__LqALk3Ye3Qv2ipQuAKBFmVb6TtI=&h=460&w=469&sz=36&hl=es&start=5&um=1&itbs=1&tbnid=gQm6pfMi7jgntM:&tbnh=126&tbnw=128&prev=/images?q=messenger&um=1&hl=es&sa=N&rls=com.microsoft:es&rlz=1I7GPEA_es&tbs=isch:1http://es.wikipedia.org/wiki/Archivo:Newgooglelogo.pnghttp://www.oracle.com/technology/community/sun-oracle-community-continuity.html

  • 8/17/2019 Cb2016- Diapositivas de Clase

    21/45

    Fundamentos de la programación

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    22/45

    ¿Qué es programar?

    Decirle a un tonto muy rápido exactamente lo que tiene que hacer 

    Especificar la estructura y el comportamiento de un programa,así como probar que el programa realiza su tarea adecuadamente y con unrendimiento aceptable

    Programa: Transforma entrada en salida

    Algoritmo: Secuencia de pasos y operaciones que debe realizarel programa para resolver el problema

    El programa implementa el algoritmo en un lenguaje concreto

    SalidaPrograma

    Programa informático

    Entrada

    Ing. Arturo Diaz Pulido.

    L I i í d l S ft

  • 8/17/2019 Cb2016- Diapositivas de Clase

    23/45

    La Ingeniería del Software La programación es sólo una etapa del proceso de desarrol

    Modelo de desarrollo “en cascada”:

    Mantenimiento

    Prueba y depuración

    Programación

    Diseño

    Análisis

    Planificación Recursos necesarios, presupuesto, plan,

    ¿Qué?

    ¿Cómo?

    Implementació

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    24/45

    Fundamentos de la programación

    Ing. Arturo Diaz Pulido.

    ó

  • 8/17/2019 Cb2016- Diapositivas de Clase

    25/45

    El lenguaje de programación C++ Bjarne Stroustrup (1983)

    #include using namespace std;

    int main()

    {

    cout

  • 8/17/2019 Cb2016- Diapositivas de Clase

    26/45

  • 8/17/2019 Cb2016- Diapositivas de Clase

    27/45

    Fundamentos de la programación

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    28/45

    Los lenguajes de programación Sintaxis y semántica de los lenguajes

    Sintaxis

    Reglas que determinan cómo se pueden construiry secuenciar los elementos del lenguaje

    Semántica

    Significado de cada elemento del lenguaje

    ¿Para qué sirve?

    Ing. Arturo Diaz Pulido.

    Sintaxis de los lenguajes de programación

  • 8/17/2019 Cb2016- Diapositivas de Clase

    29/45

    Sintaxis de los lenguajes de programación

    Especificación

    Lenguajes (BNF)

    Diagramas

    ::= ::= +|-| ::= | ::= 0|1|2|3|4|5|6|7|8|9 ::=

    BNF

    | significa ó +23

    -159

    1374

    1-34

    3.4

    002

    Ejemplo: Números enteros (sin decimales)

    +

    0 .. 9

    -

    Ing. Arturo Diaz Pulido.

    Backus Naur Form (BNF)

  • 8/17/2019 Cb2016- Diapositivas de Clase

    30/45

    Backus-Naur Form (BNF)

    ::=

  • 8/17/2019 Cb2016- Diapositivas de Clase

    31/45

    Diagramas de sintaxis

    +23  

    137   4

    1-   ?

    +23

    1374

    1-34

    +

    0 .. 9

    +

    +

    -

    -

    -

    0 .. 9

    0 .. 9

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    32/45

    Fundamentos de la programación

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    33/45

    Un primer programa en C++

  • 8/17/2019 Cb2016- Diapositivas de Clase

    34/45

    Un primer programa en C++ Análisis del programa

    #include

    using namespace std;

    int main()

    {

    cout

  • 8/17/2019 Cb2016- Diapositivas de Clase

    35/45

    Un primer programa en C++ Hola Mundo!

    #include

    Using namespace std;

    void main() {cout

  • 8/17/2019 Cb2016- Diapositivas de Clase

    36/45

    Fundamentos de la programación

    Ing. Arturo Diaz Pulido.

    Herramientas de desarrollo

  • 8/17/2019 Cb2016- Diapositivas de Clase

    37/45

    Herramientas de desarrollo

    Editor

    Bloc de notas, Wordpad, Word, Writer, Gedit, Kwrite, …(texto simple, sin formatos)

    Editores específicos: coloreado sintáctico

    Recomendación: Notepad++

    Instalación y uso

    SecciónHerramientas de desa

    en el Campus Virtu

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    38/45

    Compilación, enlace y ejecución

    hola.cpp

    (código fuente)

    hola.obj

    (código objeto)

    Compilador

    Código objeto de

    la biblioteca iostream

    hola.exe

    (ejecutable)

    Enlazador

    Hola Mundo!

    Cargador

    Ing. Arturo Diaz Pulido.

    Más herramientas de desarrollo

  • 8/17/2019 Cb2016- Diapositivas de Clase

    39/45

    Más herramientas de desarrollo Compilador

    Importante: C++ estándar

    Recomendación: GNU G++ (MinGW en Windows)

    Instalación y uso

    Sección

    Herramientas de desaen el Campus Virtu

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    40/45

    Un primer programa en C++: ejecución

  • 8/17/2019 Cb2016- Diapositivas de Clase

    41/45

    p p g j

    ¿Qué hace el programa? La ejecución del programa siempre empieza en main()

    Se ejecutan las instrucciones en secuencia de principio a fin

    _Hola Mundo!

    Pantalla (cou

    _

    Muestra Hola Mundo!

    en la pantalla y salta de línea

    Devuelve 0 como código

    de terminación del programa

    Fin

    return 0;

    cout

  • 8/17/2019 Cb2016- Diapositivas de Clase

    42/45

    Fundamentos de la programación

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    43/45

    ¿Que es un Lenguaje de Programación?

    Está formado por un conjunto de símbolos y reglas sintácticas ysemánticas que definen su estructura y el significado de sus elementosy expresiones. Al proceso por el cual se escribe, se prueba, se depura,se compila (de ser necesario) y se mantiene el código fuente de unprograma informático se le llama programación.

    Ing. Arturo Diaz Pulido.

    C++:

  • 8/17/2019 Cb2016- Diapositivas de Clase

    44/45

    C++: El lenguaje C

    Lenguaje creado por Dennis M. Ritchie en 1972

    Lenguaje de nivel medio:

    Estructuras típicas de los lenguajes de alto nivel Construcciones para control a nivel de máquina

    Lenguaje sencillo (pocas palabras reservadas)

    Lenguaje estructurado (no estrictamente estructurado en bloques)

    Compartimentalización de código (funciones) y datos (ámbitos)

    Componente estructural básico: la función (subprograma)

    Programación modular Distingue entre mayúsculas y minúsculas

    Palabras reservadas (o clave): en minúsculas

    Ing. Arturo Diaz Pulido.

  • 8/17/2019 Cb2016- Diapositivas de Clase

    45/45

    PUBLICACION EN WEB

    Ing. Arturo Diaz Pulido.