Descargar

Computadoras y programación (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red

Computadoras La arquitectura de Von Neumann

Página 9 C.P.U. (Procesador) Dispositivos de E/S Memoria A.L.U.Unidad Aritmético-Lógica Unidad de Control (Gp:) Una ALU de 2 bits (Wikipedia)

edu.red

Computadoras La memoria

Página 10 Memoria Bus de datos Dirección Cada celda en una dirección Celdas de 8 / 16 / 32 / 64 bits Información volátil (Gp:) 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 (Gp:) 210 = 1024 ? 1000

edu.red

Fundamentos de la programación Página 11 Lenguaje máquina y ensamblador

edu.red

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ón Significado A0 2F Acceder a la celda de memoria 2F3E 01 Copiarlo el registro 1 de la ALU A0 30 Acceder a la celda de memoria 303E 02 Copiarlo en el registro 2 de la ALU 1D SumarB3 31 Guardar el resultado en la celda de memoria 31 Página 12 Lenguaje de bajo nivel Dependiente de la máquina Programación difícil

edu.red

Lenguaje ensamblador Nemotécnicos para los códigos hexadecimales: A0 ? READ 3E ? REG 1D ? ADD … Mayor legibilidad: READ 2FREG 01 READ 30REG 02 ADD WRITE 31 Lenguaje de nivel medio Página 13 (Gp:) Código objeto(lenguaje máquina)

(Gp:) Programa ensamblador

Código fuente(lenguaje ensamblador)

edu.red

Fundamentos de la programación Página 14 Lenguajes de programaciónde alto nivel

edu.red

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 procedimental Página 15 Pascal C++ C Ada Eiffel Ruby Cobol

BASIC FORTRAN Simula Smalltalk Prolog Lisp Java Python Haskell C# …

edu.red

Lenguajes de programación de alto nivel Traducción

Compiladores:Compilan y enlazanprogramas completos

Intérpretes:Compilan, enlazany ejecutan instruccióna instrucción

Página 16 (Gp:) Compilador

(Gp:) Enlazador

(Gp:) Códigoobjeto debiblioteca

(Gp:) Código fuente (Gp:) #include < iostream> using namespace std;

int main() { cout < < "Hola Mundo!" < < endl; return 0; }

(Gp:) Código objeto (Gp:) 0100010100111010011100…

(Gp:) Programaejecutable (Gp:) Para una arquitectura concretay un sistema operativo

edu.red

Los lenguajes de programación de alto nivel Genealogía de lenguajes Página 17 (Gp:) BASIC1964

(Gp:) Logo1968

(Gp:) Ruby1993

(Gp:) Python1991

(Gp:) Eiffel1986

(Gp:) Modula1975

Fuente:http://www.levenez.com/lang/ Versiones / Estándares Prolog1970 Haskell1987 (Gp:) C#2000

(Gp:) Java1995

(Gp:) C++1983

(Gp:) Smalltalk1971

(Gp:) Scheme1975

(Gp:) PL/I1964

(Gp:) Simula1964

(Gp:) Ada1979

(Gp:) C1971

(Gp:) Pascal1970

(Gp:) CPL1963

COBOL1959 (Gp:) ALGOL1958

FORTRAN1954 Lisp1958

edu.red

Fundamentos de la programación Página 18 Un poco de historia

edu.red

Un poco de historia La prehistoria El ábaco Siglo XIX Máquina analítica de Charles Babbage Página 19 Lady Ada Lovelacees consideradala primeraprogramadora (Gp:) (Wikipedia)

edu.red

Un poco de historia Siglo XX 1936 Máquina de Turing 1946 ENIAC: Primera computadora digitalde propósito general 1947 El transistor 1953 IBM 650: Primeracomputadora 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 Página 20 (Gp:) ENIAC (Wikipedia)

edu.red

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 Página 21 (Gp:) Apple II (Wikipedia)

(Gp:) IBM PC (Wikipedia)

(Gp:) Linux

edu.red

Un poco de historia 1992 Windows 3.1 1995 Lenguaje de programación JavaDVD 1998 Se funda Google 1999 MSN Messenger Siglo XXI 2001 Windows XP Mac OS X 2002 Mozilla Firefox 2007 iPhone 2008 Android …

Página 22

edu.red

Fundamentos de la programación Página 23 Programacióne Ingeniería del Software

edu.red

¿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 un rendimiento aceptable Programa: Transforma entrada en salida

Algoritmo: Secuencia de pasos y operaciones que debe realizar el programa para resolver el problema El programa implementa el algoritmo en un lenguaje concreto (Gp:) Salida

(Gp:) Programa

Programa informático Página 24 Entrada

edu.red

La Ingeniería del Software La programación es sólo una etapa del proceso de desarrollo Modelo de desarrollo “en cascada”: Página 25 (Gp:) Mantenimiento

(Gp:) Prueba y depuración

(Gp:) Programación

(Gp:) Diseño

(Gp:) Análisis

Planificación Recursos necesarios, presupuesto, plan, … ¿Qué? ¿Cómo? Implementación

edu.red

Fundamentos de la programación Página 26 El lenguaje de programación C++

edu.red

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

#include < iostream> using namespace std;

int main() { cout < < "Hola Mundo!" < < endl; // Muestra Hola Mundo!

return 0; } Página 27 Hola Mundo!

edu.red

Elementos del lenguaje Instrucciones Datos: literales, variables, tipos Subprogramas (funciones) Comentarios Directivas …

Página 28 #include < iostream> using namespace std;

int main() { cout < < "Hola Mundo!" < < endl; // Muestra Hola Mundo!

return 0; } Directiva Subprograma Comentario (Gp:) Instrucción (Gp:) Instrucción

(Gp:) Dato (Gp:) Dato

edu.red

Fundamentos de la programación Página 29 Sintaxis de los lenguajesde programación

edu.red

Los lenguajes de programación Sintaxis y semántica de los lenguajes Sintaxis Reglas que determinan cómo se pueden construir y secuenciar los elementos del lenguaje

Semántica Significado de cada elemento del lenguaje¿Para qué sirve?

Página 30

edu.red

Sintaxis de los lenguajes de programación Especificación Lenguajes (BNF) Diagramas Página 31 (Gp:) < numero entero> ::= < signo opcional>< secuencia de dígitos> < signo opcional> ::= +|-|< nada> < secuencia de dígitos> ::= < dígito>|< dígito>< secuencia de dígitos> < dígito> ::= 0|1|2|3|4|5|6|7|8|9 < nada> ::= (Gp:) BNF (Gp:) | significa ó

+23 ? -159 ? 1374 ? 1-34 ? 3.4 ? 002 ? Ejemplo: Números enteros (sin decimales) (Gp:) + (Gp:) 0 .. 9 (Gp:) –

edu.red

Backus-Naur Form (BNF) Página 32 < numero entero> ::= < signo opcional>< secuencia de dígitos> < signo opcional> ::= +|-|< nada> < secuencia de dígitos> ::= < dígito>|< dígito>< secuencia de dígitos> < dígito> ::= 0|1|2|3|4|5|6|7|8|9 < nada> ::= +23 < numero entero> ::= < signo opcional>< secuencia de dígitos> ::= +< secuencia de dígitos> ::= +< dígito>< secuencia de dígitos> ::= +2< secuencia de dígitos> ::= +2< dígito> ::= +23 1374 < numero entero> ::= < signo opcional>< secuencia de dígitos> ::= < secuencia de dígitos> ::= < dígito>< secuencia de dígitos> ::= 1< secuencia de dígitos> ::= 1< dígito>< secuencia de dígitos> ::= 13< secuencia de dígitos> ::= 13< dígito>< secuencia de dígitos> ::= 137< secuencia de dígitos> ::= 137< dígito> ::= 1374 1-34 < numero entero> ::= < signo opcional>< secuencia de dígitos> ::= < secuencia de dígitos> ::= < dígito>< secuencia de dígitos> ::= 1< secuencia de dígitos> ::= ERROR (- no es < dígito>) ? ? ?

edu.red

Diagramas de sintaxis Página 33 + 2 3 ? 1 3 7 ? 4 1 – ? ? +23 1374 1-34 + 0 .. 9 + + – – – 0 .. 9 0 .. 9

edu.red

Fundamentos de la programación Página 34 Un primer programa en C++

edu.red

Un primer programa en C++ Hola Mundo! Un programa que muestra un saludo en la pantalla: #include < iostream> using namespace std;

int main() // main() es donde empieza la ejecución { cout < < "Hola Mundo!" < < endl; // Muestra Hola Mundo!

return 0; } Página 35

