SlideShare una empresa de Scribd logo
1 de 47
Grado en Ingeniería Informática
Grado en Ingeniería del Software
Grado en Ingeniería de Computadores
Luis Hernández Yáñez
Facultad de Informática
Universidad Complutense
Fundamentos de la programación
1
Luis
Hernández
Yáñez
Informática, computadoras y programación 3
Lenguaje máquina y ensamblador 12
Lenguajes de programación de alto nivel 15
Un poco de historia 19
Programación e Ingeniería del Software 24
El lenguaje de programación C++ 27
Sintaxis de los lenguajes de programación 30
Un primer programa en C++ 35
Herramientas de desarrollo 39
C++: Un mejor C 45
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Página 3
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Informática (Ciencia de la computación)
Conjunto de conocimientos científicos y técnicas
que hacen posible el tratamiento automático
de la información por medio de ordenadores
Computadora
Máquina electrónica, analógica o digital,
dotada de una memoria de gran capacidad
y de métodos de tratamiento de la información,
capaz de resolver problemas matemáticos y lógicos
mediante la ejecución de programas informáticos
Página 4
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
En todas partes y con muchas formas
Página 5
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Hardware
Componentes que integran
la parte material
de una computadora
Software
Programas, instrucciones
y reglas informáticas
para ejecutar tareas
en una computadora
Página 6
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Programar
Indicar a la computadora qué es lo que tiene que hacer
Programa
 Secuencia de instrucciones
 Instrucciones que entiende la computadora
 Y que persiguen un objetivo: ¡resolver un problema!
Página 7
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Trabajo en equipo
Múltiples roles...
 Gestores
 Analistas
 Diseñadores
 Programadores
 Probadores
 Administradores de
