Download POO I - Buap

Document related concepts

Programación funcional wikipedia , lookup

Lisp wikipedia , lookup

Alice (lenguaje de programación) wikipedia , lookup

Logo (lenguaje de programación) wikipedia , lookup

Transcript
Introducción
Facultad de Ciencias de la Computación
Juan Carlos Conde R.
Object-Oriented Programming I
Conceptos de Programación
Contenido
Programación por Computadora
1
Conceptos de Programación
2
Programación por Computadora
3
Lenguajes de Programación
Lenguajes de Programación
1 / 38
Conceptos de Programación
Contenido
Programación por Computadora
1
Conceptos de Programación
2
Programación por Computadora
3
Lenguajes de Programación
Lenguajes de Programación
2 / 38
Conceptos de Programación
Programación por Computadora
Lenguajes de Programación
I
¾Cuál es el propósito es una computadora?
I
¾Qué signica la palabra programación?
I
¾Qué es un programa de computadora?
I
¾De qué manera una computadora entiende un programa?
I
¾Cómo se escribe un programa?
3 / 38
Conceptos de Programación
La computadora
Programación por Computadora
Lenguajes de Programación
"Es un objeto que calcula especícamente. Dispositivo electrónico programable
que puede
almacenar, recuperar
y
procesar
datos."
4 / 38
Conceptos de Programación
Programación
Programación por Computadora
Lenguajes de Programación
parte I
Mucho de lo que hace todos los días lo hace de manera automática. Por fortuna no es necesario que piense conscientemente que todo paso requerido en un
proceso tan simple como dar vuelta a la página:
1. Levantar la mano.
2. Mover la mano a la derecha del libro.
3. Asir la esquina derecha de la página.
4. Mover la mano de derecha a izquierda hasta que la página esté colocada
de modo que pueda leer lo que está sobre la otra página.
5. Soltar la página.
5 / 38
Conceptos de Programación
Programación
Programación por Computadora
Lenguajes de Programación
parte II
Piense en cuántas neuronas debe encender y cuántos músculos deben responder,
todo en cierto orden o secuencia, para mover su brazo y su mano. Sin embargo,
lo hace de manera inconsciente.
6 / 38
Conceptos de Programación
Programación
Programación por Computadora
Lenguajes de Programación
parte III
Mucho de lo que hace de manera inconsciente lo tuvo que aprender una vez.
Observe cómo un bebé se concentra en poner un pie antes que el otro mientras
aprende a caminar. Luego, observe a un grupo de niños de tres años que juegan
a la roña.
7 / 38
Conceptos de Programación
Programación
Programación por Computadora
Lenguajes de Programación
parte IV
I En una escala más amplia, las matemáticas nunca se podrían haber
desarrollado sin secuencias lógicas de pasos para resolver problemas y
demostrar teoremas.
I La producción en masa nunca habría funcionado sin operaciones que
tienen lugar en cierto orden.
"La civilización se basa en el orden de las cosas y acciones... Se crea orden, de
manera consciente e inconsciente, en un proceso al que se denomina
programación"
8 / 38
Conceptos de Programación
Programación por Computadora
Computadora + Programación
Lenguajes de Programación
En base a lo anterior podemos distinguir dos cosas:
I
Programa de computadora.
Secuencia de instrucciones que realizará una
computadora.
I
Programación por computadora.
Proceso de planicar una secuencia de
pasos para que los desarrolle una computadora.
9 / 38
Conceptos de Programación
Programación por Computadora
Lenguajes de Programación
Pero una computadora NO es inteligente; no es capaz de analizar un problema
y proponer una solución.
entonces ¾Cómo se escribe un programa?
Un humano (el
programador ) debe analizar el problema, desarrollar una secuencia
de instrucciones para resolver el problema y luego comunicarlo a la computadora.
10 / 38
Conceptos de Programación
Contenido
Programación por Computadora
1
Conceptos de Programación
2
Programación por Computadora
3
Lenguajes de Programación
Lenguajes de Programación
11 / 38
Programación por Computadora
Conceptos de Programación
Procedimiento
Lenguajes de Programación
Para escribir una secuencia de instrucciones que efectuará una computadora, se
debe ir por un proceso bifásico:
Fase de resolución del problema
1.
Análisis y especicación.
Entender (denir) el problema y lo que debe
hacer la solución.
2.
Solución general (algoritmo ).
Desarrollar una secuencia lógica de pasos
que resuelve el problema.
3.
Vericar.
Seguir los pasos exactamente para ver si la solución resuelve en
realidad el problema.
12 / 38
Conceptos de Programación
Procedimiento
Programación por Computadora
Lenguajes de Programación
Fase de implementación
1.
Solución concreta (programa).
Traducir el algoritmo en un lenguaje de
programación.
2.
Pruebas.
Ver que la computadora siga las instrucciones. Después,
comprobar de manera manual los resultados. Si encuentra errores, analice
el programa y el algoritmo para determinar la fuente de errores, y luego
hacer correcciones.
Una vez que se ha escrito el programa, entra a la tercera fase:
mantenimiento.
13 / 38
Conceptos de Programación
Procedimiento
Programación por Computadora
Lenguajes de Programación
14 / 38
Conceptos de Programación
Algoritmos
Programación por Computadora
Lenguajes de Programación
El programador comienza el proceso de programación al analizar el problema y
desarrollar una solución general llamada algoritmo.
Algoritmo
1.
Def.
Procedimiento paso a paso para resolver un problema en una
cantidad de tiempo nita.
2.
Def.
Secuencia nita de pasos debidamente ordenados para resolver un
problema
Por lo tanto, un programa es simplemente un algoritmo que ha sido escrito para
una computadora, pero, ¾para cualquier computadora?.
15 / 38
Conceptos de Programación
Ejemplo:
Programación por Computadora
Lenguajes de Programación
Suponga que un programador necesita un algoritmo para determinar el salario
semanal de un empleado. El algoritmo reeja lo que se haría a mano:
1. Buscar la tasa de pago del empleado.
2. Determinar la cantidad de horas trabajadas durante la semana.
3. Si el número de horas trabajadas es menor o igual que 40, multiplique el
número de horas por la tasa de pago para calcular salarios regulares.
4. Si el número de horas trabajadas es mayor que 40, multiplique 40 por la
tasa de pago para calcular salarios regulares y luego multiplique la
1
diferencia entre el número de horas trabajadas y 40 por 1 2 veces la tasa
de pago para calcular salarios de horas extras.
5. Sumar los salarios regulares a los de horas extras (si existen) para
determinar salarios totales para la semana.
16 / 38
Conceptos de Programación
Lenguaje de Programación
Programación por Computadora
Lenguajes de Programación
Cuando el programador está satisfecho con el algoritmo, lo traduce en un lenguaje
de programación.
Lenguaje de programación
Conjunto de reglas, símbolos y palabras especiales usado para implementar un
programa de computadora.
En este curso se usará uno de los lenguajes de programación más poderosos:
C++.
17 / 38
Conceptos de Programación
Lenguaje de Programación
Programación por Computadora
Lenguajes de Programación
18 / 38
Conceptos de Programación
Lenguaje de Programación
Programación por Computadora
Lenguajes de Programación
¾Por qué implementaciones distintas?
I Un lenguaje de programación permite al programador cierta exibilidad en
cómo se traduce un algoritmo.
I Dada esta exibilidad, las personas adoptan sus propios estilos al escribir
programas, del mismo modo que lo hacen al escribir historias cortas o
ensayos.
I En todo el libro se ofrecen consejos prácticos acerca del buen estilo de
programación.
19 / 38
Conceptos de Programación
Lenguaje de Programación
Programación por Computadora
Lenguajes de Programación
20 / 38
Conceptos de Programación
Programación por Computadora
¾Existen Atajos en la Programación?
Lenguajes de Programación
21 / 38
Conceptos de Programación
Contenido
Programación por Computadora
1
Conceptos de Programación
2
Programación por Computadora
3
Lenguajes de Programación
Lenguajes de Programación
22 / 38
Conceptos de Programación
Bases
Programación por Computadora
Lenguajes de Programación
Lenguaje de máquina
Lenguaje conformado por instrucciones en código binario, usado directamente
por la computadora.
Lenguaje ensamblador
Lenguaje de programación de bajo nivel en el que se emplea una ayuda
nemotécnica para representar cada una de las instrucciones del lenguaje de
máquina para una computadora particular.
23 / 38
Conceptos de Programación
Proceso Creativo
Programación por Computadora
Lenguajes de Programación
24 / 38
Conceptos de Programación
Programación por Computadora
Conceptos
I
Ensamblador.
Lenguajes de Programación
Programa que traduce lenguaje ensamblador en código de
máquina.
I
Compilador.
Programa que traduce lenguaje de alto nivel en código de
máquina.
I
Programa fuente.
Programa escrito en lenguaje de programación de alto
nivel.
I
Programa objeto.
Versión del lenguaje de máquina de un programa fuente.
25 / 38
Conceptos de Programación
Programación por Computadora
Compilación en Diferentes S.O.
Lenguajes de Programación
26 / 38
Conceptos de Programación
Compilación y Ejecusión
Programación por Computadora
Lenguajes de Programación
27 / 38
Conceptos de Programación
Programación por Computadora
Lenguajes de Programación
TAREA 1:
Leer el documento Orígenes de C++ ubicado en el directorio Web del curso,
en la carpeta de /Recursos, y realizar una lista de las ideas principales
referentes a la creación de C++.
TAREA 2:
Investigar la denición de los siguientes conceptos:
I API
I IDE
I SDK
I Framework
I Engine
28 / 38
Conceptos de Programación
Información básica
Programación por Computadora
Lenguajes de Programación
Compiladores e Interpretes
Algunos lenguajes de programación LISP, Prolog y muchas versiones de BASIC,
por ejemplo son traducidos por un
intérprete en vez de un compilador.
Un
intérprete traduce y ejecuta cada instrucción del programa fuente, una a la vez.
En contraste, un compilador traduce todo el programa fuente en lenguaje de
máquina, después de lo cual tiene lugar la ejecución del programa objeto.
29 / 38
Conceptos de Programación
Programación por Computadora
Lenguajes de Programación
Dato Curioso
El lenguaje Java emplea tanto un compilador como un intérprete. Primero, se
compila un programa Java, no en un lenguaje de máquina de una determinada
computadora, sino en un código intermedio llamado bytecode. A continuación,
un programa llamado Máquina Virtual de Java (MVJ; JVM, por sus siglas en
inglés) toma al programa bytecode y lo interpreta (traduce una instrucción de
bytecode en lenguaje de máquina y la ejecuta, traduce la siguiente y la ejecuta,
y así sucesivamente). De esta manera, un programa de Java compilado en
bytecode es transportable a muchas computadoras diferentes, siempre y cuando
cada computadora tenga su propia MVJ que pueda traducir el bytecode en el
lenguaje de máquina de la computadora.
30 / 38
Conceptos de Programación
Estructuras de Control
Programación por Computadora
Lenguajes de Programación
Los lenguajes de programación requieren el uso de determinadas estructuras de
control para expresar los algoritmos como programas.
Hay cuatro formas básicas de estructurar sentencias (instrucciones) en la mayoría
de los lenguajes de programación: de modo secuencial, condicional, repetitivo y
con subprogramas.
Cada una de estas formas de estructurar sentencias controla el orden en el cual
la computadora ejecuta las sentencias, razón por la que se llaman estructuras de
control.
31 / 38
Conceptos de Programación
Estructuras de Control
Una
secuencia
Programación por Computadora
Lenguajes de Programación
es una serie de sentencias que se ejecutan una después de otra.
32 / 38
Conceptos de Programación
Estructuras de Control
Programación por Computadora
Lenguajes de Programación
Imagine que conduce un automóvil. Ir por un tramo recto de carretera es como
seguir una secuencia de instrucciones. Cuando llega a una bifurcación, debe
decidir por dónde ir y luego tomar una vía u otra.
Esto es lo que hace la computadora cuando encuentra una estructura de
control de selección (a veces llamada bifurcación o decisión) en un programa.
Algunas veces se tiene que ir alrededor de una cuadra varias veces a n de
hallar un lugar para estacionarse. La computadora hace lo mismo cuando
encuentra un ciclo en un programa.
33 / 38
Conceptos de Programación
Estructuras de Control
La
selección,
Programación por Computadora
Lenguajes de Programación
la estructura de control condicional, ejecuta sentencias diferentes
dependiendo de determinadas condiciones.
34 / 38
Conceptos de Programación
Programación por Computadora
Estructuras de Control
La estructura de control
repetitiva,
Lenguajes de Programación
el ciclo, repite sentencias mientras se satis-
facen ciertas condiciones.
35 / 38
Conceptos de Programación
Estructuras de Control
Programación por Computadora
Lenguajes de Programación
Todos los días, por ejemplo, usted sigue un proceso para ir de casa al trabajo.
Tiene sentido entonces que alguien le dé instrucciones para llegar a una reunión
diciendo: dirígete a la ocina, luego recorre cuatro cuadras hacia el oeste,
especicar todos los pasos que tuvo que efectuar para llegar a la ocina.
Los
sin
subprogramas permiten escribir partes de los programas por separado y
luego ensamblarlos en una forma nal. Pueden simplicar en gran medida la
tarea de escribir programas grandes.
36 / 38
Conceptos de Programación
Estructuras de Control
El
Programación por Computadora
Lenguajes de Programación
subprograma permite estructurar un programa al descomponerlo en unidades
más pequeñas.
37 / 38
Conceptos de Programación
Programación por Computadora
Lenguajes de Programación
La educación en computación no puede hacer a nadie un experto programador
así como el estudio de pinceles y pigmentos no puede hacer a alguien un pintor
experto.
[Eric S. Raymond]
Juan Carlos Conde R.
[email protected]
38 / 38