25
Fundamentos de Programación. Página 01.0 de 24 Fundamentos de Programación. Introducción.

Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Embed Size (px)

Citation preview

Page 1: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.0 de 24

Fundamentos de

Programación.

Introducción.

Page 2: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.1 de 24

• Entender los fundamentos de la programación de las

computadoras y resolver problemas de aplicación

diseñando programas en el lenguaje estructurado C,

apoyándose en metodologías para la solución de

problemas.

Objetivo General del Curso

Page 3: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.2 de 24

• Conocer y entender los fundamentos de la programación de las computadoras, es decir su historia, evolución y beneficios.

• Entender el concepto de algoritmo.

• Reconocer los métodos de resolución de problemas mediante el planteamiento de algoritmos.

• Distinguir los diversos paradigmas de programación y poder seleccionar el uso de cada uno de ellos.

• Identificar la aplicación del cómputo para la solución de problemas en diferentes áreas.

• Conocer el lenguaje de programación C en detalle y aplicarlo a la resolución de problemas.

Objetivos Particulares.

Page 4: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.3 de 24

• Conocimientos generales básicos del funcionamiento y

uso de las computadoras.

• Pensamiento lógico y analítico.

• Ganas de aprender a programar.

Prerrequisitos

Page 5: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.4 de 24

• Dispositivos mecánicos programables desde el siglo XII.

(el autómata of Al-Jazari).

• El primer programa data de 1843, cuando la matemática

Ada Lovelace publicó un algoritmo para calcular la

secuencia de los números de Bernoulli, que podía

implementarse en la Máquina Analítica de Charles

Babbage.

• En el siglo XX (1936), máquina de Turing.

• A principios del siglo XX dispositivos electro-mecánicos

con tarjetas perforadas.

Un poco de Historia

Page 6: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.5 de 24

• Década de los 1950s, primeras computadoras

electrónicas.

• Década de los 1960s, mainframes.

• Década de los 1970s, programación estructurada.

• Década de los 1980s, programación orientada a objetos.

• 1981, microprocesadores y aparición de la PC.

• ….

Un poco de Historia (cont.)

Page 7: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.6 de 24

• Una computadora es una máquina diseñada para llevar a

cabo una serie de operaciones especificadas en un conjunto

de instruccciones llamado un programa de cómputo.

• El hardware de la computadora se refiere el equipo físico en

sí, como el teclado, el monitor, los discos duros, los circuitos

de memoria, etc.

• El software de la computadora se refiere a los programas

que describen las instrucciones incluyendo su

documentación.

• El software puede consistir de programas que se compran

con la computadora (software preinstalado), se bajan de

alguna otra computadora (servidor) o se escriben localmente.

¿Qué es una computadora?

Page 8: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.7 de 24

Componentes del Hardware.

ROM

and

RAM

Page 9: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.8 de 24

Tipos de Software.

Page 10: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.9 de 24

Sistemas Operativos.

• El Sistema Operativo (Operating System) es el conjunto de programas

que controlan la operación de la computadora. Típicamente viene

integrado en el hardware.

• Proporciona la interfaz entre el usuario (tú) y el hardware,

proporcionando un ambiente conveniente y eficiente mediante el cual se

puede seleccionar y ejecutar el software aplicativo en el sistema.

• El componente del sistema operativo que maneja la interfaz básica entre

el hardware y las aplicaciones se llama el kernel.

• Algunos ejemplos de sistemas operativos para computadoras de

escritorio y laptops incluyen Windows, Mac OS, Unix y Linux.

• Para dispositivos móviles (teléfonos inteligentes, tablets, etc.) incluyen

Android (basado en Linux) e IOS (basado en Mac OS).

Page 11: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.10 de 24

Sistemas Operativos (cont.).

• Los sistemas operativos también contienen una serie de programas

llamados de utilería (utilities) que permiten realizar funciones como

impresión de documentos, copia de archivos y listas de archivos en el

sistema.

• La mayoría de los sistemas operativos modernos simplifican el uso de

los utilities mediante las llamadas interfaces gráficas (GUIs, graphical

user interfaces) que consisten de íconos y menús que pueden ser

seleccionados mediante el mouse o en el caso de pantallas sensibles al

tacto mediante el dedo del usuario.

Page 12: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.11 de 24

Software Aplicativo.

• El software aplicativo también llamado herramientas de software

consiste de programas que han sido escritos para realizar operaciones

comunes, las categorías más conocidas son las siguientes:

▪ Los procesadores de palabras (word processors) como el Word de

Microsoft que permiten introducir y formatear documentos de

cualquier tipo.

▪ Las hojas electrónicas de cálculo (Spreadsheets) como Microsoft

Excel permiten trabajar con información desplegada en tablas de

dos dimensiones. Inicialmente fueron desarrolladas para

aplicaciones financieras pero actualmente se usan también para

resolución de problemas matemáticos.

▪ Los sistemas manejadores de bases de datos (DBMS, database

managemente systems) permiten almacenar y analizar información

en conjuntos muy grandes de datos perfectamente organizados.

Page 13: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.12 de 24

Software Aplicativo (cont.).

▪ Las herramientas de cómputo matemático, como MATLAB,

Mathematica y MAPLE permiten ejecutar funciones matemáticas

muy complejos y graficar los resultados de los mismos. Son

particularmente útiles para ingenieros y científicos.

▪ Los lenguajes de programación, son programas que permiten

escribir otros programas de manera más o menos sencilla.En la

actualidad existen más de 400 lenguajes de programación

clasificados en generaciones.

Page 14: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.13 de 24

