Vous êtes sur la page 1sur 41

Introducción a la Computación

Introducción a la Computación

Dr. Jaime Osorio Ubaldo

Jaime Osorio Introducción a la Computación Introducción a la Computación 1 / 19


Lenguaje de programación

Un lenguaje de programación es un lenguaje formal que está diseñado para


organizar algoritmos y procesos lógicos que serán luego llevados a cabo por un
ordenador o sistema informático, permitiendo controlar ası́ su comportamiento
fı́sico, lógico y su comunicación con el usuario.

Jaime Osorio Introducción a la Computación Introducción a la Computación 2 / 19


Lenguaje de programación

Un lenguaje de programación es un lenguaje formal que está diseñado para


organizar algoritmos y procesos lógicos que serán luego llevados a cabo por un
ordenador o sistema informático, permitiendo controlar ası́ su comportamiento
fı́sico, lógico y su comunicación con el usuario.

Jaime Osorio Introducción a la Computación Introducción a la Computación 2 / 19


Procesador de lenguaje

1 Los programas que corren en computadoras son escritos en algún lenguaje de


programación.

Jaime Osorio Introducción a la Computación Introducción a la Computación 3 / 19


Procesador de lenguaje

1 Los programas que corren en computadoras son escritos en algún lenguaje de


programación.
2 Antes de ejecutar un programa necesita ser traducido por un procesador de
lenguaje.

Jaime Osorio Introducción a la Computación Introducción a la Computación 3 / 19


Procesador de lenguaje

1 Los programas que corren en computadoras son escritos en algún lenguaje de


programación.
2 Antes de ejecutar un programa necesita ser traducido por un procesador de
lenguaje.
3 Un compilador es un procesador de lenguaje.

Jaime Osorio Introducción a la Computación Introducción a la Computación 3 / 19


Compilador

1 El compilador lee un programa (programa fuente o source) y lo traduce a


lenguaje de máquina o a otro programa equivalente en otro lenguaje
(programa objeto o target).

Jaime Osorio Introducción a la Computación Introducción a la Computación 4 / 19


Compilador

1 El compilador lee un programa (programa fuente o source) y lo traduce a


lenguaje de máquina o a otro programa equivalente en otro lenguaje
(programa objeto o target).
2 El compilador debe reportar cualquier error en el programa fuente que
detecte durante el proceso de traducción.

Jaime Osorio Introducción a la Computación Introducción a la Computación 4 / 19


Fases del proceso de compilación

Jaime Osorio Introducción a la Computación Introducción a la Computación 5 / 19


Etapas del proceso de compilación

Jaime Osorio Introducción a la Computación Introducción a la Computación 6 / 19


Introducción

1 Sabemos que la capacidad de cálculo de los computadores es creciente desde


su aparición a finales de los 50.

Jaime Osorio Introducción a la Computación Introducción a la Computación 7 / 19


Introducción

1 Sabemos que la capacidad de cálculo de los computadores es creciente desde


su aparición a finales de los 50.
2 Podemos asumir erroneamente, que basta esperar algunos años para que
problemas que necesitan muchas horas de cálculo hoy, puedan resolverse en
pocos segundos dentro de algunos años.

Jaime Osorio Introducción a la Computación Introducción a la Computación 7 / 19


Introducción

1 Sabemos que la capacidad de cálculo de los computadores es creciente desde


su aparición a finales de los 50.
2 Podemos asumir erroneamente, que basta esperar algunos años para que
problemas que necesitan muchas horas de cálculo hoy, puedan resolverse en
pocos segundos dentro de algunos años.
3 Pero en realidad, el tiempo de ejecución depende del algoritmo que se utilice.

Jaime Osorio Introducción a la Computación Introducción a la Computación 7 / 19


Introducción

Los factores que generalmente influyen en el tiempo de ejecución de un algoritmo.


1 El contenido de los datos de entrada.

Jaime Osorio Introducción a la Computación Introducción a la Computación 8 / 19


Introducción

Los factores que generalmente influyen en el tiempo de ejecución de un algoritmo.


1 El contenido de los datos de entrada.
2 El código generado por el compilador y computador que se utilice.

Jaime Osorio Introducción a la Computación Introducción a la Computación 8 / 19


Introducción

Los factores que generalmente influyen en el tiempo de ejecución de un algoritmo.


1 El contenido de los datos de entrada.
2 El código generado por el compilador y computador que se utilice.
3 El tamaño de los datos de entrada.

Jaime Osorio Introducción a la Computación Introducción a la Computación 8 / 19


Introducción

El contenido de la data.
Comunmente se analiza el algoritmo en el peor caso, es decir, cuando se emplea el
mayor tiempo, de tal manera que se tenga una cota superior del tiempo de
ejecución para cualquier caso.