edu.red

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

#include < iostream> using namespace std;

int main() { cout < < "Hola Mundo!" < < endl;

return 0; } Página 36 Las instrucciones terminan en ; Directiva Instrucción Declaración Instrucción Instrucción (Gp:) Biblioteca

(Gp:) Espacio de nombres

(Gp:) Palabras reservadas

(Gp:) Tipo

(Gp:) Datos literales

(Gp:) Cuerpo de la función

(Gp:) Cabecera de la función

(Gp:) Bloque de código

Cadena de caracteres Constante Operador Operador Variable Número Coloreado sintáctico

edu.red

Un primer programa en C++ Hola Mundo! Casi todo es infraestructura Sólo cout < < "Hola Mundo!" < < endl hace algo palpable La infraestructura (notación, bibliotecas y otro soporte) hace nuestro código simple, completo, confiable y eficiente ¡El estilo importa! Página 37

edu.red

Fundamentos de la programación Página 38 Herramientas de desarrollo

edu.red

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++ Página 39 Instalación y uso:SecciónHerramientas de desarrolloen el Campus Virtual

edu.red

Compilación, enlace y ejecución

Página 40 hola.cpp(código fuente) (Gp:) hola.obj(código objeto) (Gp:) Compilador

(Gp:) Código objeto dela biblioteca iostream

