conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017iscursos/intro/... · 2017-10-31 ·...

50
Conceptos básicos IC-1800 Introducción a la programación I semestre, 2017 1

Upload: phungkiet

Post on 19-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Conceptos básicos

IC-1800 Introducción a la programación

I semestre, 2017 1

Page 2: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Definiciones Básicas

Hardware: componentes físicos.

→ tangibles

Software: componentes lógicos.

→ no tangibles

DVDs de Ubuntu, Kubuntu y SUN Solaris gratis CC BY-NC-ND 2.0 (juanti @ flickr)

Page 3: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Computador

Conformado por componentes de Hardware y Software.

Procesa “información” (¿datos?, ¿información?, ¿conocimiento?)

Existen analógicos y digitales

● Analógicos: circuitos electrónicos, hidráulicos o mecánicos para llevar a cabo operaciones sobre datos continuos.

● Digitales*: sistemas contemporáneos, resuelven problemas ejecutando instrucciones de forma secuencial y operan sobre números no continuos o valores discretos.

** desde un cajero automático hasta un servidor de alto desempeño,

Page 4: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

¿Qué es la programación?

HackNY 2011 Spring Student Hackathon CC BY-SA 2.0 (hackNY @ flickr)

Page 5: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

¿Qué es la programación?

Es una herramienta para solucionar problemas

● Requiere de un alto nivel de abstracción

La programación de una solución debe seguir pasos estructurados con el objetivo de modelar una solución y representarla en un lenguaje de programación

Modelo → Programa

El modelado conlleva un proceso creativo y requiere de una alta dosis de ingenio.

Page 6: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Tipos de lenguajes

Natural Formal De programación

Page 7: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Lenguajes Naturales:

● español, portugués, bribrí, quechua.…

Lenguajes Formales:

● diseñados para aplicaciones específicas.

● Ejemplo la notación matemática, química o los lenguajes de programación.

Page 8: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Los lenguajes constan de un conjunto de símbolos y reglas sintácticas y semánticas que dan sentido a sus elementos y expresiones.

● Reglas sintácticas: la forma correcta de expresarse en el lenguaje. (reglas de sintaxis, están principalmente asociadas con la escritura)

● Reglas semánticas: determinan el significado de los programas, la lógica.

Page 9: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 10: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Nos permiten indicarle a una computadora que realice tareas.

Algunos elementos:

● Expresiones básicas: entidades con significado por si mismas.

● Maneras de composición o combinación: permite construir elementos más complejos.

● Maneras de abstracción: facilita la construcción de una aplicación.

Page 11: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Page 12: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Nivel de

abstracción

Nivel de

abstracción

Bajo nivel

Alto nivel

Forma de

ejecución

Forma de

ejecución

Compilados

Interpretados

Paradigma de

programación

Paradigma de

programación

Imperativo

Funcional

Orientado a

objetos

Clasificación

Page 13: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Clasificación de los lenguajes de programación:

● Nivel de abstracción

● Forma de ejecución

● Según el paradigma de programación.

Page 14: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Lenguajes de Alto nivel:

● Más “cercanos” al nivel de abstracción del programador

● Deben ser traducidos a lenguaje máquina

Lenguajes de Bajo nivel:

● Lenguaje máquina, ensamblador,

● Muchos drivers se escriben a este nivel.

Page 15: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

11011010 01000110 10011001 11001100 11110000 11111111 10010100 10111110 11001100 10011001 11011010 01000110 10011001 11001100 11110000 01010101 10101011 11001101

Page 16: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Clasificación de los lenguajes de programación:

● Nivel de abstracción

● Forma de ejecución (Aplica para lenguajes de Alto Nivel)

● Según el paradigma de programación.

Page 17: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Lenguajes Compilados:

● Para ejecutar el programa se debe se traduce todo a lenguaje máquina.

Lenguajes Interpretados:

● El código se va traduciendo durante la ejecución del programa en la medida que se vaya requiriendo ejecutar.

Page 18: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Entonces...

● Programa fuente está escrito en un lenguaje de programación de alto nivel.

● Luego se compila o se interpreta.

● Los programas “ejecutables” siempre está representados en código máquina.

Preguntas:

● Si los dos (compilados e interpretados) se traducen a código máquina: ¿dónde está la diferencia?

Programa Fuente

Programa Ejecutable

CompiladorIntérprete

Ejecutable