Jaime Osorio Introducción a la Computación Introducción a la Computación 9 / 19


Introducción

El código generado por el compilador y computador que se utilice


Para el análisis de los algoritmos podemos ignorar este factor, ya que diferentes
implementaciones de un mismo algoritmo diferirán en sus tiempos de ejecución a
lo más en una constante multiplicativa.

Jaime Osorio Introducción a la Computación Introducción a la Computación 10 / 19


Introducción

El tamaño de los datos de entrada. Es el factor más importante .

Ejemplo
En un problema de ordenamiento de n números.

Jaime Osorio Introducción a la Computación Introducción a la Computación 11 / 19


Introducción

El tamaño de los datos de entrada. Es el factor más importante .

Ejemplo
En un problema de ordenamiento de n números.Podrı́amos encontrar
computadores cien o quizás mil veces más rápido, pero si el algoritmo empleado es
el burbuja el tiempo de ejecución será proporcional a n2

Jaime Osorio Introducción a la Computación Introducción a la Computación 11 / 19


Introducción

El tamaño de los datos de entrada. Es el factor más importante .

Ejemplo
En un problema de ordenamiento de n números.Podrı́amos encontrar
computadores cien o quizás mil veces más rápido, pero si el algoritmo empleado es
el burbuja el tiempo de ejecución será proporcional a n2 mientras que de un
algoritmo quicksort es proporcional a n log n.

Jaime Osorio Introducción a la Computación Introducción a la Computación 11 / 19


Introducción

El tamaño de los datos de entrada. Es el factor más importante .

Ejemplo
En un problema de ordenamiento de n números.Podrı́amos encontrar
computadores cien o quizás mil veces más rápido, pero si el algoritmo empleado es
el burbuja el tiempo de ejecución será proporcional a n2 mientras que de un
algoritmo quicksort es proporcional a n log n.

Por lo tanto, el programador debe confiar en sus conocimientos y habilidad para


encontrar los mejores algoritmos y no en la capacidad de cálculo de los
computadores.

Jaime Osorio Introducción a la Computación Introducción a la Computación 11 / 19


Introducción

Tipos de complejidad de un algoritmo


1 Resolver una ecuación cuadrática O(1)

Jaime Osorio Introducción a la Computación Introducción a la Computación 12 / 19


Introducción

Tipos de complejidad de un algoritmo


1 Resolver una ecuación cuadrática O(1)
2 Búsqueda lineal O(n).

Jaime Osorio Introducción a la Computación Introducción a la Computación 12 / 19


Introducción

Tipos de complejidad de un algoritmo


1 Resolver una ecuación cuadrática O(1)
2 Búsqueda lineal O(n).
3 Recorrido de una matriz O(n2 )

Jaime Osorio Introducción a la Computación Introducción a la Computación 12 / 19


Introducción

Tipos de complejidad de un algoritmo


1 Resolver una ecuación cuadrática O(1)
2 Búsqueda lineal O(n).
3 Recorrido de una matriz O(n2 )
4 Busqueda binaria O(log(n))

Jaime Osorio Introducción a la Computación Introducción a la Computación 12 / 19


Introducción

Tipos de complejidad de un algoritmo


1 Resolver una ecuación cuadrática O(1)
2 Búsqueda lineal O(n).
3 Recorrido de una matriz O(n2 )
4 Busqueda binaria O(log(n))
5 Agente viajero : visitar n paı́ses en el menor tiempo posible O(n!).

Jaime Osorio Introducción a la Computación Introducción a la Computación 12 / 19


Introducción
La eficiencia del algoritmo

Un algoritmo es eficiente cuando logra dar solución a un problema y logra


optimizar los recursos disponibles (tiempo y espacio de memoria).

Jaime Osorio Introducción a la Computación Introducción a la Computación 13 / 19


Introducción
La eficiencia del algoritmo

Un algoritmo es eficiente cuando logra dar solución a un problema y logra


optimizar los recursos disponibles (tiempo y espacio de memoria).

Utilidad de un algoritmo eficiente


1 En dispositivos con poca disponibilidad de memoria.
2 Cuando hay gran cantidad de datos a procesar.

Jaime Osorio Introducción a la Computación Introducción a la Computación 13 / 19


Introducción

La Ciencia de la Computación incluye el estudio de cómo se organiza la


información, cómo se maneja y cómo puede ser utilizada.

Jaime Osorio Introducción a la Computación Introducción a la Computación 14 / 19


Introducción

1 Un tipo de dato de una variable nos define el conjunto de valores que esta
puede tomar. Por ejemplo entero, booleno, real,etc.

Jaime Osorio Introducción a la Computación Introducción a la Computación 15 / 19


Introducción

