Академический Документы
Профессиональный Документы
Культура Документы
Fundamentos de la programaci´on
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 1 / 53
Resolver problemas
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 3 / 53
Resolver problemas
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 3 / 53
Resolver problemas
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 3 / 53
Algoritmo
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 4 / 53
Algoritmo
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 4 / 53
Algoritmos para humanos
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 5 / 53
Algoritmos para humanos
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 6 / 53
Procesadores
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 7 / 53
Un microprocesador
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 8 / 53
Esquema simplificado de un ordenador
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 9 / 53
Resolucio´n de problemas con ordenador
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 10 / 53
Resolucio´n de problemas con ordenador
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 10 / 53
Resolucio´n de problemas con ordenador
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 10 / 53
Resolucio´n de problemas con ordenador
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 11 / 53
Resolucio´n de problemas con ordenador
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 11 / 53
Resolucio´n de problemas con ordenador
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 11 / 53
Lenguajes de programaci´on
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 12 / 53
Lenguajes de programaci´on
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 12 / 53
Lenguajes de programaci´on
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 12 / 53
Co´digo m´aquina
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 13 / 53
Ensamblador
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 14 / 53
Lenguajes de programaci´on de alto nivel
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 15 / 53
Lenguajes de programaci´on de alto nivel
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 15 / 53
Lenguajes de programaci´on de alto nivel
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 15 / 53
Un ejemplo
/*Unp r o g ram a s e n c i l l o e n l e n g u a j e C * /
#include< s t d i o . h >
intmain(void)
{
p r i n t f ( " E n u n l u g a r d e l a M a n c h a , d e c u y o n o mb r e n o
q u i e r o a c o r d arm e . . . " ) ;
return0;
}
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 16 / 53
Un ejemplo
#Unpro g r a ma s e n c i l l o e n p y t h o n
print("EnunlugardelaMancha," )
p r i n t ( " d e c u yo n o m b r e n o q u i e r o a c o r d a r m e , " )
p r i n t ( " n o h a mu c h o t i e m p o q u e v i v i a u n h i d a l g o . . . " )
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 17 / 53
Co´mo se expresan los algoritmos
Lenguaje natural.
Problema: Calcular el m´aximo comu´n divisor de dos enterospositivos.
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 18 / 53
Co´mo se expresan los algoritmos
Lenguaje natural.
Problema: Calcular el m´aximo comu´n divisor de dos enteros positivos.
Algoritmo (Euclides): Tomar los dos enteros, y calcular un nuevo par
formado por el menor de ellos y el resto de la divisi´on entera de dividir el
mayor entre el menor. Repetir el proceso hasta que los nu´meros en el par
sean el mismo o el resto de la divisi´on sea cero. El resultado ser´ael divisor
de la u´ltimadivisi´on.
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 18 / 53
Co´mo se expresan los algoritmos
Lenguaje natural.
Problema: Calcular el m´aximo comu´n divisor de dos enteros positivos.
Algoritmo (Euclides): Tomar los dos enteros, y calcular un nuevo par
formado por el menor de ellos y el resto de la divisi´on entera de dividir el
mayor entre el menor. Repetir el proceso hasta que los nu´meros en el par
sean el mismo o el resto de la divisi´on sea cero. El resultado ser´ael divisor
de la u´ltimadivisi´on.
Pseudoc´odigo.
Diagramas deflujo.
En un lenguaje de programaci´on.
Otros modos: tablas de control, lenguajesformales.
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 18 / 53
Pseudoc´odigo
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 19 / 53
Diagrama de flujo
r = a modb
r ƒ= 0
s´ı
a= b
no b= r
r = a modb
return b
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 20 / 53
Lenguaje de alto nivel(Python)
#CalculodelMCDm ed i a n t e e l a l g o r i t m odeEu c l i d e s
a= 42
b= 56
r=a b
wh i l e r < > 0 :
a=b
b=r
r=a b
printb
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 21 / 53
Errores en los algoritmos
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 22 / 53
Errores en los algoritmos
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 23 / 53
Errores en los algoritmos
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 24 / 53
Errores en los algoritmos
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 24 / 53
Bug o error
Definition
Bug: error o fallo en un programa de computador o sistema de software
que desencadena un resultado indeseado [de Wikipedia]
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 25 / 53
Errores en los algoritmos
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 26 / 53
Programador vs. usuario
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 27 / 53
Programador vs. usuario
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 27 / 53
Pensar computacionalmente
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 28 / 53
Pensar computacionalmente
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 28 / 53
Pensar computacionalmente
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 28 / 53
Qu´ees un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 29 / 53
Qu´ees un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 29 / 53
Qu´ees un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 29 / 53
Qu´ees un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 29 / 53
Qu´ees un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 29 / 53
Qu´ees un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 29 / 53
Flujo de un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 30 / 53
Flujo de un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 30 / 53
Flujo de un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 30 / 53
Flujo de un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 30 / 53
Elementos de un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 31 / 53
Elementos de un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 31 / 53
Elementos de un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 31 / 53
Elementos de un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 31 / 53
Elementos de un programa
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 31 / 53
Constante
Definition
Elemento cuyo valor no cambia durante el desarrollo del algoritmo
(durante la ejecuci´on del programa).
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 32 / 53
Constante
Definition
Elemento cuyo valor no cambia durante el desarrollo del algoritmo
(durante la ejecuci´on del programa).
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 32 / 53
Constante
Definition
Elemento cuyo valor no cambia durante el desarrollo del algoritmo
(durante la ejecuci´on del programa).
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 32 / 53
Constante
Definition
Elemento cuyo valor no cambia durante el desarrollo del algoritmo
(durante la ejecuci´on del programa).
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 32 / 53
Variable
Definition
Elemento con nombre cuyo valor puedecambiar
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 33 / 53
Variable
Definition
Elemento con nombre cuyo valor puedecambiar
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 33 / 53
Variable
Definition
Elemento con nombre cuyo valor puedecambiar
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 33 / 53
Variable
Definition
Elemento con nombre cuyo valor puedecambiar
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 33 / 53
Variable
Definition
Elemento con nombre cuyo valor puedecambiar
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 33 / 53
Experimentemos un poco...
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 34 / 53
Expresiones
Definition
Una expresion´es una combinaci´on de constantes, variables, s´ımbolos de
operaci´on, par´entesis, funciones especiales y otros elementos que se evalu´a
produciendo un valor.
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 35 / 53
Expresiones
Definition
Una expresion´es una combinaci´on de constantes, variables, s´ımbolos de
operaci´on, par´entesis, funciones especiales y otros elementos que se evalu´a
produciendo un valor.
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 35 / 53
Expresiones
Definition
Una expresion´es una combinaci´on de constantes, variables, s´ımbolos de
operaci´on, par´entesis, funciones especiales y otros elementos que se evalu´a
produciendo un valor.
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 35 / 53
Expresiones (cont.)
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 36 / 53
Tipo de datos
Definition
Un tipo de datos es un conjunto de datos cuyos valores tienen
caracter´ısticas comunes ypredefinidas.
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 37 / 53
Tipos de datos en Python
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 38 / 53
Conversiones de tipo
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 39 / 53
Conversiones de tipo
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 40 / 53
Precedencia de operadores
Definition
Orden en el que un determinado lenguaje lleva a cabo las operaciones
Ejemplo:
9 +4 * 2
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 41 / 53
Precedencia de operadores
Definition
Orden en el que un determinado lenguaje lleva a cabo las operaciones
Ejemplo:
9 +4 * 2
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 41 / 53
Precedencia de operadores
Definition
Orden en el que un determinado lenguaje lleva a cabo las operaciones
Ejemplo:
9 +4 * 2
(9 +4) * 2
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 41 / 53
Uso de variables lo´gicas
Utilizar las constantes “True” y “False” s´olopara inicializar, evitando
escribir algo como:
if(ready==True) . . .
w h i l e ( e mp t y = = F a l s e ) . . .
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 42 / 53
Uso de variables lo´gicas
Utilizar las variables booleanas para recoger el valor de una expresi´on, sin
usar ifs innecesarios. As´ı, en lugarde:
ifco n d i c i o n:
bo o l e a n o = T r u e
else:
bo o l e a n o = F a l s e
debe escribirse:
bo o l e a n o = c o n d i c i o n
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 43 / 53
Resumen
Salvador S´anchez, Miguel A. Sicilia (Univer sidad Fundamentos de la programaci´on Septiembre de 2015 50 / 53