Page 19: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Clasificación de los lenguajes de programación:

● Nivel de abstracción

● Forma de ejecución

● Según el paradigma de programación

Enfoque o filosofía de construcción del software.

Actualmente los lenguajes tienden a soportar múltiples enfoques.

Lenguajes de Programación

Page 20: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Clasificación (más común):

● Imperativos o procedimental (Basic, C, Fortran, Pascal)

● Funcionales (Haskell, Miranda. Hibridos: Scheme, Lisp)

● Orientados a Objetos (C++, C#, Delphi, Java)

● Lógicos (Prolog)

Lenguajes de Programación

Page 21: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

● Cada paradigma tienen ventajas y desventajas.

● Dependerá de la naturaleza del problema a solucionar el enfoque más adecuado a utilizar.

● También influyen los gustos de cada programador ;)

Page 22: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Hay lenguajes que tienen un enfoque multiparadigma: entre estos se incluye:

http://www.python.org

Page 23: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Referencias y Lecturas Complementarias

● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.

● Índice TIOBE: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 24: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Imágenes

● DVDs de Ubuntu, Kubuntu y SUN Solaris gratis CC BY-NC-ND 2.0 (juanti @ flickr)

● Temporary Rice Cooker CC BY-NC-SA 2.0 (ajalfaro@flickr)

● Laptop-orange-rotate CC BY-SA 2.0 (Salvor @ flickr)

Page 25: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

25

Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una

Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica.

http://creativecommons.org/licenses/by-sa/3.0/cr/http://creativecommons.org/licenses/by-sa/3.0/cr/ *La licencia de la presentación no cubre las imágenes utilizadas*

Page 26: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Conceptos básicos

IC-1800 Introducción a la programación

I semestre, 2017 1

Page 27: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Definiciones Básicas

Hardware: componentes físicos.

→ tangibles

Software: componentes lógicos.

→ no tangibles

DVDs de Ubuntu, Kubuntu y SUN Solaris gratis CC BY-NC-ND 2.0 (juanti @ flickr)

Categorías* / ejemplos:● De sistema / Sistemas operativos (Ubuntu)● De programación / Lenguajes de programación (Python)● De aplicación / sistemas información, juegos (Frozen-

Bubble)

*categorías a groso modo.

Page 28: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Computador

Conformado por componentes de Hardware y Software.

Procesa “información” (¿datos?, ¿información?, ¿conocimiento?)

Existen analógicos y digitales

● Analógicos: circuitos electrónicos, hidráulicos o mecánicos para llevar a cabo operaciones sobre datos continuos.

● Digitales*: sistemas contemporáneos, resuelven problemas ejecutando instrucciones de forma secuencial y operan sobre números no continuos o valores discretos.

** desde un cajero automático hasta un servidor de alto desempeño,

¿La computadora procesa datos, información y/o conocimiento?

Imágenes: Temporary Rice Cooker CC BY-NC-SA 2.0

(ajalfaro@flickr)Laptop-orange-rotate CC BY-SA 2.0 (Salvor @ flickr)

Page 29: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

¿Qué es la programación?

HackNY 2011 Spring Student Hackathon CC BY-SA 2.0 (hackNY @ flickr)

Page 30: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

¿Qué es la programación?

Es una herramienta para solucionar problemas

● Requiere de un alto nivel de abstracción

La programación de una solución debe seguir pasos estructurados con el objetivo de modelar una solución y representarla en un lenguaje de programación

Modelo → Programa

El modelado conlleva un proceso creativo y requiere de una alta dosis de ingenio.

Page 31: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Tipos de lenguajes

Natural Formal De programación

Page 32: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Lenguajes Naturales:

● español, portugués, bribrí, quechua.…

Lenguajes Formales:

● diseñados para aplicaciones específicas.

● Ejemplo la notación matemática, química o los lenguajes de programación.

En el contexto de la computación se utilizan las gramáticas libres de contexto para determinar la sintaxis de un lenguaje. Estas fueron introducidas por John Backus y Peter Naur al definir el lenguaje ALGOL-60

Page 33: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Los lenguajes constan de un conjunto de símbolos y reglas sintácticas y semánticas que dan sentido a sus elementos y expresiones.

● Reglas sintácticas: la forma correcta de expresarse en el lenguaje. (reglas de sintaxis, están principalmente asociadas con la escritura)

● Reglas semánticas: determinan el significado de los programas, la lógica.

En el contexto de la computación se utilizan las gramáticas libres de contexto para determinar la sintaxis de un lenguaje. Estas fueron introducidas por John Backus y Peter Naur al definir el lenguaje ALGOL-60

Page 34: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

●Indice tibe: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 35: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Nos permiten indicarle a una computadora que realice tareas.

Algunos elementos:

● Expresiones básicas: entidades con significado por si mismas.

● Maneras de composición o combinación: permite construir elementos más complejos.

● Maneras de abstracción: facilita la construcción de una aplicación.

Page 36: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Page 37: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Nivel de

abstracción

Nivel de

abstracción

Bajo nivel

Alto nivel

Forma de

ejecución

Forma de

ejecución

Compilados

Interpretados

Paradigma de

programación

Paradigma de

programación

Imperativo

Funcional

Orientado a

objetos

Clasificación

Page 38: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Clasificación de los lenguajes de programación:

● Nivel de abstracción

● Forma de ejecución

● Según el paradigma de programación.

Page 39: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Lenguajes de Alto nivel:

● Más “cercanos” al nivel de abstracción del programador

● Deben ser traducidos a lenguaje máquina

Lenguajes de Bajo nivel:

● Lenguaje máquina, ensamblador,

● Muchos drivers se escriben a este nivel.

Page 40: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

11011010 01000110 10011001 11001100 11110000 11111111 10010100 10111110 11001100 10011001 11011010 01000110 10011001 11001100 11110000 01010101 10101011 11001101

Page 41: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Clasificación de los lenguajes de programación:

● Nivel de abstracción

● Forma de ejecución (Aplica para lenguajes de Alto Nivel)

● Según el paradigma de programación.

Page 42: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Lenguajes Compilados:

● Para ejecutar el programa se debe se traduce todo a lenguaje máquina.

Lenguajes Interpretados:

● El código se va traduciendo durante la ejecución del programa en la medida que se vaya requiriendo ejecutar.

Page 43: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Entonces...

● Programa fuente está escrito en un lenguaje de programación de alto nivel.

● Luego se compila o se interpreta.

● Los programas “ejecutables” siempre está representados en código máquina.

Preguntas:

● Si los dos (compilados e interpretados) se traducen a código máquina: ¿dónde está la diferencia?

Programa Fuente

Programa Ejecutable

CompiladorIntérprete

Ejecutable

El intérprete toma el código fuente y ejecuta en un solo paso (línea por línea), técnicamente no crea un programa ejecutable.

Page 44: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Clasificación de los lenguajes de programación:

● Nivel de abstracción

● Forma de ejecución

● Según el paradigma de programación

Enfoque o filosofía de construcción del software.

Actualmente los lenguajes tienden a soportar múltiples enfoques.

Lenguajes de Programación

Page 45: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Clasificación (más común):

● Imperativos o procedimental (Basic, C, Fortran, Pascal)

● Funcionales (Haskell, Miranda. Hibridos: Scheme, Lisp)

● Orientados a Objetos (C++, C#, Delphi, Java)

● Lógicos (Prolog)

Lenguajes de Programación

Page 46: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

● Cada paradigma tienen ventajas y desventajas.

● Dependerá de la naturaleza del problema a solucionar el enfoque más adecuado a utilizar.

● También influyen los gustos de cada programador ;)

Page 47: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Lenguajes de Programación

Hay lenguajes que tienen un enfoque multiparadigma: entre estos se incluye:

http://www.python.org

Page 48: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Referencias y Lecturas Complementarias

● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.

● Índice TIOBE: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 49: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

Imágenes

● DVDs de Ubuntu, Kubuntu y SUN Solaris gratis CC BY-NC-ND 2.0 (juanti @ flickr)

● Temporary Rice Cooker CC BY-NC-SA 2.0 (ajalfaro@flickr)

● Laptop-orange-rotate CC BY-SA 2.0 (Salvor @ flickr)

Page 50: Conceptos básicosic-itcr.ac.cr/~ausanabria/files/2017IScursos/intro/... · 2017-10-31 · representarla en un lenguaje de programación ... Delphi, Java) Lógicos (Prolog) ... **

25

Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una

Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica.

http://creativecommons.org/licenses/by-sa/3.0/cr/http://creativecommons.org/licenses/by-sa/3.0/cr/ *La licencia de la presentación no cubre las imágenes utilizadas*