1 Un tipo de dato de una variable nos define el conjunto de valores que esta
puede tomar. Por ejemplo entero, booleno, real,etc.
2 Un tipo de dato abstracto ( TDA ) es un modelo matemático compuesto por
operaciones definidas sobre este modelo. Pueden ser lineales (TDA lista) o no
lineales (TDA árbol o TDA grafo).

Jaime Osorio Introducción a la Computación Introducción a la Computación 15 / 19


Introducción

1 Un tipo de dato de una variable nos define el conjunto de valores que esta
puede tomar. Por ejemplo entero, booleno, real,etc.
2 Un tipo de dato abstracto ( TDA ) es un modelo matemático compuesto por
operaciones definidas sobre este modelo. Pueden ser lineales (TDA lista) o no
lineales (TDA árbol o TDA grafo).
Ejemplo.
Por ejemplo en una universidad una lista de alumnos se debe tener alumno como
elemento de la lista con los siguientes datos código, especialidad, nombre, etc. y
sus operaciones pueden ser insertar, buscar, eliminar.

Jaime Osorio Introducción a la Computación Introducción a la Computación 15 / 19


Introducción

Una estructuras de datos es un conjunto de variables, quizá de distintos tipos,


conectadas entre si de diversas formas. Se utilizan para implementar los TDA en
un determinado lenguaje de programación.

Jaime Osorio Introducción a la Computación Introducción a la Computación 16 / 19


Introducción

Una estructuras de datos es un conjunto de variables, quizá de distintos tipos,


conectadas entre si de diversas formas. Se utilizan para implementar los TDA en
un determinado lenguaje de programación. Un mismo TDA puede ser
implementado utilizando distintas estructuras de datos y proveer la misma
funcionalidad.

Jaime Osorio Introducción a la Computación Introducción a la Computación 16 / 19


Introducción

Una estructuras de datos es un conjunto de variables, quizá de distintos tipos,


conectadas entre si de diversas formas. Se utilizan para implementar los TDA en
un determinado lenguaje de programación. Un mismo TDA puede ser
implementado utilizando distintas estructuras de datos y proveer la misma
funcionalidad.La forma de definir la estructura de datos influye en la eficiencia de
los algoritmos.

Jaime Osorio Introducción a la Computación Introducción a la Computación 16 / 19


Introducción

Una estructuras de datos es un conjunto de variables, quizá de distintos tipos,


conectadas entre si de diversas formas. Se utilizan para implementar los TDA en
un determinado lenguaje de programación. Un mismo TDA puede ser
implementado utilizando distintas estructuras de datos y proveer la misma
funcionalidad.La forma de definir la estructura de datos influye en la eficiencia de
los algoritmos. Para implementar el TDA lista podemos usar
Estructuras de Datos Estáticas (compuesta solo por variables estáticas)

Jaime Osorio Introducción a la Computación Introducción a la Computación 16 / 19


Introducción

Una estructuras de datos es un conjunto de variables, quizá de distintos tipos,


conectadas entre si de diversas formas. Se utilizan para implementar los TDA en
un determinado lenguaje de programación. Un mismo TDA puede ser
implementado utilizando distintas estructuras de datos y proveer la misma
funcionalidad.La forma de definir la estructura de datos influye en la eficiencia de
los algoritmos. Para implementar el TDA lista podemos usar
Estructuras de Datos Estáticas (compuesta solo por variables estáticas)
Estructuras de Datos Dinámicas (compuesta por una o más variables
dinámicas o llamados también variables tipo puntero).

Jaime Osorio Introducción a la Computación Introducción a la Computación 16 / 19


Introducción

Son estructura de datos un arreglo o vector, una matriz, un registro o estructura,


una lista enlazada, una pila, una cola, un árbol, un grafo, etc.

Jaime Osorio Introducción a la Computación Introducción a la Computación 17 / 19


Los peores errores de programación

Observe estas publicaciones y otras similares, y comparta sus contenidos.


1. https://actualidad.rt.com/actualidad/view/138158-catastrofes-programacion-
culpa-software-computadora
2. https://www.1000tipsinformaticos.com/2017/11/los-10-peores-errores-de-
programacion-en-la-historia.html?fbclid=
IwAR0rnsydgHEqbIfXUurIzIsvPQ qFWsYNwAhXRBTZnBlgpgNTh3CI − SAzFc

Jaime Osorio Introducción a la Computación Introducción a la Computación 18 / 19


Los mejores algoritmos

Lea estas publicaciones y otras similares, y comparte.


https://www.genbeta.com/desarrollo/los-10-mejores-algoritmos-de-computacion-
del-siglo-xx

Jaime Osorio Introducción a la Computación Introducción a la Computación 19 / 19

Vous aimerez peut-être aussi