Resolución de Problemas con el uso del Computador
del Computador
Algoritmos/pseudocódigos/programas
La Informática
LA INFORMATICA
Actualmente utilizada en todas las áreas del Conocimiento:
medicina, química, ingeniería, entre otras
NO ES VITALMENTE IMPORTANTE
Aprender un lenguaje de programación: Visual Basic, Java, Pascal, Lenguaje C
MUY IMPORTANTE
Entrenar, fruto de ello, obtener la capacidad de análisis y una buena metodología para la resolución de problemas
Programador
Un Programador es aquel que:
• Conoce las
características, el funcionamiento de la computadora y las tecnologías asociadas.
• Tiene la
capacidad para describir la
solución a un
problema a través de una secuencia de pasos
• Es capaz de transformar esa
secuencia de pasos a un lenguaje que la computadora pueda efectuar
Programador
El Programador debe:
• Analizar el problema hasta entenderlo totalmente
• Diseñar una estrategia descrita por los pasos requeridos para resolver el problema
• Conocer las capacidades y limitaciones del computador
•Dominar el lenguaje de programación
Problema
Un problema existe cuando hay tres elementos, cada Problema: Proposición dirigida a averiguar el modo de obtener un resultado cuando ciertos datos son conocidos.
Un problema existe cuando hay tres elementos, cada uno de los cuales está claramente definido:
Una situación inicial.
Una situación
final u objetivo a
alcanzar
Restricciones o pautas respecto de
métodos
Algoritmos
Algoritmo
Es una lista de instrucciones que realizan una
descripción paso a paso y precisa de un proceso que garantiza la resolución de un problema que
pertenece a un tipo determinado, y que finaliza una vez que hayan llevado a cabo un número finito de vez que hayan llevado a cabo un número finito de pasos
Algoritmo
Es un método para resolver un problema mediante una serie de pasos definidos, precisos y finitos.
Algoritmos
Tiene un número determinado de pasos, implica que tiene un fin
Finito
Características de los Algoritmos
Preciso Definido
Implica un orden de realización de cada uno de los pasos
Si se sigue dos veces, se obtiene el mismo resultado
Algoritmos
Partes de un Algoritmo
La definición de un algoritmo debe describir tres partes:
Proceso: operaciones y cálculos a realizar.
Entrada: información de partida.
Salida: resultados obtenidos.
Fase a seguir para la solución de problemas usando el computador:
Analizar el problema
Fases para elaborar un Algoritmo
Diseñar el Algoritmo
Codificación Depuración
I. Análisis del Problema
Una forma de realizar esta actividad se basa en:
• Formular claramente el problema
Fases para elaborar un Algoritmo
• Formular claramente el problema
• Especificar los resultados que se desean obtener
• Identificar la información disponible (datos)
• Determinar las restricciones
• Definir los procesos necesarios para convertir los datos disponibles (materia prima) en la información requerida (resultados).
Fases para elaborar un Algoritmo
Análisis
1.- Precisar los resultados esperados El estudiante debe preguntarse:
• ¿Qué información me solicitan?
• ¿Qué formato debe tener esta información?
Fases para elaborar un Algoritmo
Análisis
2.- Identificar datos disponibles El estudiante debe preguntarse:
• ¿Qué información es importante?
• ¿Qué información no es relevante?
• ¿Cuáles son los datos de entrada? (conocidos)
• ¿Cuál es la incógnita?
• ¿Qué información me falta para resolver el problema? (datos desconocidos)
¿Puedo agrupar los datos en categorías?
Fases para elaborar un Algoritmo
Análisis
3.- Determinar las restricciones El estudiante debe preguntarse:
• ¿Qué condiciones me plantea el problema?
• ¿Qué está prohibido hacer y/o utilizar?
• ¿Qué está permitido hacer y/o utilizar?
• ¿Cuáles datos puedo considerar fijos (constantes) para simplificar el problema?
• ¿Cuáles datos son variables?
• ¿Cuáles datos debo calcular?
Fases para elaborar un Algoritmo
Análisis
4.- Establecer procesos (operaciones) El estudiante debe preguntarse:
• ¿Qué procesos necesito?
• ¿Qué fórmulas debo emplear?
• ¿Cómo afectan las condiciones a los procesos?
• ¿Qué debo hacer?
• ¿Cuál es el orden de lo que debo hacer?
Ejemplo
Esteban está ahorrando para comprar una patineta que vale Bs. 155. Su papá le ha dado una mesada de Bs. 15 durante 7 semanas. Por lavar el auto de su tío tres veces recibió Bs. 18.
Su hermano ganó Bs. 10 pesos por hacer los mandados de su mamá y Bs. 4 por sacar a pasear el perro. ¿Esteban tiene
mamá y Bs. 4 por sacar a pasear el perro. ¿Esteban tiene ahorrado el dinero suficiente para comprar la patineta o aún le falta?
(Adaptado de Casasbuenas & Cifuentes (1998b), página 23).
Respuesta
Formular el problema: Ya se encuentra claramente planteado.
Resultados esperados: Tiene Esteban ahorrado el dinero suficiente para comprar una patineta que vale dinero suficiente para comprar una patineta que vale Bs. 155?
Datos disponibles: Los ingresos de Esteban: Bs. 15 por 7 semanas + Bs. 18. Los 10 Bs. y los 4 Bs. que ganó el hermano de Esteban son irrelevantes para la solución de este problema y se pueden omitir.
II. Diseño de Algoritmos Programar un módulo Comprobar el módulo
Fases para elaborar un Algoritmo
Si es necesario, depurar el módulo
Combinar el módulo, con el resto de los otros módulos
Fases para elaborar un Algoritmo
III. Codificación: Es la escritura en un lenguaje de programación de la representación de un
algoritmo. Dado que el diseño del algoritmo es independiente del lenguaje de programación
utilizado en su implementación, el código puede utilizado en su implementación, el código puede ser escrito con igual facilidad en un lenguaje o en otro.
La codificación se conoce como programa fuente.
Fases para elaborar un Algoritmo
Compilación y ejecución
Una vez que el algoritmo se ha convertido en un programa fuente, debe ser traducido a lenguaje máquina.
Este proceso se realiza con el compilador y el sistema operativo que se encarga prácticamente de la
compilación.
Si al compilar el programa fuente se presentan
errores (errores de compilación), es necesario volver a editar el programa, corregir los errores y
compilar de nuevo.
Fases para elaborar un Algoritmo
Esto se repite hasta que ya no se presenten más errores, obteniéndose el programa objeto.
Cuando no existen errores en el programa fuente se Compilación y ejecución
Cuando no existen errores en el programa fuente se debe instruir al sistema operativo para que efectúe la fase de montaje o enlace, del programa fuente con las librerías del programa del compilador. Este
proceso de montaje produce un programa ejecutable.
Cuando se ha creado un programa ejecutable este se puede ya ejecutar desde el sistema operativo con
solo teclear su nombre.
Fases para elaborar un Algoritmo
Suponiendo que no existen errores durante la ejecución (errores en tiempo de ejecución), se obtendría la salida de resultados correctos del
Compilación y ejecución
obtendría la salida de resultados correctos del programa.
Proceso de compilación de un
programa
Fases para elaborar un Algoritmo
Documentación
La documentación puede ser interna y externa.
La documentación interna es la contenida en líneas de comentarios.
de comentarios.
La documentación externa incluye análisis, diagramas de flujo y/o pseudocódigos, manuales de usuarios
con instrucciones para ejecutar el programa y para interpretar los resultados.
La documentación es vital cuando se desea corregir posibles errores futuros o bien cambiar el programa.
Estos cambios se denominan mantenimiento del programa.
Fases para elaborar un Algoritmo
Documentación
programa.
Además es de buena costumbre para todo buen
programador, dejar comentado su código, para que el futuro programador pueda darle mantenimiento fácilmente a el programa, o incluso, si es el mismo creador quien debe darle mantenimiento.
Fases para elaborar un Algoritmo
Es el proceso de ejecución del programa con una amplia variedad de datos de entrada, llamados
datos de test o prueba como son: valores normales IV.- Depuración (Verificación)
datos de test o prueba como son: valores normales de entrada, valores extremos de entrada que
comprueben los límites del programa y valores de entrada que comprueben aspectos especiales del programa.
Estos determinarán si el programa contiene errores o no.
Ejemplo
En un juego, el ganador obtiene una ficha roja; el segundo, una ficha azul; y el tercero, una amarilla.
Al final de varias rondas, el puntaje se calcula de la siguiente manera: Al cubo de la cantidad de fichas siguiente manera: Al cubo de la cantidad de fichas rojas se adiciona el doble de fichas azules y se
descuenta el cuadrado de las fichas amarillas. Si Andrés llegó 3 veces en primer lugar, 4 veces de último y 6 veces de intermedio, ¿Qué puntaje
obtuvo?
(Adaptado de Melo (2001), página 30)
Respuesta
Análisis
• Leer detenidamente el problema
• ¿Cuántos colores de fichas se reparten?
• ¿Cuántas fichas rojas, azules y amarillas obtuvo
• ¿Cuántas fichas rojas, azules y amarillas obtuvo Andrés?
•¿Qué pregunta el problema?
Respuesta
Diseño
• Para hallar el puntaje que obtiene Andrés por sus
llegadas de primero, calcular el cubo de la cantidad de fichas rojas.
• Para hallar el puntaje por sus llegadas en segundo
• Para hallar el puntaje por sus llegadas en segundo lugar, calcular el doble de la cantidad de fichas azules.
• Para hallar el puntaje que pierde por sus llegadas en último lugar, calcular el cuadrado de la cantidad de
fichas amarillas.
• Para hallar el puntaje total, calcular la suma de los puntajes por las fichas rojas y azules, restarle los
puntos de las fichas amarillas.
Respuesta
Codificación
• Por tres fichas rojas: 3^3 = 27 puntos
• Por seis fichas azules: 6 x 2 = 12 puntos
• Por cuatro fichas amarillas: 42 = 16 puntos
• Para obtener el puntaje final de Andrés, sumar los puntos obtenidos con las fichas rojas y azules (27 + 12 = 39 puntos) y de este resultado restar los puntos representados por las fichas amarillas
(39 – 16 = 23 puntos).
Ejemplo
Se desea que un persona cargue un Video de la página Youtube.com a su perfil de Facebook. Se asume que el usuario tiene conexión a Internet y nombre de usuario y contraseña en Facebook
nombre de usuario y contraseña en Facebook
Ejemplo
Análisis:
¿Se entiende el problema?
¿Cuáles son las condiciones?
Claramente
Existe conexión a Internet y el usuario tiene su login y contraseña de Facebook
¿Qué restricciones existen?
¿Cuáles son las entradas?
¿Cuál es la salida?
de Facebook
El video. Debe saber cual video va a subir
Colocar el video en el perfil de Facebook del usuario
El usuario puede no estar logeado al seleccionar compartir en Facebook
Ejemplos
1. Vaya a la pagina www.youtube.com 2. Ubique el video
3. Pulse el link compartir que está debajo del video Codificación
3. Pulse el link compartir que está debajo del video 4. De la lista de posibles sites pulse FaceBook
5. Si esta loggeado se cargara el video
6. Si no está loggeado debe iniciar su sesión FaceBook 7. Si desea, coloque un comentario para el video
Ejemplo de Algoritmo
Se desea que realice un algoritmo que describa la forma como cambiar un caucho de un carro, el
carro está detenido en la carretera recta, el usuario tiene todas las herramientas, inclusive el caucho de repuesto.
Problema: cambiar un caucho a un carro
Entrada: caucho, gato hidráulico, llave de cruz Salida: nuevo caucho instalado
repuesto.
Ejemplo de Algoritmo
Proceso:
Inicio
Obtener los implementos necesarios
Aflojar cada una de las tuercas con la llave
Meter el gato bajo el carro en una posición firme Levantar el carro con el gato hidráulico
Levantar el carro con el gato hidráulico Aflojar completamente las tuercas
Bajar el caucho anterior Insertar el nuevo caucho Colocar y fijar las tuercas Bajar el carro con el gato
Apretar fuertemente las tuercas con la llave Guardar los implementos
Fin
Ejemplo de Algoritmo
Realice un algoritmo que calcule las raíces de una ecuación cuadrática de la forma:
-b ± √(b2 – 4*a*c) / 2*a -b ± √(b – 4*a*c) / 2*a
Ejemplo
Análisis:
¿Se entiende el problema?
¿Cuáles son las entradas?
Claramente
Los valores de las variables: a, b y c
¿Qué restricciones existen?
¿Cuál es la salida?
Los valores de las raíces: X1 y X2
La expresión (b2 – 4*a*c) no debe ser negativo o debe ser >= 0 La variable a no debe ser cero
Ejemplos
1. Leer los valores de las variables: a, b y c
2. Si a = 0, “Error, a debe ser diferente de cero”, Fin 3. Si (b2 – 4*a*c) <0, “Error (b2 – 4*a*c) debe ser Codificación
3. Si (b2 – 4*a*c) <0, “Error (b2 – 4*a*c) debe ser mayor o igual a cero”, Fin
4. Evaluar X1 = -b + √(b2 – 4*a*c) / 2*a 5. Evaluar X2 = -b - √(b2 – 4*a*c) / 2*a 6. Mostrar los valores de X1 y X2
7. Fin
Algoritmos
Variable
Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede
la ejecución de un proceso, su contenido puede cambiar durante la ejecución del programa.
Constantes
Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.
Contadores
Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o acción.
Contadores, acumuladores e interruptores
Los contadores se utilizan con la finalidad de contar
sucesos o acciones internas de un ciclo; deben realizar una operación de inicialización y posteriormente las
sucesivas de incremento o decremento del mismo.
La inicialización consiste en asignarle al contador un valor. Se situará antes y fuera del ciclo.
Los contadores tienen la siguiente forma:
contador = contador operador valor_constante El operador es un símbolo algebraico tales como:
Contadores, acumuladores e interruptores
El operador es un símbolo algebraico tales como:
+, -, *, /, mod, div Ejemplo:
Un contador de personas, al inicio del proceso hay
“cero” personas, cada vez que pasa una se va incrementando.
Acumulador o totalizador: es una variable destinada a contener o almacenar cantidades
variables provenientes de los resultados obtenidos en operaciones aritméticas previamente realizadas de manera sucesiva, lo que nos permitirá obtener el total acumulado de dichas cantidades
Contadores, acumuladores e interruptores
total acumulado de dichas cantidades
Los acumuladores tienen la siguiente forma:
total = total operador valor_variable
El operador es un símbolo algebraico tales como:
+, -, *, /, mod, div
Contadores, acumuladores e interruptores
Es importante tener en cuenta las siguientes reglas:
a)En aquellos casos en los que se pretende obtener el total como suma de distintas cantidades, es
necesario que el acumulador sea inicializado en cualquier valor positivo, negativo o cero.
b) En aquellos casos en los que se pretende obtener el total como producto de distintas cantidades, es necesario que el acumulador sea inicializado en un valor distinto de cero.
Contadores, acumuladores e interruptores
Interruptor o conmutador:
Un conmutador (o interruptor) es una variable que sólo puede tomar dos valores. Pueden ser, por tanto, de
tipo booleano, aunque también pueden usarse variables enteras o de tipo carácter.
variables enteras o de tipo carácter.
La variable conmutador recibirá uno de los dos valores posibles antes de entrar en el ciclo. Dentro del cuerpo del ciclo, debe cambiarse ese valor bajo ciertas
condiciones.
band = true Primero se debe inicializar
Los interruptores tienen la siguiente forma:
Contadores, acumuladores e interruptores
Mientras condición Inicia un ciclo, mientras se cumpla la condición
Si alguna condición se hace cierta band = false
Debe existir una condición que cambie el valor del interruptor
Si band = true
Acciones a realizar
Cambiar el valor inicial del interruptor
Validar la condición para la que fue creado el nterruptor Pasos a realizar si se cumple la condición
Mientras condición
Fin mientras
Inicia un ciclo, mientras se cumpla la condición
Contadores, acumuladores e interruptores
Variables Auxiliares: es aquella que realiza
cálculos auxiliares. No se define como entrada sino que realiza cálculos o almacena valores intermedios Ejemplo:
Ejemplo:
precio =100 iva = 0.12
impuesto = precio * 0.12 total = precio + impuesto
Impuesto es una variable auxiliar para realizar el calculo del valor gravable
Es importante tener en cuenta las siguientes reglas:
a) Los interruptores o banderas tienen dos valores
Contadores, acumuladores e interruptores
a) Los interruptores o banderas tienen dos valores true o false
b)Cuando utilizamos banderas debemos inicializarla en cualquiera de los dos valores posibles
c) Al interpretar el valor final de la bandera se debe tomar en cuenta que significa true y que false
Representación de los algoritmos
Los Algoritmos se pueden representar cómo:
1.Pseudocódigos
2. Organigramas (Diagramas de Flujo)
Pseudocódigos
El pseudocódigo es una manera genérica de
describir un algoritmo usando las convenciones de los lenguajes de programación
Aunque no existen reglas para la escritura del
pseudocódigo en español, se propone una notación estándar que es empleada en muchos libros de
programación
Pseudocódigos
Las palabras reservadas se presentan a continuación:
Inicio
Indica el inicio del programa o algoritmo Fin
Indica el final del programa o algoritmo
De manera que el formato general de un Algoritmo es Inicio, la codificación y al finalizar la misma la palabra Fin. Debe numerar las sentencias.
Pseudocódigos
Declaraciones
Antes de usar las variables debe indicar su nombre, tipo de dato y valor inicial (si aplica) antes de usarla en las sentencias del algoritmo.
El formato de declaración es el siguiente:
Tipo_dato variable_1 [= valor_inicial], varale_2….
Ejemplo:
Entero cont=0, x,y,z=1 Real saldo=0
Pseudocódigos
Leer
Sirve para introducir las entradas al algoritmo, las variables a leer pueden estar separadas por comas.
Leer (variable_1), (variable_2),…, (variable_n);
Leer (variable_1), (variable_2),…, (variable_n);
Escribir
Lista de expresiones que desea mostrar, para varias expresiones deben ir separadas por comas
Escribir(expresion_1), (expresion_2),.,(expresion_n);
Pseudocódigos
Asignación
Para asignar un valor a una variable, se utiliza el símbolo (=)
Variable = expresión
Ejercicio:
Escriba un programa en pseudocódigo que lea dos número y muestre la suma de ambos
Pseudocódigos
Ejemplo:
Calcular el sueldo de un trabajador conociendo el número de horas trabajadas, la tarifa horaria y la tasa de impuesto
(descuentos). La paga del trabajador consiste en la paga bruta menos los descuentos.
Inicio
1. Real Horas, Tarifa, tasa, PagaBruta, Impuesto, PagaNeta
2. Leer Horas, Tarifa, tasa
3. PagaBruta <- Horas * Tarifas 4. Impuesto <- PagaBruta * Tasa
5. PagaNeta <- PagaBruta - Impuestos 6. Escribir PagaNeta
Fin
Pseudocódigos
Si (expresion) entonces
acciones_si_expresion_es_verdadero Condicionales simples
Indica las acciones que debe realizar el
programa dependiendo de una (s) condición (es)
acciones_si_expresion_es_verdadero Sino
acciones_si_expresion_es_falso FinSi
Si expresión es verdadera se ejecuta lo que está dentro del Si y el Sino, si es falso, se ejecutan las instrucciones que están entre el Sino y el FinSi. El bloque Sino es opcional
Pseudocódigos
Operadores Relacionales
Operador Significado
= Igual
> Mayor
> Mayor
< Menor
>= Mayor o Igual
<= Menor o igual
<> Diferente
Pseudocódigos
Operadores Lógicos
Operador Significado
AND Operador Y
OR Operador O
NOT Operador NO
Pseudocódigos
Operadores Aritméticos
Operador Significado
+ Suma
- Resta
- Resta
/ División
* Multiplicación
MOD Módulo
DIV División entera
^ Exponenciación
Funciones
SQRT(X) Raíz cuadrada de X ABS(X) Valor absoluto de X
LN(X) Logaritmo natural de X RAND() Número aleatorio
EXP(X) Función exponencial de X
SEN(X) Seno de X
SEN(X) Seno de X
COS(X) Coseno de X
TAN(X) Tangente de X
ASEN(X) Arcoseno de X ACOS(X) Arcocoseno de X ATAN(X) Arcotangente de X TRUNC(X) Parte entera de X
REDON(X) Entero mas cercano de X
Pseudocódigos
• Se pueden introducir comentarios luego de una
instrucción, o en líneas separadas, mediante el uso de la doble barra ( // ). Todo lo que precede a //, hasta el fin de la línea, no será tomado en cuenta al interpretar
Algunas consideraciones a tomar en cuenta
fin de la línea, no será tomado en cuenta al interpretar el algoritmo.
• Note que no puede haber instrucciones fuera del programa, aunque si comentarios.
• Las estructuras no secuenciales pueden anidarse. Es decir, pueden contener otras adentro, pero la
estructura contenida debe comenzar y finalizar dentro de la contenedora.
Pseudocódigos
• Los identificadores, o nombres de variables, deben constar sólo de letras y números,
comenzando siempre con una letra.
• Las constantes de tipo carácter se escriben entre
• Las constantes de tipo carácter se escriben entre comillas ( " ).
• En las constantes numéricas, el punto ( . ) es el separador decimal.
• Las constantes lógicas son Verdadero y Falso.
Algoritmos
Corrida en frío: Prueba manual de la correctitud del programa
Ejemplo: Dado dos valores x y y calcular la ecuación x2 + y2/(x-y)2
Inicio
1. Real x, y, resultado
2. Escribir 'Introduzca valores enteros de X e Y' 3. Leer (x, y)
4. Si (x=y) entonces
5. Escribir ('Division por cero‘) 6. Sino
7. resultado =(x*x + y*y)/(x-y)* (x-y) 8. Escribir ('El Resultado es:', resultado) 9. FinSi
Fin
Algoritmos
Corrido en frío
X Y x^2 y^2 (x-y)^2 resultado
2 4 4 16 4 8
3 1 9 1 4 9.25
0 1 0 1 1 0
3 3 9 9 0 “División por cero”
Pseudocódigo
Ejercicio
Escriba un programa en pseudocódigo que lea dos número e indique cual es el mayor de ellos
Escriba un programa en pseudocódigo que lea tres número e indique cual es el mayor de ellos
Pseudocódigo
Mientras
La estructura mientras ejecuta un ciclo mientras la expresión condicional sea verdadera.
Mientras expresion_condicional Hacer sentencia_1
sentencia_2 .
.
sentencia_n FinMientras
Pseudocódigo
Ejercicio
Escriba un programa en pseudocódigo que lea 10 números por teclado y realice la suma de ellos
Pseudocódigo
Ejercicio
Escriba un programa en pseudocódigo que lea
números por teclado y los vaya acumulando hasta que la suma sea igual a 100
que la suma sea igual a 100
Pseudocódigos
Para
La estructura para realiza un ciclo, desde un valor inicial numérico hasta un valor final, el valor se irá incrementando según el paso. El paso es opcional, por defecto es 1
Para variable_numerica<-valor_inicial Hasta valor_final Con Paso paso Hacer
sentencia_1 sentencia_2 .
.
sentencia_n FinPara
Pseudocódigo
Ejercicio
Escriba un programa en pseudocódigo que lea dos números por teclado y realice el producto de
ambos utilizando el método de sumas sucesivas ambos utilizando el método de sumas sucesivas
Detección de errores
Para d<-1 Hasta 10 Hacer c<- c+d;
FinPara
Escribir 5*/4; Escribir 5/4;
Para d<-1 ;
c=c+d;
Fin Para
1.
2.
Si a<- 1
Escribir 'si';
sino
Escribir 'no' FinSi
b<-c+'2'; b<-c+2;
Si a=1 entonces Escribir 'si';
sino
Escribir 'no;
FinSi
3.
4.
Detección de errores
Escribir a*(2+(5/6); Escribir a*(2+(5/6));
Escribir 'Texto; Escribir 'Texto';
5.
6.
6.
Mientras m<-30 Escribir m;
m = m+3;
FinMientras
7.
Mientras m = 30 Escribir m;
m <- m+3;
FinMientras