(Gp:) hola.exe(ejecutable)

(Gp:) Enlazador

(Gp:) Hola Mundo! (Gp:) Cargador

edu.red

Más herramientas de desarrollo Compilador Importante: C++ estándar Recomendación: GNU G++ (MinGW en Windows)

Página 41 Instalación y uso:SecciónHerramientas de desarrolloen el Campus Virtual

edu.red

Más herramientas de desarrollo Entornos de desarrollo Para editar, compilar y probar el código del programa Recomendaciones: Windows: MS Visual Studio / C++ Express o Eclipse Linux: Netbeans o Eclipse

Página 42 Instalación y uso:SecciónHerramientas de desarrolloen el Campus Virtual

edu.red

Un primer programa en C++: ejecución ¿Qué hace el programa? La ejecución del programa siempre empieza en main() Se ejecutan las instrucciones en secuencia de principio a fin

Página 43 _ Hola Mundo! Pantalla (cout) _ Muestra Hola Mundo!en la pantalla y salta de línea Devuelve 0 como códigode terminación del programa (Gp:) Fin

(Gp:) return 0;

(Gp:) cout < < "Hola Mundo!" < < endl;

Inicio

edu.red

Fundamentos de la programación Página 44 C++: Un mejor C

edu.red

C++: Un mejor 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 Página 45

edu.red

Acerca de Creative Commons Licencia CC (Creative Commons) Este tipo de licencias ofrecen algunos derechos a terceras personas bajo ciertas condiciones. Este documento tiene establecidas las siguientes:

Pulsa en la imagen de arriba a la derecha para saber más. Página 46 Reconocimiento (Attribution): En cualquier explotación de la obra autorizada por la licenciahará falta reconocer la autoría. No comercial (Non commercial): La explotación de la obra queda limitada a usos no comerciales. Compartir igual (Share alike):La explotación autorizada incluye la creación de obras derivadas siempre que mantengan la misma licencia al ser divulgadas.

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente