Sunteți pe pagina 1din 46

Introducción

a la
programación de
computadoras

1/78
CONTENIDO
 Definiciones básicas: hardware, software
 Lenguajes naturales y formales
 Lenguajes de programación de computadoras
 Clasificación de los lenguajes de programación
 Estructura general de un programa
 Grupos de instrucciones básicas de un programa
 Metodología general para la solución de
problemas
 Metodología para el desarrollo de programas
 Repasar conceptos
2/78
DEFINICIONES BÁSICAS

COMPUTADORA

HARDWARE SOFTWARE

3/78
 Hardware

Son todas las partes físicas de la computadora:

monitor
teclado
mouse
procesador central
discos
memoria
etc.

4/78
 Software

 Programas de computadora

Secuencia de instrucciones para lograr que


una computadora realice tareas específicas

5/78
 Habilidad importante de todos los
profesionales

RESOLVER PROBLEMAS

 En nuestra profesión resolvemos


problemas usando la computadora

 ¿Qué entiende la computadora?

Software 6/78
 Desarrollador profesional de
soluciones
 Analiza detalladamente las situaciones
que debe solucionar
 Presenta alternativas de solución,
ventajas y desventajas, selecciona la
más conveniente según recursos
disponibles
 Usa lenguajes de programación para
expresar las soluciones en la
computadora 7/78
 Programación de computadoras

 Disciplina lógica que consiste en diseñar


soluciones y representarlas en un lenguaje de
programación

 Oportunidad para desarrollar habilidades en la


solución de problemas

 Requiere:
 Conocimientos técnicos
 Imaginación
 Creatividad 8/78
 La programación de computadoras está
presente por todas partes

¡ Excelente !

 Esto demanda cada día más profesionales en


todo el mundo

¡ Gracias a DIOS tenemos trabajo !

9/78
LENGUAJES: NATURALES
Y FORMALES

TIPOS DE
LENGUAJES

LENGUAJES LENGUAJES
NATURALES FORMALES

10/78
 Lenguajes naturales
 Son los que hablamos y escribimos
nosotros: español, inglés, mandarín,
portugués, francés, etc.
 No fueron diseñados por las personas
sino que han ido evolucionando
naturalmente

11/78
 Lenguajes formales

 Diseñados por las personas para


propósitos específicos

 Ejemplo:
Los químicos usan un lenguaje formal para
representar la estructura química de las
moléculas: H2O  agua
NH3  amoníaco
12/78
 Diferencias entre los lenguajes naturales
y los formales

 Ambigüedad

 Los lenguajes naturales estan llenos de ambigüedad.


Cada persona podría interpretar las mismas palabras
de diferente manera.

 Los lenguajes formales están diseñados para evitar


la ambigüedad. Cualquier estatuto significa lo mismo
sin importar quien lo esta interpretando
13/78
 Redundancia

 Los lenguajes naturales emplean gran


cantidad de redundancia: podemos expresar
lo mismo con diferentes palabras

 Los lenguajes formales son menos


redundantes

14/78
 Semántica

 Los lenguajes naturales estan llenos de


metáforas, frases propias de una
región, palabras que dependiendo de la
región pueden tener diferentes
significados

 Los lenguajes formales tienen un solo


significado
15/78
 Los problemas que presentan los
lenguajes naturales conllevaron a
crear lenguajes específicos para la
programación de computadoras

16/78
LENGUAJES DE PROGRAMACIÓN
DE COMPUTADORAS

 Lenguajes formales

 Se usan para escribir programas de


computadoras

17/78
 Se han escrito una gran cantidad de
lenguajes de programación

 Cada uno con sus características


propias

 Orientados a fines generales o


específicos

18/78
 Algunos lenguajes de programación
 Java
 C
 C++
 Python
 C#
 JavaScript
 Visual Basic.NET
 R
 PHP
 Assembly Language
 Etc.

 Índice de medidas de popularidad de lenguajes de


programación publicado por TIOBE Software
(www.tiobe.com): Python esta entre los 4 lenguajes más
19/78
populares, medición de junio 2018
Componentes de un lenguaje de
programación

LÉXICO O TOKENS

LENGUAJES
DE SINTAXIS
PROGRAMACIÓN

SEMÁNTICA

20/78
 Léxico o tokens

 Son los símbolos que el lenguaje permite usar


para escribir programas
 Letras
 Números
 Símbolos
 Palabras

 Ejemplo con el lenguaje de la matemática


 La expresión 3+3=6 esta correcta según el léxico o
tokens ya que sus símbolos pertenecen al lenguaje
 La expresión 3@+3=6 esta incorrecta según el léxico o
tokens: tiene un token, el símbolo @, que no es válido
21/78
en el lenguaje de la matemática
 Sintaxis de los lenguajes:
conjunto de reglas que definen la
forma correcta de escribir
instrucciones en un lenguaje
específico.

22/78
 La sintaxis da estructura al lenguaje:
indica la forma en que se ordenan los
tokens

 Ejemplo en matemática:
La expresión 3/=6
• Tokens: expresión correcta
• Sintaxis: expresión incorrecta
• Conclusión: la expresión esta sintácticamente
incorrecta, es decir, tiene errores de sintaxis
23/78
 Para que una instrucción sea
ejecutada debe estar
sintácticamente correcta

24/78
 Semántica

 Significado de cada componente del


lenguaje