sistemas
...
Página 8
Fundamentos de la programación: Computadoras y programación
Parque Jurásico
Luis
Hernández
Yáñez
Esquema general
Página 9
Fundamentos de la programación: Computadoras y programación
Memoria
temporal
Almacenamiento
permanente
Dispositivos
de entrada
Teclado
Ratón
Escáner
Táctil
…
Dispositivos
de salida
Monitor
Impresora
Altavoz
…
Unidad Central de Proceso
Central Processor Unit
C.P.U.
Luis
Hernández
Yáñez
La arquitectura de Von Neumann
Página 10
Fundamentos de la programación: Computadoras y programación
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 (Wikipedia)
Luis
Hernández
Yáñez
La memoria
Página 11
Fundamentos de la programación: Computadoras y programación
Memoria
Bus
de
datos
01
02
03
04
05
06
07
08
. . .
Dirección
Cada celda en una dirección
Celdas de 8 / 16 / 32 / 64 bits
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
Luis
Hernández
Yáñez
Página 12
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
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 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
Página 13
Fundamentos de la programación: Computadoras y programación
Lenguaje de bajo nivel
Dependiente de la máquina
Programación difícil
Luis
Hernández
Yáñez
Nemotécnicos para los códigos hexadecimales:
A0  READ 3E  REG 1D  ADD …
Mayor legibilidad:
READ 2F
REG 01
READ 30
REG 02
ADD
WRITE 31
Lenguaje de nivel medio
Página 14
Fundamentos de la programación: Computadoras y programación
Código objeto
(lenguaje máquina)
Programa
ensamblador
Código fuente
(lenguaje ensamblador)
Luis
Hernández
Yáñez
Página 15
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
 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 16
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Traducción
Compiladores:
Compilan y enlazan
programas completos
Intérpretes:
Compilan, enlazan
y ejecutan instrucción
a instrucción
Página 17
Fundamentos de la programación: Computadoras y programación
Compilador
Enlazador
Código
objeto de
biblioteca
Código fuente
#include <iostream>
using namespace std;
int main()
{
cout << "Hola Mundo!" << endl;
return 0;
}
Código objeto 0100010100111010011100…
Programa
ejecutable
Para una arquitectura concreta
y un sistema operativo
Luis
Hernández
Yáñez
Genealogía de lenguajes
Página 18
Fundamentos de la programación: Computadoras y programación
BASIC
1964
Logo
1968
Ruby
1993
Python
1991
Eiffel
1986
Modula
1975
Fuente:
http://www.levenez.com/lang/
Versiones / Estándares
Prolog
1970
Haskell
1987
C#
2000
Java
1995
C++
1983
Smalltalk
1971
Scheme
1975
PL/I
1964
Simula
1964
Ada
1979
C
1971
Pascal
1970
CPL
1963
COBOL
1959
ALGOL
1958
FORTRAN
1954
Lisp
1958
Luis
Hernández
Yáñez
Página 19
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
La prehistoria
El ábaco
Siglo XIX
Máquina analítica de Charles Babbage
Página 20
Fundamentos de la programación: Computadoras y programación
Lady Ada Lovelace
es considerada
la primera
programadora
(Wikipedia)
Luis
Hernández
Yáñez
Siglo 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
Página 21
Fundamentos de la programación: Computadoras y programación
ENIAC (Wikipedia)
Luis
Hernández
Yáñez
1975 Se funda Microsoft
1976 Se funda Apple
1979 Juego Pacman
1981 IBM PC
Sistema operativo MS-DOS
1983 Lenguaje de programación C++
1984 CD-ROM
1985 Windows 1.0
1990 Lenguaje HTML
World Wide Web
1991 Sistema operativo Linux
Página 22
Fundamentos de la programación: Computadoras y programación
Apple II (Wikipedia)
IBM PC (Wikipedia)
Linux
Luis
Hernández
Yáñez
1992 Windows 3.1
1995 Lenguaje de programación Java
DVD
1998 Se funda Google
1999 MSN Messenger
Siglo XXI
2001 Windows XP
Mac OS X
2002 Mozilla Firefox
2007 iPhone
2008 Android ...
Página 23
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Página 24
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
¿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
Salida
Programa
Página 25
Fundamentos de la programación: Computadoras y programación
Entrada
Luis
Hernández
Yáñez
La programación es sólo una etapa del proceso de desarrollo
Modelo de desarrollo “en cascada”:
Página 26
Fundamentos de la programación: Computadoras y programación
Mantenimiento
Prueba y depuración
Programación
Diseño
Análisis
Planificación Recursos necesarios, presupuesto, plan, …
¿Qué?
¿Cómo?
Implementación
Luis
Hernández
Yáñez
Página 27
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Bjarne Stroustrup (1983)
#include <iostream>
using namespace std;
int main()
{
cout << "Hola Mundo!" << endl;
// Muestra Hola Mundo!
return 0;
}
Página 28
Fundamentos de la programación: Computadoras y programación
Hola Mundo!
Luis
Hernández
Yáñez
Instrucciones
Datos: literales, variables, tipos
Subprogramas (funciones)
Comentarios
Directivas
...
Fundamentos de la programación: Computadoras y programación Página 29
#include <iostream>
using namespace std;
int main()
{
cout << "Hola Mundo!" << endl;
// Muestra Hola Mundo!
return 0;
}
Directiva
Subprograma
Comentario
Instrucción
Instrucción
Dato
Dato
Luis
Hernández
Yáñez
Página 30
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
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?
Fundamentos de la programación: Computadoras y programación Página 31
Luis
Hernández
Yáñez
Especificación
 Lenguajes (BNF)
 Diagramas
Fundamentos de la programación: Computadoras y programación 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> ::=
BNF
| significa ó +23 
-159 
1374 
1-34 
3.4 
002 
Ejemplo: Números enteros (sin decimales)
+
0 .. 9
-
Luis
Hernández
Yáñez
Fundamentos de la programación: Computadoras y programación Página 33
<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>)



