Módulo 1 - 2 - Prog - BD - 1ROS - 2018
Módulo 1 - 2 - Prog - BD - 1ROS - 2018
Módulo 1 - 2 - Prog - BD - 1ROS - 2018
Asignatura: Programación
y Base de Datos.
Curso: Primero de bach.
Programación
Parcial: Primero
Parcial: Segundo
Quimestre: Primero
Quimestre: Primero
2
Aspectos conceptuales
El joven de secundaria se encuentra en la etapa pos-operaciones concretas. En este período, en el que la lógica
del joven debe estar desarrollada, es preciso preparar su capacidad mental con diversas actividades que le
permitan afrontar el futuro cómodamente. Para ello, necesita ejercitar, reforzar y perfeccionar las habilidades
que configuran la inteligencia. Una vez que su cerebro ha empezado a utilizar ideas abstractas, tiene que
dominar todo lo que puede verificar con sus sentidos, es decir, los elementos y operaciones concretas.
Con el fin de que todos los alumnos alcancen una adecuada capacitación en este campo, presentamos una
serie de fichas en las que se trabajan las siguientes habilidades:
• Percepción-Atención. Esta habilidad permite concentrarse en una tarea sin distraerse y captar la
información correspondiente con claridad. Para que un joven la pueda ejercitar y mantener durante un
tiempo suficiente, se requiere que se encuentre en una situación personal relajada –que no esté cansado
ni somnoliento– y en un ambiente adecuado. Adquirir el hábito de la concentración ayuda, además, a
desarrollar unas buenas estrategias de aprendizaje.
• Comprensión y razonamiento verbal. El desarrollo de esta habilidad permite al joven comprender el
significado de las palabras (comprensión), expresarse adecuadamente con ellas (fluidez) y razonar
lógicamente. La comprensión pone de manifiesto la asimilación de la in- formación transmitida oralmente.
Todos los indicadores confirman que esta habilidad bien desarrollada es un excelente predictor del
éxito académico del alumno.
• Habilidad espacial. Esta habilidad permite interpretar las representaciones gráficas de objetos, reconocerlos
en diferentes posiciones o imaginarse una estructura a partir de un diseño. En las actividades que se
presentan se combinan la percepción y el razonamiento lógico.
• Razonamiento lógico. Esta habilidad permite establecer relaciones coherentes entre distintos
elementos (clasificación, seriación, ordenación y reconocimiento de relaciones absurdas o
inadecuadas…). Para el desarrollo adecuado de esta habilidad es necesario mejorar la percepción, la
comprensión verbal y un creciente dominio de la atención y la memoria.
• Habilidad y razonamiento numéricos. Esta habilidad supone el desarrollo e interiorización de las
operaciones mentales, que se facilitan cuando se domina el cálculo de forma automática y se aplica a él el
pensamiento lógico. Es preciso trabajar esta habilidad sistemáticamente, ya que con ella el joven podrá
resolver situaciones cotidianas.
PROBLEMAS DE LÓGICA
En ocasiones, ciertas personas se encuentran en una situación crítica, y sólo por su
agudeza e inteligencia pueden salir de ella.
Problemas de Lógica
1. Encuentra la lógica en las siguientes operaciones y números.
2. SILENCIO. Si Ángela habla más bajo que Rosa y Celia habla más alto que Rosa,
¿habla Ángela más alto o más bajo que Celia?
5. SEIS AMIGOS DE VACACIONES. Seis amigos desean pasar sus vacaciones juntos y
deciden, cada dos, utilizar diferentes medios de transporte; sabemos que Alejandro
no utiliza el coche ya que éste acompaña a Benito que no va en avión. Andrés viaja
en avión. Si Carlos no va acompañado de Darío ni hace uso del avión, podría Vd.
decirnos en qué medio de transporte llega a su destino Tomás.
- Haz juegos por ordenador como por ejemplo el que aquí tienes. Estudios científicos
han demostrada que 15 minutos diarios puede mejorar mucho el rendimiento de la
memoria.
- El ejercicio físico aeróbico aumenta el tamaño del hipocampo anterior y ello conlleva
mejoras en la memoria espacial.
- Como alimentos que contengan chocolate. Según estudios podría estar relacionado
con un mejor funcionamiento cognitivo, ya que estimulan la perfusión cerebral,
favorecen la neurogénesis y promueven cambios en las áreas relacionadas con el
aprendizaje y la memoria.
- Tanto si eres diestro como si eres zurdo, es importante que no olvides que tienes otra
mano. Hacer pequeñas tareas con la mano con la que no estamos acostumbrados hace
que nuestro cerebro se vea obligado a crear conexiones nuevas.
- Los mejores alimentos para la memoria son: los frutos secos (las mejores las
almendras), arándanos, brócoli, zanahorias, manzanas y pescados como el salmón, la
trucha y las sardinas.
EJERCICIOS DE APLICACIÓN
Cambie el cuadro con las incógnitas (???) por uno de los tres que están a la derecha (a,b,c):
01.
02.
03.
04.
5
05.
06.
07.
08.
09.
10.
01.
02.
03.
04.
05.
06.
07.
08.
6
09.
10.
7
8
Group A Group B
Group A Group B
9
Cambie las cartas con las incógnitas (???) por las que están a la derecha (a ,b, c):
1.
2.
3.
4.
11
5.
Reemplace las incógnitas (???) por una de las tres opciones que están a la derecha (a, b, c):
12
13
14
Reemplace las incógnitas (???) por uno de las tres opciones que están a la derecha (a, b, c):
15
PROGRAMACIÓN
Tipos de datos
Un tipo de datos es la propiedad de un valor que determina su dominio (qué valores puede
tomar), qué operaciones se le pueden aplicar y cómo es representado internamente por el
computador.
Todos los valores que aparecen en un programa tienen un tipo.
A continuación revisaremos los tipos de datos elementales de Python. Además de éstos,
existen muchos otros, y más adelante aprenderemos a crear nuestros propios tipos de
datos.
Números enteros
El tipo int (del inglés integer, que significa «entero») permite representar números enteros.
Los valores que puede tomar un int son todos los números enteros: ... -3, -2, -1, 0, 1, 2, 3, ...
Los números enteros literales se escriben con un signo opcional seguido por una secuencia
de dígitos:
1570
+4591
-12
Números reales
El tipo float permite representar números reales.
El nombre float viene del término punto flotante, que es la manera en que el computador
representa internamente los números reales.
Hay que tener mucho cuidado, porque los números reales no se pueden representar de
manera exacta en un computador. Por ejemplo, el número decimal 0.7 es representado
internamente por el computador mediante la aproximación 0.69999999999999996. Todas
las operaciones entre valores float son aproximaciones. Esto puede conducir a resultados
algo sorpresivos:
>>> 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7
0.9999999999999998
Los números reales literales se escriben separando la parte entera de la decimal con un
punto. Las partes entera y decimal pueden ser omitidas si alguna de ellas es cero:
>>> 881.9843000
881.9843
>>> -3.14159
-3.14159
>>> 1024.
31
1024.0
>>> .22
0.22
Números complejos
El tipo complex permite representar números complejos.
Los números complejos tienen una parte real y una imaginaria. La parte imaginaria es
denotada agregando una j inmediatamente después de su valor:
3 + 9j
-1.4 + 2.7j
Valores lógicos
Los valores lógicos True y False (verdadero y falso) son de tipo bool, que representa
valores lógicos.
El nombre bool viene del matemático George Boole, quien creó un sistema algebraico para
la lógica binaria. Por lo mismo, a True y False también se les llama valores booleanos. El
nombre no es muy intuitivo, pero es el que se usa en informática, así que hay que conocerlo.
Texto
A los valores que representan texto se les llama strings, y tienen el tipo str.
Los strings literales pueden ser representados con texto entre comillas simples o comillas
dobles:
"ejemplo 1"
'ejemplo 2'
La ventaja de tener dos tipos de comillas es que se puede usar uno de ellos cuando el otro
aparece como parte del texto:
32
"Let's go!"
'Ella dijo "hola"'
Es importante entender que los strings no son lo mismo que los valores que en él pueden
estar representados:
>>> 5 == '5'
False
>>> True == 'True'
False
Los strings que difieren en mayúsculas y minúsculas, o en espacios también son distintos:
>>> 'mesa' == 'Mesa'
False
>>> ' mesa' == 'mesa '
False
Nulo
Existe un valor llamado None (en inglés, «ninguno») que es utilizado para representar
casos en que ningún valor es válido, o para indicar que una variable todavía no tiene un
valor que tenga sentido.
El valor None tiene su propio tipo, llamado NoneType, que es diferente al de todos los
demás valores.
33
Un algoritmo, aparte de tener como característica la facilidad para transcribirlo, debe ser:
1. Preciso. Debe indicar el orden en el cual debe realizarse cada uno de los pasos que
conducen a la solución del problema.
2. Definido. Esto implica que el resultado nunca debe cambiar bajo las mismas condiciones
del problema, éste siempre debe ser el mismo.
3. Finito. No se debe caer en repeticiones de procesos de manera innecesaria; deberá
terminar en algún momento.
Identificadores
Antes de analizar cada una las herramientas que se utilizan en representación de algoritmos
para la solución de problemas, se establecerá qué son los identificadores que se utilizan
dentro de un algoritmo.
Los identificadores son los nombres que se les asignan a los objetos, los cuales se pueden
considerar como variables o constantes, éstos intervienen en los procesos que se realizan
para la solución de un problema, por consiguiente, es necesario establecer qué
características tienen.
Para establecer los nombres de los identificadores se deben respetar ciertas reglas que
establecen cada uno de los lenguajes de programación, para el caso que nos ocupa se
establecen de forma indistinta según el problema que se esté abordando, sin seguir regla
alguna, generalmente se utilizará la letra, o las letras, con la que inicia el nombre de la
variable que representa el objeto que se va a identificar.
34
Constante
Un identificador se clasifica como constante cuando el valor que se le asigna a este
identificador no cambia durante la ejecución o proceso de solución del problema. Por
ejemplo, en problemas donde se utiliza el valor de PI, si el lenguaje que se utiliza para
codificar el programa y ejecutarlo en la computadora no lo tiene definido, entonces se puede
establecer de forma constante estableciendo un identificador llamado PI y asignarle el valor
correspondiente de la siguiente manera:
PI = 3.1416.
De igual forma, se puede asignar valores constantes para otro identificadores según las
necesidades del algoritmo que se esté diseñando.
Variables
Los identificadores de tipo variable son todos aquellos objetos cuyo valor cambia durante
la ejecución o proceso de solución del problema. Por ejemplo, el sueldo, el pago, el
descuento, etcétera, que se deben calcular con un algoritmo determinado, o en su caso,
contar con el largo (L) y ancho (A) de un rectángulo que servirán para calcular y obtener su
área. Como se puede ver, tanto L como A son variables que se proporcionan para que el
algoritmo pueda funcionar, y no necesariamente se calculen dentro del proceso de solución.
Tipos de variables
Los elementos que cambian durante la solución de un problema se denominan variables, se
clasifican dependiendo de lo que deben representar en el algoritmo, por lo cual pueden ser:
de tipo entero, real y string o de cadena, sin embargo, existen otros tipos de variables que
son permitidos con base en el lenguaje de programación que se utilice para crear los
programas, por consiguiente, al momento de estudiar algún lenguaje de programación en
especial se deben dar a conocer esas clasificaciones.
Para el caso de este libro, se denominará variables de tipo entero a todas aquellas cuyo
valor no tenga valores decimales; contrario a las de tipo real, la cual podrá tomar valores con
decimales. Como ejemplo de variables enteras se puede considerar el número de personas,
días trabajados, edad de una persona, etcétera. Y para el caso de reales, se puede considerar
el sueldo de una persona, el porcentaje de equis cantidad, etcétera.
En caso de que las variables tomen valores de caracteres, se designarán string o de
cadena; como ejemplo de éstas se pueden mencionar el sexo de una persona, falso o
verdadero, el nombre de una persona, el tipo de sangre, etcétera.
Pseudocódigo
Sin duda, en el mundo de la programación el pseudocódigo es una de las herramientas más
conocidas para el diseño de solución de problemas por computadora. Esta herramienta
permite pasar casi de manera directa la solución del problema a un lenguaje de
programación específico. El pseudocódigo es una serie de pasos bien detallados y claros que
conducen a la resolución de un problema.
La facilidad de pasar casi de forma directa el pseudocódigo a la computadora ha dado
como resultado que muchos programadores implementen de forma directa los programas
en la computadora, cosa que no es muy recomendable, sobre todo cuando no se tiene la
suficiente experiencia para tal aventura, pues se podrían tener errores propios de la poca
experiencia acumulada con la solución de diferentes problemas.
35
Por ejemplo, el pseudocódigo para determinar el volumen de una caja de dimensiones A,
B y C se puede establecer de la siguiente forma:
1. Inicio.
2. Leer las medidas A, B y C.
3. Realizar el producto de A * B * C y guardarlo en V
(V = A * B * C).
1. Escribir el resultado V.
2. Fin.
Como se puede ver, se establece de forma precisa la secuencia de los pasos por realizar;
además, si se le proporciona siempre los mismos valores a las variables A, B y C, el resultado
del volumen será el mismo y, por consiguiente, se cuenta con un final.
Diagramas de flujo
Los diagramas de flujo son una herramienta que permite representar visualmente qué
operaciones se requieren y en qué secuencia se deben efectuar para solucionar un
problema dado. Por consiguiente, un diagrama de flujo es la representación gráfica
mediante símbolos especiales, de los pasos o procedimientos de manera secuencial y lógica
que se deben realizar para solucionar un problema dado.
Los diagramas de flujo desempeñan un papel vital en la programación de un problema,
ya que facilitan la comprensión de problemas complicados y sobre todo aquellos en que sus
procesos son muy largos;2 generalmente, los diagramas de flujo se dibujan antes de
comenzar a programar el código fuente, que se ingresará posteriormente a la computadora.
Los diagramas de flujo facilitan la comunicación entre los programadores y los usuarios,
además de que permiten de una manera más rápida detectar los posibles errores de lógica
que se presenten al implementar el algoritmo. En la tabla 1.1 se muestran algunos de los
principales símbolos utilizados para construir un diagrama de flujo.
Dentro de los diagramas de flujo se pueden utilizar los símbolos, con los cuales se indican
las operaciones que se efectuarán a los datos con el fin de producir un resultado.
36
Por ejemplo, se puede establecer la solución del diagrama de flujo para determinar el
volumen de una caja de dimensiones A, B y C como se muestra
Establecer cuál herramienta utilizar para representar los algoritmos diseñados para la
solución de problemas estará en función del gusto y preferencia del programador, y quizás
no tanto en función de la complejidad de los problemas, ya que si bien es cierto que los
diagramas N/S tienen pocos símbolos, presentan la ventaja de que por lo compacto que
resultan sus representaciones suelen ser más fáciles de leer y de transcribir al lenguaje de
37
programación que se utilizará, pero luego resulta complicado acomodar las acciones al
construir el diagrama.
Los símbolos más utilizados en diagrama N/S corresponden a un tipo de estructura para la
solución del problema, esas estructuras pueden ser: secuenciales de decisión y de ciclo
Aritméticos: son análogas a las fórmulas matemáticas, se usan para variables numéricas.
Estos son los operadores usados:
Operadores Significado
+ Suma
- Resta
* Multiplicación
/ División
DIV División entera
MOD Modulo (resto de la división entera)
^ Potencia
DIV es como si truncáramos el resultado de una división. Por ejemplo, 5 DIV 2 seria 2 no 2’5.
MOD es el resto del DIV. Por ejemplo, 5 MOD 2 es igual a 1.
Un consejo para recordar la posición es simplemente imaginar una división y que podemos coger el
cociente o el resto, según el operador usado.
38
Operadores Lógicos: solo pueden dar dos valores true o false. Pueden ser:
o Relacionales: pueden comparar dos valores, mediante un símbolo. Estos son los operadores
usados:
Operador Significado
> Mayor que
< Menor que
= Igual que
>= Mayor o igual que
<= Menor o igual que
<> Distinto que
Estructuras de control
Sin importar qué herramienta o técnica se utilice para la solución de un problema dado, ésta
tendrá una estructura, que se refiere a la secuencia en que se realizan las operaciones o
acciones para resolver el problema; esas estructuras pueden ser: secuenciales, de decisión y
de ciclo o repetición, las cuales se analizarán en su momento.
Debe tenerse presente que la solución de un problema dado mediante el uso de una
computadora es un sistema, el cual debe tener una entrada de datos, los cuales serán
procesados para obtener una salida, que es la solución o información que se busca. En la
figura 2.1 se muestra el esquema de un sistema que transforma los datos en información
mediante un proceso.
Estructuras secuenciales
En este tipo de estructura las instrucciones se realizan o se ejecutan una después de la otra
y, por lo general, se espera que se proporcione uno o varios datos, los cuales son asignados a
variables para que con ellos se produzcan los resultados que representen la solución del
problema que se planteó. Los algoritmos tienen como fin actuar sobre los datos
proporcionados por el usuario, a los que se les aplican procesos con el fin de generar la
información o un resultado. El algoritmo es realmente la representación funcional de un
sistema, como el que se muestra en la figura 2.1.
Para resolver un problema mediante la utilización de cualquier herramienta es necesario
entender y establecer con qué datos se cuenta, los procesos que se deben realizar y la
secuencia apropiada para obtener la solución que se desea.
39
Ejemplo:
40
Problemas propuestos
41
2.1 Realice un diagrama de flujo y pseudocódigo que representen el algoritmo para obtener
el área de un triángulo.
2.2 Una empresa importadora desea determinar cuántos dólares puede adquirir con equis
cantidad de dinero mexicano. Realice un diagrama de flujo y pseudocódigo que
representen el algoritmo para tal fin.
2.3 Una empresa que contrata personal requiere determinar la edad de las personas que
solicitan trabajo, pero cuando se les realiza la entrevista sólo se les pregunta el año en
que nacieron. Realice el diagrama de flujo y pseudocódigo que representen el algoritmo
para solucionar este problema.
2.4 Un estacionamiento requiere determinar el cobro que debe aplicar a las personas que lo
utilizan. Considere que el cobro es con base en las horas que lo disponen y que las
fracciones de hora se toman como completas y realice un diagrama de flujo y
pseudocódigo que representen el algoritmo que permita determinar el cobro.
2.5 Pinturas “La brocha gorda” requiere determinar cuánto cobrar por trabajos de pintura.
Considere que se cobra por m2 y realice un diagrama de flujo y pseudocódigo que
representen el algoritmo que le permita ir generando presupuestos para cada cliente.
2.6 Se requiere determinar la hipotenusa de un triángulo rectángulo. ¿Cómo sería el
diagrama de flujo y el pseudocódigo que representen el algoritmo para obtenerla?
Recuerde que por Pitágoras se tiene que: C2 = A2 + B2.
2.7 La compañía de autobuses “La curva loca” requiere determinar el costo que tendrá el
boleto de un viaje sencillo, esto basado en los kilómetros por recorrer y en el costo por
kilómetro. Realice un diagrama de flujo y pseudocódigo que representen el algoritmo
para tal fin.
2.8 Se requiere determinar el tiempo que tarda una persona en llegar de una ciudad a otra
en bicicleta, considerando que lleva una velocidad constante. Realice un diagrama de
flujo y pseudocódigo que representen el algoritmo para tal fin.
2.9 Se requiere determinar el costo que tendrá realizar una llamada telefónica con base en el
tiempo que dura la llamada y en el costo por minuto. Realice un diagrama de flujo y
pseudocódigo que representen el algoritmo para tal fin.
2.10 La CONAGUA requiere determinar el pago que debe realizar una persona por el total de
metros cúbicos que consume de agua. Realice un diagrama de flujo y pseudocódigo que
representen el algoritmo que permita determinar ese pago.
Estructuras selectivas
En los algoritmos para la solución de problemas donde se utilizan estructuras selectivas se
emplean frases que están estructuradas de forma adecuada dentro del pseudocódigo. En el
caso del diagrama de flujo, también se estructura de una forma semejante. En el caso del
diagrama N/S con estructuras selectivas, se representa como se muestra.
42
Ejemplo:
43
44
Problemas propuestos
3.1 Realice un algoritmo para determinar si una persona puede votar con base en su edad en
las próximas elecciones. Construya el diagrama de flujo, el pseudocódigo y el diagrama
N/S.
3.2 Realice un algoritmo para determinar el sueldo semanal de un trabajador con base en
las horas trabajadas y el pago por hora, considerando que después de las 40 horas cada
hora se considera como excedente y se paga el doble. Construya el diagrama de flujo, el
pseudocódigo y el diagrama N/S.
3.3 El dueño de un estacionamiento requiere un diagrama de flujo con el algoritmo que le
permita determinar cuánto debe cobrar por el uso del estacionamiento a sus clientes.
Las tarifas que se tienen son las siguientes:
Las dos primeras horas a $5.00 c/u.
Las siguientes tres a $4.00 c/u.
Las cinco siguientes a $3.00 c/u.
Después de diez horas el costo por cada una es de dos pesos.
3.4 Se tiene el nombre y la edad de tres personas. Se desea saber el nombre y la edad de la
persona de menor edad. Realice el algoritmo correspondiente y represéntelo con un
diagrama de flujo, pseudocódigo y diagrama N/S.
3.5 Realice el diagrama de flujo, el pseudocódigo y el diagrama N/S que muestren el
algoritmo para determinar el costo y el descuento que tendrá un artículo. Considere que
si su precio es mayor o igual a $200 se le aplica un descuento de 15%, y si su precio es
mayor a $100 pero menor a $200, el descuento es de 12%, y si es menor a $100, sólo
10%.
45
46