Lo que hace cada instrucción

 Ejemplo en matemática
6 / 3 <<<< división aritmética

25/78
CLASIFICACIÓN DE LOS
LENGUAJES DE PROGRAMACIÓN

 Nivel de abstracción

 Paradigma de programación

 Forma de ejecución

26/78
Clasificación
Nivel de abstracción
 Aquí se refiere a que tanto se acerca
el lenguaje al hardware

 Bajo nivel

 Alto nivel

27/78
 Lenguajes de bajo nivel

 Las instrucciones de un lenguaje de bajo nivel


son usadas para acceder directamente los
recursos del hardware, por ejemplo: los
registros internos de los microprocesadores.

 Están condicionados a la estructura física de la


computadora.

 Tipos básicos:
Lenguaje o código de máquina
28/78
Ensamblador (assembler)
 Lenguaje o código de máquina

 Programas traducidos al sistema binario (0’s y 1’s, alto


voltaje o bajo voltaje)

 Es el lenguaje que entiende y ejecuta la computadora

 Cualquier programa debe estar en lenguaje de máquina


para poder ser ejecutado

 Ensamblador (assembler).

 Un nivel arriba del código de máquina: Contiene


instrucciones elementales representadas por nemónicos:
por ejemplo sumar puede ser ADD
29/78
 Lenguaje de alto nivel

 Se acercan mas al lenguaje que


entiende el programador

 Nos facilitan la creación de programas

 Tienen que ser traducidos al lenguaje


de máquina para que puedan ser
ejecutados 30/78
 Muchos lenguajes de programación de
alto nivel permiten que los programas
puedan ser ejecutados en diferentes
computadoras o plataformas
computacionales

portabilidad

31/78
Clasificación
Paradigma de programación

 Paradigma

 Representa un enfoque o filosofía


particular para desarrollar o construir
software

32/78
 Ningun paradigma es mejor que otro

 Cada uno tiene sus ventajas y desventajas

 Dependiendo de la situación un paradigma


resulta mas apropiado que otro

 Hay lenguajes que se orientan a un solo


paradigma: Java

 Multiparadigma o híbrido: Python 33/78


 Paradigmas de programación

 Imperativo

 Funcional

 Lógico

 Orientado a objetos

34/78
 Imperativo
 Es el mas antiguo

 Los datos y sus operaciones se definen de manera


independiente

 Los programas imperativos se escriben en


términos de:
• Un estado del programa: valores que tienen los diferentes
componentes del programa
• Instrucciones que cambian ese estado: hasta llegar a la
solución

 Lenguajes: Pascal, C, Basic, Fortran. Híbrido:


Python
35/78
 Funcional

 Basado en la escritura de funciones matemáticas.


Repetición de procesos: técnica de recursión.

 Tiene su origen en el cálculo lambda, una teoría


matemática elaborada por Alonzo Church sobre
estudios de computación

 Lenguajes: Lisp, Haskell, Miranda. Híbridos: Python,


Scheme

36/78
 Lógico

Utilizados en inteligencia artificial

Manejan una base de hechos a partir de la


cual los programas pueden hacer
inferencias

Lenguaje: PROLOG

37/78
 Orientado a objetos

 Programación orientada a objetos (POO)


–Object Oriented Programming (OOP)-:
paradigma vigente desde los años 90

 Se basa en el imperativo para expresar un programa


como un conjunto de objetos que colaboran entre ellos
para realizar las tareas.

 Objeto: es una definición que incluye tanto los datos


como las operaciones que se pueden hacer sobre esos
datos

 Lenguajes: Java, Ruby, SmallTalk. Híbrido: Python.


38/78
Clasificación
Forma de ejecución

 Lenguajes compilados

 Lenguajes interpretados

Algunos lenguajes solo se orientan en


un sentido, mientras que otros
permiten ambos
39/78
 Lenguajes compilados

 Programa fuente: son las instrucciones en


un lenguaje específico que escribimos para
desarrollar un programa.

 Para poder ejecutar estos programas fuentes


deben traducirse a lenguaje de máquina

 Compiladores

• Crean un programa ejecutable o programa objeto

40/78
 Funcionamiento general de un
compilador
Programa
fuente

Analiza sintaxis
COMPILADOR
Convierte a lenguaje de máquina

Programa
objeto  Programa ejecutable

41/78
 Lenguajes interpretados

 No necesitan la fase de compilación

 Cada vez que necesita ejecutar una


instrucción
Analiza sintaxis
Convierte a lenguaje de máquina
Ejecuta instrucción

42/78
 Funcionamiento general de un
intérprete
Programa
fuente

Analiza sintaxis
INTEPRETADOR
Convierte a lenguaje de máquina

Ejecuta instrucción

43/78
ESTRUCTURA GENERAL
DE UN PROGRAMA

Salidas
Entradas Proceso (resultados)

Restricciones
(precondiciones,
limitaciones)

44/78
GRUPOS DE INSTRUCCIONES
BÁSICAS DE UN PROGRAMA

 Entradas: instrucciones para que el


programa obtenga los datos para
solucionar el problema

 Salidas: instrucciones para guardar y


ofrecer información

45/78
 Operaciones para manipular datos:
- numéricos
- alfabéticos
- alfanuméricos
- etc.

 Ejecución condicional: para tomar decisiones


en los programas

 Repetición: para repetir la ejecución de


instrucciones
46/78