Luis
Hernández
Yáñez
Fundamentos de la programación: Computadoras y programación Página 34
+23 
137 
4
1- 
?
+23
1374
1-34
+
0 .. 9
+
+
-
-
-
0 .. 9
0 .. 9
Luis
Hernández
Yáñez
Página 35
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
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 36
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Análisis del programa
#include <iostream>
using namespace std;
int main()
{
cout << "Hola Mundo!" << endl;
return 0;
}
Página 37
Las instrucciones terminan en ;
Fundamentos de la programación: Computadoras y programación
Directiva
Instrucción
Declaración
Instrucción
Instrucción
Biblioteca
Espacio de nombres
Palabras reservadas
Tipo
Datos literales
Cuerpo de la función
Cabecera de la función
Bloque
de
código
Cadena de caracteres Constante
Operador
Operador
Variable
Número
Coloreado sintáctico
Luis
Hernández
Yáñez
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 38
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Página 39
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Editor
 Bloc de notas, Wordpad, Word, Writer, Gedit, Kwrite, …
(texto simple, sin formatos)
 Editores específicos: coloreado sintáctico
 Recomendación: Notepad++
Página 40
Instalación y uso:
Sección
Herramientas de desarrollo
en el Campus Virtual
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Página 41
Fundamentos de la programación: Computadoras y programació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
Luis
Hernández
Yáñez
Compilador
 Importante: C++ estándar
 Recomendación: GNU G++ (MinGW en Windows)