Concepto de Algoritmo.

• En matemáticas el algoritmo se define como un conjunto

finitio de pasos lógicos y ordenados conducentes a la

resolución de un problema matemático.

• En computación se amplía un poco el concepto y se dice que

el algoritmo es un procedimiento paso a paso para obtener un

resultado.

▪ Los pasos del algoritmo se pueden entender como

comandos u órdenes a la computadora.

▪ El resultado puede ser un valor, un conjunto de valores,

un documento, una imagen o cualquier otro tipo de objeto.

Page 15: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.14 de 24

Programa de Cómputo.

• Un programa de cómputo consiste de una serie de postulados que representan instrucciones a la computadora.

• Esta serie de postulados o instrucciones producen un resultado.

• En otras palabras, un programa de cómputo no es otra cosa que la implementación de un algoritmo en la computadora.

Page 16: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.15 de 24

Lenguajes de Programación: Primera Generación.

• En la actualidad se habla de que históricamente existen varios tipos de programas, divididos en “generaciones”.

• Los lenguajes de la primera generación son también llamados lenguajes de máquina porque constan de una serie de instrucciones de la computadora y se escribían en código binario.

• Solamente los diseñadores de la computadora son capaces de escribir este tipo de programas.

Page 17: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.16 de 24

Lenguajes de Programación: Segunda Generación.

• Conocidos como Lenguajes Ensambladores o

lenguajes de segunda generación.

• Representan un avance enorme respecto a la primera

generación.

• El programa se escribe mediante símbolos fáciles de

recordar que corresponden con cada una de las

instrucciones de la máquina.

• Un programa llamado Ensamblador traduce los símbolos y genera un programa ejecutable.

Page 18: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.17 de 24

Lenguajes de Programación: Tercera Generación.

• Son lenguajes más avanzados en donde cada postulado corresponde a varias instrucciones de máquina.

• Se les conoce como lenguajes 3GL.

• Son los más populares.

• Existen dos tipos:

▪ Compilables.

▪ Interpretables.

• Ejemplos: Basic, Cobol, Fortran, Algol, C, C++, Java, Python, Ruby, Perl, etc.

Page 19: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.18 de 24

Lenguajes de Programación: Cuarta

Generación.

• Constituyen un refinamiento de la tercera generación.

• Generalmente son de propósito especial, no general.

▪ Manejo de bases de datos.

▪ Generación de reportes.

▪ Simulación matemática.

• Ejemplos: Focus, SQL, Clipper, DataFlex, Maple, Mathematica, etc.

Page 20: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.19 de 24

Lenguajes de Programación: Quinta

Generación.

• Resuelven problemas utilizando conjuntos de restricciones en vez de un algoritmo.

• Hacen que la computadora resuelva el problema prácticamente sin intervención humana.

• Se utilizan principalmente en Inteligencia Artifical.

• Ejemplos: Prolog, OPS5, Mercury.

• No han tenido el éxito esperado.

Page 21: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.20 de 24

Proceso de Ejecución de

Programas.

Page 22: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.21 de 24

Proceso de Ejecución de ProgramasCompilación.

• Un programa escrito en un lenguaje de alto nivel (mayor a 3GL) como por ejemplo C, debe ser traducido a lenguaje de máquina para que pueda ser ejecutado.

• Se requiere un programa especial llamado compilador para llevar a cabo esta traducción

• Por ejemplo, para poder ejecutar programas escritos en C, debemos contar con un compilador de C. Existen muchos de ellos disponibles para los diferentes sistemas operativos.

• Al proceso de traducción del programa de alto nivel a lenguaje de máquina se le llama compilación.

Page 23: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.22 de 24

Proceso de Ejecución de Programas

Compilación (cont.).

• A menudo el compilador detecta errores de sintaxis en el programa (errores de compilación o "bugs") e imprime los mensajes de error correspondientes.

• Debemos corregir estos errores antes de poder ejecutar el programa.

• Cuando el compilador no detecta errores genera un programa en lenguaje de máquina que puede ser ejecutado.

• Al programa original escrito, por ejemplo en C, se le llama programa fuente y al generado por el compilador programa objeto.

Page 24: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.23 de 24

Proceso de Ejecución de Programas Linking/loading

• Casi siempre se requiere un paso adicional para poder ejecutar finalmente el programa. Esta preparación adicional llamada linking o loading se necesita para incluir en el programa objeto instrucciones adicionales que no fueron incluidas en el proceso de compilación, como el caso de las llamadas macro-instrucciones o postulados de lectura o escritura de dispositivos externos.

• Normalmente cuando se ejecuta el programa se detectan otro tipo de errores llamados errores de ejecución que, desde luego, también deben ser corregidos.

Page 25: Fundamentos de Programaciónprofesores.fi-b.unam.mx/adanzg/FP/Presentaciones/FP01Introduccion.pdf · Fundamentos de Programación. Página 01.1 de 24 ... • El hardware de la computadora

Fundamentos de Programación. Página 01.24 de 24

Lenguajes Interpretables.

• Existen algunos lenguajes de programación (siendo el Basic el ejemplo principal) en donde no existe el proceso mencionado anteriormente.

• En este caso en vez de compilador se usa otro programa llamado intérprete que examina cada uno de los postulados del programa fuente, lo verifica y lo ejecuta en solo paso (no existe el programa objeto).

• Generalmente este tipo de programas son menos eficientes y no tan comunmente utilizados.

• Para distinguir los dos tipos de lenguajes, a los lenguajes "normales" se les llama lenguajes compilables y a los otros lenguajes interpretables.