Página 42
Instalación y uso:
Sección
Herramientas de desarrollo
en el Campus Virtual
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
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 43
Instalación y uso:
Sección
Herramientas de desarrollo
en el Campus Virtual
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
¿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 44
_
Hola Mundo!
Pantalla (cout)
_
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 << "Hola Mundo!" << endl;
Inicio
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
Página 45
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
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 (noestrictamente 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 46
Fundamentos de la programación: Computadoras y programación
Luis
Hernández
Yáñez
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.
Fundamentos de la programación: Computadoras y programación Página 47
Reconocimiento (Attribution):
En cualquier explotación de la obra autorizada por la licencia
hará 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.

Más contenido relacionado

Similar a Programación e ingeniería

Representación de datos Hardware y Software
Representación de datosHardware y SoftwareRepresentación de datosHardware y Software
Representación de datos Hardware y SoftwareCarlos Medina Raymundo
 
Introducción a la informática
Introducción a la informáticaIntroducción a la informática
Introducción a la informáticaJeckson Loza
 
Conceptos basicos de programacion
Conceptos basicos de programacionConceptos basicos de programacion
Conceptos basicos de programacionBarbara brice?
 
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIA
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIAARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIA
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIAIsaias Castro
 
Universidad De Los Andes
Universidad De Los AndesUniversidad De Los Andes
Universidad De Los Andesbarrios
 
INTRODUCCIÓN A LA COMPUTACIÓN
INTRODUCCIÓN A LA COMPUTACIÓNINTRODUCCIÓN A LA COMPUTACIÓN
INTRODUCCIÓN A LA COMPUTACIÓNOctavio Arias
 
Clase 6 introduccion_a_la_programacion
Clase 6 introduccion_a_la_programacionClase 6 introduccion_a_la_programacion
Clase 6 introduccion_a_la_programacionDr.Ing. Uriel
 
Conceptos fundamentales de la informática
Conceptos fundamentales de la informática Conceptos fundamentales de la informática
Conceptos fundamentales de la informática Agostina Rivera
 
Arquitectura de los ordenadores
Arquitectura de los ordenadores Arquitectura de los ordenadores
Arquitectura de los ordenadores cjimpin
 
Arquitectura de los ordenadores
Arquitectura de los ordenadores Arquitectura de los ordenadores
Arquitectura de los ordenadores mbauter
 
Introducion a la informatica
Introducion a la informaticaIntroducion a la informatica
Introducion a la informaticaleoja3485
 
Funadamentos de computacion
Funadamentos de computacionFunadamentos de computacion
Funadamentos de computacionEduardo Uvidia
 

Similar a Programación e ingeniería (20)

Representación de datos Hardware y Software
Representación de datosHardware y SoftwareRepresentación de datosHardware y Software
Representación de datos Hardware y Software
 
Introducción a la informática
Introducción a la informáticaIntroducción a la informática
Introducción a la informática
 
Tema1
Tema1Tema1
Tema1
 
Tema1.ppt
Tema1.pptTema1.ppt
Tema1.ppt
 
Conceptos basicos de programacion
Conceptos basicos de programacionConceptos basicos de programacion
Conceptos basicos de programacion
 
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIA
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIAARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIA
ARQUITECTURA INTERNA DE UNA MÁQUINA RUDIMENTARIA
 
Universidad De Los Andes
Universidad De Los AndesUniversidad De Los Andes
Universidad De Los Andes
 
Computacion
ComputacionComputacion
Computacion
 
INTRODUCCIÓN A LA COMPUTACIÓN
INTRODUCCIÓN A LA COMPUTACIÓNINTRODUCCIÓN A LA COMPUTACIÓN
INTRODUCCIÓN A LA COMPUTACIÓN
 
Tema1
Tema1Tema1
Tema1
 
Clase 6 introduccion_a_la_programacion
Clase 6 introduccion_a_la_programacionClase 6 introduccion_a_la_programacion
Clase 6 introduccion_a_la_programacion
 
Informática básica 2011
Informática básica 2011Informática básica 2011
Informática básica 2011
 
Conceptos fundamentales de la informática
Conceptos fundamentales de la informática Conceptos fundamentales de la informática
Conceptos fundamentales de la informática
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 
Arquitectura de los ordenadores
Arquitectura de los ordenadores Arquitectura de los ordenadores
Arquitectura de los ordenadores
 
Arquitectura de los ordenadores
Arquitectura de los ordenadores Arquitectura de los ordenadores
Arquitectura de los ordenadores
 
Introducción a la Informática
Introducción a la InformáticaIntroducción a la Informática
Introducción a la Informática
 
Introducion a la informatica
Introducion a la informaticaIntroducion a la informatica
Introducion a la informatica
 
Funadamentos de computacion
Funadamentos de computacionFunadamentos de computacion
Funadamentos de computacion
 

Más de Aldo Hernán Zanabria Gálvez

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...Aldo Hernán Zanabria Gálvez
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...Aldo Hernán Zanabria Gálvez
 
Resumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoResumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoAldo Hernán Zanabria Gálvez
 
Clase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesClase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesAldo Hernán Zanabria Gálvez
 
Cloud computing para negocios tecnologicos exposicion
Cloud computing  para negocios tecnologicos exposicionCloud computing  para negocios tecnologicos exposicion
Cloud computing para negocios tecnologicos exposicionAldo Hernán Zanabria Gálvez
 

Más de Aldo Hernán Zanabria Gálvez (20)

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
 
mejorando la web guia de html 5
mejorando la web guia de html 5mejorando la web guia de html 5
mejorando la web guia de html 5
 
Guía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdfGuía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdf
 
emprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptxemprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptx
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
 
didactica
didacticadidactica
didactica
 
Tarea1 aldo zanabria
Tarea1 aldo zanabriaTarea1 aldo zanabria
Tarea1 aldo zanabria
 
Tarea 2 aldo zanabria
Tarea 2 aldo zanabriaTarea 2 aldo zanabria
Tarea 2 aldo zanabria
 
Carolinos del milenio pasado - Puno
Carolinos del milenio pasado - PunoCarolinos del milenio pasado - Puno
Carolinos del milenio pasado - Puno
 
ingenieria de sistemas
ingenieria de sistemasingenieria de sistemas
ingenieria de sistemas
 
Electricidad con recursos renovables
Electricidad con recursos renovablesElectricidad con recursos renovables
Electricidad con recursos renovables
 
Variables
VariablesVariables
Variables
 
Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal
 
Calidad de Agua
Calidad de AguaCalidad de Agua
Calidad de Agua
 
Resumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoResumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede Turismo
 
Clase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesClase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y Comunicaciones
 
Plan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la MujerPlan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la Mujer
 
peritaciones y tasación puno
peritaciones y tasación punoperitaciones y tasación puno
peritaciones y tasación puno
 
producción en la empresa turística
producción en la empresa turísticaproducción en la empresa turística
producción en la empresa turística
 
Cloud computing para negocios tecnologicos exposicion
Cloud computing  para negocios tecnologicos exposicionCloud computing  para negocios tecnologicos exposicion
Cloud computing para negocios tecnologicos exposicion
 

Último

Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 

Último (20)

Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 

Programación e ingeniería

  • 1. Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática Universidad Complutense Fundamentos de la programación 1
  • 2. Luis Hernández Yáñez Informática, computadoras y programación 3 Lenguaje máquina y ensamblador 12 Lenguajes de programación de alto nivel 15 Un poco de historia 19 Programación e Ingeniería del Software 24 El lenguaje de programación C++ 27 Sintaxis de los lenguajes de programación 30 Un primer programa en C++ 35 Herramientas de desarrollo 39 C++: Un mejor C 45 Fundamentos de la programación: Computadoras y programación
  • 3. Luis Hernández Yáñez Página 3 Fundamentos de la programación: Computadoras y programación
  • 4. Luis Hernández Yáñez Informática (Ciencia de la computación) Conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de ordenadores Computadora Máquina electrónica, analógica o digital, dotada de una memoria de gran capacidad y de métodos de tratamiento de la información, capaz de resolver problemas matemáticos y lógicos mediante la ejecución de programas informáticos Página 4 Fundamentos de la programación: Computadoras y programación
  • 5. Luis Hernández Yáñez En todas partes y con muchas formas Página 5 Fundamentos de la programación: Computadoras y programación
  • 6. Luis Hernández Yáñez Hardware Componentes que integran la parte material de una computadora Software Programas, instrucciones y reglas informáticas para ejecutar tareas en una computadora Página 6 Fundamentos de la programación: Computadoras y programación
  • 7. Luis Hernández Yáñez Programar Indicar a la computadora qué es lo que tiene que hacer Programa  Secuencia de instrucciones  Instrucciones que entiende la computadora  Y que persiguen un objetivo: ¡resolver un problema! Página 7 Fundamentos de la programación: Computadoras y programación
  • 8. Luis Hernández Yáñez Trabajo en equipo Múltiples roles...  Gestores  Analistas  Diseñadores  Programadores  Probadores  Administradores de sistemas ... Página 8 Fundamentos de la programación: Computadoras y programación Parque Jurásico
  • 9. Luis Hernández Yáñez Esquema general Página 9 Fundamentos de la programación: Computadoras y programación Memoria temporal Almacenamiento permanente Dispositivos de entrada Teclado Ratón Escáner Táctil … Dispositivos de salida Monitor Impresora Altavoz … Unidad Central de Proceso Central Processor Unit C.P.U.
  • 10. Luis Hernández Yáñez La arquitectura de Von Neumann Página 10 Fundamentos de la programación: Computadoras y programación 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 (Wikipedia)
  • 11. Luis Hernández Yáñez La memoria Página 11 Fundamentos de la programación: Computadoras y programación Memoria Bus de datos 01 02 03 04 05 06 07 08 . . . Dirección Cada celda en una dirección Celdas de 8 / 16 / 32 / 64 bits 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
  • 12. Luis Hernández Yáñez Página 12 Fundamentos de la programación: Computadoras y programación
  • 13. Luis Hernández Yáñez 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 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 Página 13 Fundamentos de la programación: Computadoras y programación Lenguaje de bajo nivel Dependiente de la máquina Programación difícil
  • 14. Luis Hernández Yáñez Nemotécnicos para los códigos hexadecimales: A0  READ 3E  REG 1D  ADD … Mayor legibilidad: READ 2F REG 01 READ 30 REG 02 ADD WRITE 31 Lenguaje de nivel medio Página 14 Fundamentos de la programación: Computadoras y programación Código objeto (lenguaje máquina) Programa ensamblador Código fuente (lenguaje ensamblador)
  • 15. Luis Hernández Yáñez Página 15 Fundamentos de la programación: Computadoras y programación
  • 16. Luis Hernández Yáñez  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 16 Fundamentos de la programación: Computadoras y programación
  • 17. Luis Hernández Yáñez Traducción Compiladores: Compilan y enlazan programas completos Intérpretes: Compilan, enlazan y ejecutan instrucción a instrucción Página 17 Fundamentos de la programación: Computadoras y programación Compilador Enlazador Código objeto de biblioteca Código fuente #include <iostream> using namespace std; int main() { cout << "Hola Mundo!" << endl; return 0; } Código objeto 0100010100111010011100… Programa ejecutable Para una arquitectura concreta y un sistema operativo
  • 18. Luis Hernández Yáñez Genealogía de lenguajes Página 18 Fundamentos de la programación: Computadoras y programación BASIC 1964 Logo 1968 Ruby 1993 Python 1991 Eiffel 1986 Modula 1975 Fuente: http://www.levenez.com/lang/ Versiones / Estándares Prolog 1970 Haskell 1987 C# 2000 Java 1995 C++ 1983 Smalltalk 1971 Scheme 1975 PL/I 1964 Simula 1964 Ada 1979 C 1971 Pascal 1970 CPL 1963 COBOL 1959 ALGOL 1958 FORTRAN 1954 Lisp 1958
  • 19. Luis Hernández Yáñez Página 19 Fundamentos de la programación: Computadoras y programación
  • 20. Luis Hernández Yáñez La prehistoria El ábaco Siglo XIX Máquina analítica de Charles Babbage Página 20 Fundamentos de la programación: Computadoras y programación Lady Ada Lovelace es considerada la primera programadora (Wikipedia)
  • 21. Luis Hernández Yáñez Siglo 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 Página 21 Fundamentos de la programación: Computadoras y programación ENIAC (Wikipedia)
  • 22. Luis Hernández Yáñez 1975 Se funda Microsoft 1976 Se funda Apple 1979 Juego Pacman 1981 IBM PC Sistema operativo MS-DOS 1983 Lenguaje de programación C++ 1984 CD-ROM 1985 Windows 1.0 1990 Lenguaje HTML World Wide Web 1991 Sistema operativo Linux Página 22 Fundamentos de la programación: Computadoras y programación Apple II (Wikipedia) IBM PC (Wikipedia) Linux
  • 23. Luis Hernández Yáñez 1992 Windows 3.1 1995 Lenguaje de programación Java DVD 1998 Se funda Google 1999 MSN Messenger Siglo XXI 2001 Windows XP Mac OS X 2002 Mozilla Firefox 2007 iPhone 2008 Android ... Página 23 Fundamentos de la programación: Computadoras y programación
  • 24. Luis Hernández Yáñez Página 24 Fundamentos de la programación: Computadoras y programación
  • 25. Luis Hernández Yáñez ¿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 Salida Programa Página 25 Fundamentos de la programación: Computadoras y programación Entrada
  • 26. Luis Hernández Yáñez La programación es sólo una etapa del proceso de desarrollo Modelo de desarrollo “en cascada”: Página 26 Fundamentos de la programación: Computadoras y programación Mantenimiento Prueba y depuración Programación Diseño Análisis Planificación Recursos necesarios, presupuesto, plan, … ¿Qué? ¿Cómo? Implementación
  • 27. Luis Hernández Yáñez Página 27 Fundamentos de la programación: Computadoras y programación
  • 28. Luis Hernández Yáñez Bjarne Stroustrup (1983) #include <iostream> using namespace std; int main() { cout << "Hola Mundo!" << endl; // Muestra Hola Mundo! return 0; } Página 28 Fundamentos de la programación: Computadoras y programación Hola Mundo!
  • 29. Luis Hernández Yáñez Instrucciones Datos: literales, variables, tipos Subprogramas (funciones) Comentarios Directivas ... Fundamentos de la programación: Computadoras y programación Página 29 #include <iostream> using namespace std; int main() { cout << "Hola Mundo!" << endl; // Muestra Hola Mundo! return 0; } Directiva Subprograma Comentario Instrucción Instrucción Dato Dato
  • 30. Luis Hernández Yáñez Página 30 Fundamentos de la programación: Computadoras y programación
  • 31. Luis Hernández Yáñez 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? Fundamentos de la programación: Computadoras y programación Página 31
  • 32. Luis Hernández Yáñez Especificación  Lenguajes (BNF)  Diagramas Fundamentos de la programación: Computadoras y programación 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> ::= BNF | significa ó +23  -159  1374  1-34  3.4  002  Ejemplo: Números enteros (sin decimales) + 0 .. 9 -
  • 33. Luis Hernández Yáñez Fundamentos de la programación: Computadoras y programación Página 33 <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>)   
  • 34. Luis Hernández Yáñez Fundamentos de la programación: Computadoras y programación Página 34 +23  137  4 1-  ? +23 1374 1-34 + 0 .. 9 + + - - - 0 .. 9 0 .. 9
  • 35. Luis Hernández Yáñez Página 35 Fundamentos de la programación: Computadoras y programación
  • 36. Luis Hernández Yáñez 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 36 Fundamentos de la programación: Computadoras y programación
  • 37. Luis Hernández Yáñez Análisis del programa #include <iostream> using namespace std; int main() { cout << "Hola Mundo!" << endl; return 0; } Página 37 Las instrucciones terminan en ; Fundamentos de la programación: Computadoras y programación Directiva Instrucción Declaración Instrucción Instrucción Biblioteca Espacio de nombres Palabras reservadas Tipo Datos literales Cuerpo de la función Cabecera de la función Bloque de código Cadena de caracteres Constante Operador Operador Variable Número Coloreado sintáctico
  • 38. Luis Hernández Yáñez 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 38 Fundamentos de la programación: Computadoras y programación
  • 39. Luis Hernández Yáñez Página 39 Fundamentos de la programación: Computadoras y programación
  • 40. Luis Hernández Yáñez Editor  Bloc de notas, Wordpad, Word, Writer, Gedit, Kwrite, … (texto simple, sin formatos)  Editores específicos: coloreado sintáctico  Recomendación: Notepad++ Página 40 Instalación y uso: Sección Herramientas de desarrollo en el Campus Virtual Fundamentos de la programación: Computadoras y programación
  • 41. Luis Hernández Yáñez Página 41 Fundamentos de la programación: Computadoras y programació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
  • 42. Luis Hernández Yáñez Compilador  Importante: C++ estándar  Recomendación: GNU G++ (MinGW en Windows) Página 42 Instalación y uso: Sección Herramientas de desarrollo en el Campus Virtual Fundamentos de la programación: Computadoras y programación
  • 43. Luis Hernández Yáñez 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 43 Instalación y uso: Sección Herramientas de desarrollo en el Campus Virtual Fundamentos de la programación: Computadoras y programación
  • 44. Luis Hernández Yáñez ¿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 44 _ Hola Mundo! Pantalla (cout) _ 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 << "Hola Mundo!" << endl; Inicio Fundamentos de la programación: Computadoras y programación
  • 45. Luis Hernández Yáñez Página 45 Fundamentos de la programación: Computadoras y programación
  • 46. Luis Hernández Yáñez 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 (noestrictamente 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 46 Fundamentos de la programación: Computadoras y programación
  • 47. Luis Hernández Yáñez 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. Fundamentos de la programación: Computadoras y programación Página 47 Reconocimiento (Attribution): En cualquier explotación de la obra autorizada por la licencia hará 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.

Notas del editor

  1. Preguntar qué creen ellos que es la Informática o una computadora.
  2. ¿Qué es el hardware? ¿Qué es el software?
  3. ¿Qué es programar?
  4. Imagen distorsionada (¿o no?)
  5. La máquina analítica no se llegó a terminar tras numerosas versiones entre 1816 y 1872. Utilizaría tarjetas perforadas. Ada Lovelace describió la forma de programar la máquina analítica. Hija de Lord Byron.
  6. Turing (1912): Enigma, I.A. (test de Turing), morfogénesis. ENIAC: 167 m2, 27 Tm, 6.000 interruptores IBM 360: terminales remotos ARPANET: DoD
  7. UNIX: Ken Thompson y Dennis Ritchie Pascal: Niklaus Wirth Creeper: autoreplicante (experimental) C: Dennis Ritchie MS: Bill Gates y Paul Allen (hoy Steve Ballmer) Apple: Steve Jobs y Steve Wozniak
  8. Java: SUN Microsystems Google: Larry Page