Beruflich Dokumente
Kultur Dokumente
UNIVERSIDAD AUTONOMA
JUAN MISAEL SARACHO
Texto Guía
IAC-022
Docente: Ing. Salomón Benito
H.
INTRODUCCION
Estos apuntes servirán sin duda de apoyo no solo al docente de la materia sino que le ayudará
al estudiante a entender el propósito de la misma. En su labor cotidiana de enseñanza facilitará
también al dicente a desarrollar su capacidad analítica y creadora, para de esta manera mejorar su
destreza en la elaboración de algoritmos que servirán como base para la codificación en cualquier
lenguaje de programación. De manera particular en Quick Basic que tendrá que desarrollar
programas de aplicación matemática, física, química, estadística y otras aplicaciones más específicas
como son los procesos químicos y control automático en pozos petroleros.
OBJETIVO EDUCACIONAL:
Conocer la terminología relacionada con los algoritmos; así como la importancia de aplicar
técnicas adecuadas de programación.
1.1 Introducción
El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una
metodología que nos enseñe de manera gradual, la forma de llegar a estas soluciones.
A las soluciones creadas por computadora se les conoce como programas y no son más que una
serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos
específicos. Para poder realizar programas, además de conocer la metodología mencionada,
también debemos de conocer, de manera específica las funciones que pueden realizar la
computadora y las formas en que se pueden manejar los elementos que hay en la misma.
Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos (información) en
la computadora para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en
la memoria central o interna. Ejemplos: teclado, scanners (digitalizadores de rastreo), mouse (ratón),
trackball (bola de ratón estacionario), joystick (palancas de juego), lápiz óptico.
Dispositivos de Salida: Regresan los datos procesados que sirven de información al usuario.
Ejemplo: monitor, impresora.
Unidad Aritmético - Lógica: Realiza operaciones aritméticas y lógicas, tales como suma, resta,
multiplicación, división y comparaciones.
La memoria ROM (Read Only Memory): Es una memoria estática que no puede cambiar, la
computadora puede leer los datos almacenados en la memoria ROM, pero no se pueden introducir
datos en ella, o cambiar los datos que ahí se encuentran; por lo que se dice que esta memoria es de
solo lectura. Los datos de la memoria ROM están grabados en forma permanente y son introducidos
por el fabricante de la computadora.
Memoria Auxiliar (Externa): Es donde se almacenan todos los programas o datos que el usuario
desee. Los dispositivos de almacenamiento o memorias auxiliares (externas o secundarias) más
comúnmente utilizados son: cintas magnéticas y discos magnéticos.
Lenguaje: Es una serie de símbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos
entidades diferentes. A la transmisión de mensajes se le conoce comúnmente como comunicación.
La comunicación es un proceso complejo que requiere una serie de reglas simples, pero
indispensables para poderse llevar a cabo. Las dos principales son las siguientes:
Las relaciones humanas se llevan a cabo a través del lenguaje. Un lenguaje permite la
expresión de ideas y de razonamientos, y sin ella la comunicación sería imposible. Los ordenadores
sólo aceptan y comprenden un lenguaje de bajo nivel, que consiste en largas secuencias de ceros y
unos. Estas secuencias son ininteligibles para muchas personas, y además son específicas para cada
ordenador, constituyendo el denominado lenguaje de máquina.
El más general es un conjunto de símbolos, caracteres y reglas (programas) que les permiten a las
personas comunicarse con la computadora.
Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar
operaciones de entrada/salida, cálculo, manipulación de textos, lógica/comparación y
almacenamiento/recuperación.
Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por la
computadora y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el
programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria
mas pequeña el bit (dígito binario 0 o 1).
Los lenguajes de medio nivel tienen algunas de las características de los lenguaje de bajo
nivel( posibilidad de acceso directo a posiciones de memoria, indicaciones para que ciertas variables
se almacenen en los registros del microprocesador, etc…) añadidas a las posibilidades de manejo de
estructuras de control y de datos de los lenguajes de alto nivel.
Lenguaje de Alto Nivel: Los lenguajes de programación de alto nivel (BASIC, pascal, cobol,
fortran, Java, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son
escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la
escritura y comprensión del programa.
Lenguajes declarativos Son lenguajes de muy alto nivel cuya notación es muy próxima al
problema real del algoritmo que resuelven. Hay dos tipos de lenguajes declarativos:
lenguajes lógicos y lenguajes funcionales
Los lenguajes funcionales tienen todas sus construcciones como llamada a funciones
matemáticas. Es decir no hay instrucciones, todo el programa es una función y todas las
operaciones se realizan por composición de funciones más simples. En la ejecución de los
programas funcionales se aplica la función a los datos de entrada (que son los argumentos de
la función) y se obtiene el resultado (el valor calculado por la función). Ejemplo Hope,
Haskell entre otros.
Los lenguajes lógicos definen sus instrucciones siguiendo un tipo de lógica. El lenguaje de
programación lógica más utilizado es el PROLOG, que utiliza la lógica clausal. La
programación lógica maneja relaciones (predicados) entre objetos (datos). Las relaciones se
especifican con reglas y hechos.
Lenguajes orientados a objetos Actualmente existen más de 2000 lenguajes de alto nivel
diferentes, de los cuales alrededor de un centenar son lenguajes orientados a objetos o
lenguajes basados en objetos si soporta directamente tipos abstractos de datos y clases,
además añade mecanismos para soportar la herencia y el polimorfismo. Ejemplo C++, Turbo
pascal, Delphi, Java, etc
La segunda generación comienza con el desarrollo del primer compilador de FORTRAM en el año
1958 hasta mediados de los años 60 con la normalización por el American National Standard
Institute (ANSI) de los lenguajes de programación. Se caracteriza con la asignación de memoria en
tiempo de compilación. FORTRAM Y COBOL.
La cuarta generación está caracterizada por lenguajes de muy alto nivel dedicadas a tareas
especificas. Una gran parte de ellos están dedicados a la gestión de base de datos y a la generación
de aplicaciones con herramientas CASE, corresponde a mediados de los años 70 hasta finales de los
80. Ejemplos SQL, DB2, DBASE, etc.
La quinta generación está asociada a los lenguajes ligados a la inteligencia artificial. Ejemplo
Prolog, Haskell, Miranda, etc.
Generación Internet Comienza a mediados de los años noventa, ligado a la gran explosión de
internet y a la necesidad de manejar aplicaciones en distintas plataformas dentro de toda la red. El
lenguaje más característico es Java dentro de esta generación esta XML, HTML,VRML y otros.
Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del
proceso.
Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un
proceso.
No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo
(pseudocodigo).
Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es
importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca
del todo no tiene mucho caso continuar con la siguiente etapa. En esta etapa con frecuencia es útil
hacer un dibujo.
Identifique las constantes que tal vez requiera en el cálculo, como la constante de los gases ideales y
la aceleración de la gravedad y todas las fórmulas que se necesita para procesar los datos.
Si es apropiado, en un dibujo escriba los valores que haya identificado o agrúpelos en una tabla.
Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la
definición del problema.
1.10 Codificación
La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la
solución, por ello se debe considerar con el mismo interés y entusiasmo.
Al probar una solución se debe considerar los siguientes aspectos:
¿ Sus resultados tienen sentido físico?
¿Coinciden con los cálculos de la muestra?
¿La respuesta es la que se pedía en realidad?
Las gráficas con frecuencia son formas útiles de verificar que los cálculos son razonables.
1.12 Documentación
A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación
sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones
(mantenimiento).
Documentación Interna
Documentación Externa
Manual del Usuario
Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer
más claro el entendimiento de un proceso.
Manual del Usuario: Describe paso a paso la manera cómo funciona el programa, con el fin de que
el usuario obtenga el resultado deseado.
1.13 Mantenimiento
Se lleva a cabo después de terminado el programa, cuando se detecta que es necesario hacer
algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta.
Para poder realizar este trabajo se requiere que el programa este correctamente documentado.
OBJETIVO EDUCACIONAL:
Conocer las reglas para cambiar formulas matemáticas a expresiones validas para la
computadora, además de diferenciar constantes e identificadores y tipos de datos simples.
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal
como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de
valores que puede tomar una variable.
Numéricos
Simples Lógicos
Alfanuméricos (string)
Tipos de
datos Arreglos (Vectores, Matrices)
Estructurados Registros
(Def. por el Archivos
Usuario) Apuntadores
Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los
números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.
Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que
representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos).
Ejemplo:
2.2 Expresiones
Cada expresión toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecución de las operaciones indicadas.
Una expresión consta de operadores y operandos. Según sea el tipo de datos que manipulan,
se clasifican las expresiones en:
- Aritméticas
- Relaciónales
- Lógicas
Operadores: Son elementos que relacionan de forma diferente, los valores de una o mas
variables y/o constantes. Es decir, los operadores nos permiten manipular valores.
Aritméticos
Tipos de Operadores Relaciónales
Lógicos
Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si
ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.
Valor
(constante o variable)
Operadores Aritméticos:
+ Suma
- Resta
* Multiplicación
/ División
Mod Modulo (residuo de la división entera)
Ejemplos:
Expresión Resultado
7/2 3.5
Mod(12,7) 5
4 +2*5 14
Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados
se evalúan de dentro a fuera, el paréntesis más interno se evalúa primero.
1.- ^ Exponenciación
2.- *, /, mod Multiplicación, división, modulo.
3.- +, - Suma y resta.
Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a
derecha.
El operador DIV, división entera, devuelve el entero más próximo por defecto que resulta de dividir
un numero a entre otro b. El operador MOD devuelve el resto de la división entera de a entre b
El orden de precedencia de los operadores, que depende del lenguaje de programación, indica en que
orden se realizan las operaciones. Sin embargo, cuando se desee forzar la evaluación de una
expresión en un determinado orden, independientemente del orden de precedencia de los
operadores, se utilizaran los paréntesis.
Las operaciones encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis
anidados las expresiones internas se evalúan antes. Si coinciden varios operadores de igual
prioridad, el orden a seguir es de izquierda a derecha.
Ejemplos:
4 + 2 * 5 = 14
23 * 2 / 5 = 9.2 46 / 5 = 9.2
3 + 5 * (10 - (2 + 4)) = 23
3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23
3.5 + 5.09 - 14.0 / 40 = 5.09
3.5 + 5.09 - 3.5 = 8.59 - 3.5 = 5.09
2.1 * (1.5 + 3.0 * 4.1) = 28.98
2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98
Operadores Relaciónales:
Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad
(verdadero o falso).
Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas) y tienen el
mismo nivel de prioridad en su evaluación. Los operadores relaciónales tiene menor prioridad que
los aritméticos.
Operadores Relaciónales:
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
~= Diferente o no igual a ( =, <> )
== Igual a
Ejemplos:
Si a = 10 b = 20 c = 30
a+b>c Falso
a-b<c Verdadero
a-b=c Falso
a*b<>c Verdadero
Ejemplos no lógicos:
a<b<c
10 < 20 < 30
T < 30 (no es lógico porque tiene diferentes operandos)
Operadores Lógicos:
Operadores Lógicos
And &
Or |
Not ~
Operador And
Operando1 Operador Operando2 Resultado
T AND T T
T F F
F T F
F F F
Operador Or
Operador Not
Operando Resultado
T F
F T
Ejemplos:
Ejemplos:
a = 10 b = 12 c = 13 d = 10
2.4 Identificadores
Ejemplo: Nombre
Num_hrs
Calif2
Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener espacios en
blanco.
Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del primer carácter.
Constante: Una constante es un elemento del algoritmo de tipo numérico o alfanumérico que no
cambia durante la ejecución del programa.
Ejemplo:
Pi = 3.1416
Las variables aparecen en cualquier forma y tamaño. Ésta es una lista común de variables:
Después de la primera letra en el nombre de la variable, podrá ser letras, números o subrayados (
_ ).
El carácter final puede ser %, &, !, #; $ o nada. Los usuarios de Vbasic deberían utilizar un
carácter propio como letra final y no dejarlo sin nada.
Recuerda que el nombre de la variable no puede ser una palabra reservada. Por ejemplo en
MatLab hay una sentencia llamada "fprintf", no debes usar esta ni cualquier otra sentencia como
nombre de variable.
Ejemplo:
area = pi * radio ^ 2
En esta declaración se dice que la variable numero es de tipo entero y toma el valor 10 y la variable
texto es de tipo cadena de caracteres y no tiene ningún valor asociado inicialmente.
Numéricas
Por su Contenido Lógicas
Alfanuméricas (String)
Variables
De Trabajo
Por su Uso Contadores
Acumuladores
Por su Contenido:
Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o
negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal. Ejemplo:
Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos
representan el resultado de una comparación entre otros datos.
Por su Uso
Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa
y que se usan normalmente dentro de un programa. Ejemplo:
Suma = a+b/c
Contadores: Se utilizan para llevar el control del número de ocasiones en que se realiza una
operación o se cumple una condición. Con los incrementos generalmente de uno en uno.
Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una
serie de valores que se van leyendo o calculando progresivamente.
2.5 Cadenas
Hablaremos de las cadenas mas después, por ahora sólo haremos una breve descripción.
Una cadena es una forma de guardar información en la variable. Por ejemplo podrías guardar el
nombre del usuario o la dirección en una cadena. Aquí tienes un pequeño código como ejemplo para
mostrarte cómo funciona:
CLS
nombre=input(‘Tu Nombre:’);
edad=input(‘Tu Edad:’);
OBJETIVO EDUCACIONAL:
Será capaz de diferenciar los métodos de representación y formulación de algoritmos, así como
de conocer las características más importantes de cada técnica.
Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en
la computadora), se relacionan entre si mediante líneas que indican el orden en que se deben ejecutar
los procesos.
SÍMBOLO DESCRIPCIÓN
Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a
derecha.
Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas
palabras.
Es un importante paso intermedio entre el planteamiento original del problema y las instrucciones
escritas en lenguaje de programación.
Sirve de guía al codificar el programa, ofreciendo una idea clara de la secuencia correcta de
operaciones y de la lógica de la solución.
Permite experimentar diferentes enfoques para resolver un problema sin codificarlos, y así
determinar el posible enfoque óptimo.
3.2 Seudocódigo
Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a
un problema determinado. El pseudocódigo utiliza palabras que indican el proceso a realizar.
Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.
Su estructura típica es la siguiente:
Ejemplo: Algoritmo para el cálculo de la superficie de un triangulo tomando como datos su base y
su altura.
ALGORITMO: Superficie_triángulo
ENTRADA: la base y la altura del triangulo.
SALIDA: su superficie.
VARIABLES: base, altura, superficie: reales.
INICIO
Ejemplo de aplicación
Albert Einstein es con toda seguridad el fisco más famoso del siglo XX. Einstein nació en
Alemania en 1879 y asistió a la escuela tanto en Alemania como en Suiza. Mientras trabajaba en
una oficina de patentes en Berna desarrollo su famosa teoría de la relatividad. Acaso la ecuación
física mejor conocida en la actualidad es su:
E = mc2
Esta ecuación sorprendentemente sencilla vincula los mundos antes separados de la materia y
la energía, y se puede utilizar para encontrar la cantidad de energía que se libera conforme la materia
se destruye en reacciones nucleares tanto naturales como inducidas por el hombre.
El sol irradia 385 x 1024 J/s de energía, los cuales se generan mediante reacciones nucleares
que convierten la materia en energía. Desarrolle un algoritmo utilizando la ecuación de Einstein para
determinar cuánta materia se debe convertir en energía para producir esa cantidad de radiación en un
día.
1. Plantee el problema.
Encontrar la cantidad de materia que se necesita para producir la cantidad de energía
que irradia el sol cada día.
2. Describa la entrada y salida
Entrada
Energía E = 385 x 1024 J/s, que se debe convertir en la energía total irradiada
durante un día.
Rapidez de la luz c = 3.0 x 108 m/s
Salida
Masa m en Kg
3. Desarrolle una prueba de escritorio
La energía irradiada en un día es
385 x 1024 J/s x 3600 s/hora x 24 horas/día x 1 día = 3.33 x 1031 J
La ecuación E = mc2 se debe resolver para m y sustituir los valores de E y c. Se tiene
m = E/c2
m = 3.33 x1031 J/(3.0 x 108 m/s)2 = 3.7 x 1014 J/m2/s2
A partir de los criterios de salida se puede ver que se desea la masa en Kg, así que, ¿qué
fue lo que estuvo mal?. Se necesita hacer una conversión de unidades adicionales
1J = 1 Kg m2/s2
m = 3.7 x 1014 Kgm2/s2/m2/s2 = 3.7 x 1014 Kg
Probando la solución
Tiene sentido los valores calculados o los números? Cualquier cosa multiplicada por 1014 es
un número realmente grande. Sin embargo, considere que la masa del sol es 2 x 1030 Kg. Se podría
calcular cuánto tiempo tomará consumir por completo la masa del sol a una tasa de 3.7 x 1014
Kg/dia.
Tiempo =(masa del sol)/ (tasa de consumo)
Tiempo = 2 x 1030 Kg/3.7 x1014 Kg/día x año/365 días = 1.5 x 1013 años
Este es 15 billones de años. En lo que resta de vida, no necesitará preocuparse de que el sol
se quede sin materia que pueda convertirse en energía.
ALGORITMO: Materia_a_Energia
ENTRADA: Energía y rapidez de la luz.
SALIDA: materia conv. en energía en Kg
VARIABLES: energía, rap_luz, masa: Reales.
INICIO
ESCRIBIR ‘Introduzca la cantidad de energía irradiada por el sol:’
LEER energia
ESCRIBIR ‘Introduzca rapidez del sol:’
LEER rap_luz
energia 385 x 1024 J/s x 3600 s/hora x 24 horas/día x 1 día = 3.33 x 1031 J
J = 1 Kg m2/s2
masa = energia *J
Ejemplo:
Inicio
Leer
Nombre, Hrs, Precio
Calcular
Salario = Hrs * Precio
Calcular
Imp = Salario* 0.15
Calcular
Neto = Salario + Imp
Escribir Nombre, Imp, SNeto
Fin
OBJETIVO EDUCACIONAL:
Conocer las diferentes estructuras algorítmicas como componentes básicos de los programas
y aplicar la combinación de ellas para el desarrollo de algoritmos más complejos.
Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten,
mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la
solución de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:
- Asignación
Secuenciales - Entrada
- Salida
- Simples
Estructuras Condicionales
Algoritmicas - Múltiples
- Hacer para
Cíclicas -Hacer mientras
- Repetir hasta
Contador: Consiste en usarla como un verificador del número de veces que se realiza un
proceso (a = a+1)
De trabajo: Donde puede recibir el resultado de una operación matemática que involucre
muchas variables (a = c + b*2/4).
Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor.
Esta operación se representa en un pseudocódigo como sigue:
Leer a, b
Donde “a” y “b” son las variables que recibirán los valores
Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado
o mensaje. Este proceso se representa en un pseudocódigo como sigue:
Donde “El resultado es:” un mensaje que se desea que aparezca y R es una variable que contiene un
valor.
Los diagramas de flujo solo o combinados con seudocódigo son especialmente apropiados para
tareas de programación más complicadas. Puede crear un gran cuadro de su programa gráficamente
y luego convertir su proyecto a seudocódigo adecuado para ingresar en el programa como
comentarios.
La figura siguiente es un ejemplo de un diagrama de flujo para el problema mph a pies/s. Para un
problema así de simple, probablemente en realidad nunca crearía un diagrama de flujo. Sin
embargo, conforme los problemas se vuelven más complicados, los diagramas de flujo se convierten
en una herramienta invaluable que le permite organizar sus pensamientos.
Recuerde: tanto los diagramas de flujo como el seudocódigo son herramientas que tienen la
intención de ayudarle a crear programas de cómputo, dado que enfatizan la progresión lógica de
ideas sobre los detalles de programación.
1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuánto dinero
ganará después de un mes si el banco paga a razón de 2% mensual.
INICIO
ESCRIBIR (‘Introduce el capital a invertir’)
LEER (cap_inv)
ESCRIBIR (‘Introduzca para cuantos meses será depositado’)
LEER(tiempo)
Gan=cap_inv*2/100*tiempo
ESCRIBIR (‘La ganancia en Bs’)
IMPRIMIR gan
FIN
Pulse
Pulse elel
botón
botón Para
Para
ejecutar
ejecutar oo F5
F5
2) Un vendedor recibe un sueldo base más un 10% extra por comisión de sus ventas, el vendedor
desea saber cuánto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en
el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones.
ALGORITMO: Venta_comision
ENTRADA: sueldoBase, venta1, vena2, venta3
SALIDA: Total pago.
VARIABLES: sueldoBase, venta1, vena2, venta3, tot_venta, comis, totpago.
Inicio
Escribir “Introduzca por teclado: sueldo base, venta1, venta2, venta3”
Leer sueldoBase, venta1, venta2, venta3
tot_venta = venta1 + venta2 + venta3
comis = tot_venta * 0.10
totpago = sueldoBase + com
Escribir “Total pago realizado em Bs es:”
Imprimir totpago, comis
Fin
Pulse
Pulse elel
botón
botón para
para
ejecutar
ejecutar oo F5
F5
3) Un alumno desea saber cuál será su calificación final en la materia de IAC022. Si dicha
calificación se compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.
30% del promedio de la calificación del examen final.
15% del promedio de la calificación del trabajo final.
ALGORITMO: Calificacion_final
ENTRADA: calif1, calif2, calif3, exa1, exa2, exa3, trab1, trab2
SALIDA: calificación final.
VARIABLES: calif1, calif2, calif3, exa1, exa2, exa3, trab1, trab2, nota_calif, nota_examen,
nota_traba, cal_final
Inicio
Leer calif1, calif2, calif3, exa1, exa2, exa3, trab1, trab2
nota_calif = (calif1 + calif2 + calif3)/3*0.55
nota_examen = (exa1+exa2+exa3)/3 * 0.30
nota_trab = (trab1+trab2)/2 * 0.15
cal_final = nota_calif + nota_examen + nota_trab
Imprimir cal_final
Fin
Pulse
Pulse elel
botón
botón Para
Para
ejecutar
ejecutar oo F5
F5
4) Un maestro desea saber qué porcentaje de hombres y que porcentaje de mujeres hay en un grupo
de estudiantes.
Inicio
Leer nh, nm
ta = nh + nm
ph = nh * 100 / ta
pm = nm * 100 / ta
Imprimir ph, pm
Fin
Inicio
Leer fnac, fact
edad = fact - fnac
Imprimir edad
Fin.
1) Dada una cantidad en bolivianos, obtener la equivalencia en dólares, asumiendo que la unidad
cambiaría es un dato conocido 6.97 Bs por cada dólar americano.
5. El dueño de una tienda compra un artículo a un precio determinado. Obtener el precio en que lo
debe vender para obtener una ganancia del 30%.
6. Todos los lunes, miércoles y viernes, una persona corre la misma ruta y cronometra los tiempos
obtenidos. Determinar el tiempo promedio que la persona tarda en recorrer la ruta en una semana
cualquiera.
7. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una
cantidad distinta. Obtener el porcentaje que cada quien invierte con respecto a la cantidad total
invertida.
Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en
base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe
mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se
necesite. Existen dos tipos básicos, las simples y las múltiples.
Simples: Las estructuras condicionales simples se les conoce como “Tomas de decisión”.
Estas tomas de decisión tienen la siguiente forma:
Si <condición> entonces
Acción(es)
Fin-si
Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas
posibles en función del cumplimiento o no de una determinada condición. Se representa de la
siguiente forma:
Si <condición> entonces
Acción(es)
si no
Acción(es)
Fin-si
Donde:
Múltiples: Las estructuras de comparación múltiples, son tomas de decisión especializada que
permiten comparar unos variables contras distintos posibles resultados, ejecutando para cada
caso una serie de instrucciones específicas. La forma común es la siguiente:
Si <condición> entonces
Acción(es)
si no
Si <condición> entonces
Acción(es)
si no .
. Varias condiciones
Forma General
Casos Variable
Op1: Acción(es)
Op2: Acción(es)
.
OpN: acción
Fin-casos
Ejemplo Algoritmo: dados dos números enteros imprime el mayor de los dos.
ALGORITMO: Mayor_de_dos
ENTRADA: dos números enteros.
SALIDA: el mayor de los dos.
VARIABLES: valor1, valor2: entero.
INICIO
ESCRIBIR ‘Introduce el prime valor’
LEER valor1
ESCRIBIR ‘Introduce el segundo valor’
LEER valor2
SI valor1 > valor2
ESCRIBIR ‘El mayor es’, valor1
SI NO
ESCRIBIR ‘El mayor es’, valor2
FIN_SI
FIN
Pulse
Pulse elel
botón
botón Para
Para
ejecutar
ejecutar oo F5
F5
En algunas ocasiones la selección es múltiple, por ejemplo imagínese que se quiere realizar un
algoritmo de modo que dado un número entero entre 1 y 3 produzca como salida su expresión en
caracteres (si introducimos 3 devuelve ‘tres’). Su solución requiere utilizar varios bloques SI
anidados (un SI dentro de otro y anidado por la sentencia SI NO). La solución al problema
propuesto podría ser la siguiente:
ALGORITMO: texto_numero
ENTRADA: un número entero entre 1 y 3
SALIDA: la expresión en caracteres del numero de entrada
VARIABLES: numero: entero
texto: cadena de caracteres
INICIO
ESCRIBIR ‘Introduce un número entre 1 y 3:’
LEER número
SI numero = 1
texto ’uno’
SI NO
SI numero = 2
texto ’dos’
SI NO
SI numero = 3
texto ’tres
SI NO
texto ’error’
FIN SI
FIN SI
FIN SI
ESCRIBIR ‘El numero’, numero, ’en texto es’, texto
FIN
Los meteorólogos estudian la atmósfera con la intensión de comprender y al final de cuentas predecir el clima. La
predicción del clima es un proceso complicado, incluso con los mejores datos. Los meteorólogos estudian química,
física, termodinámica y geografía, además de curso de especialización acerca de la atmósfera.
Una ecuación que usan los meteorólogos es la ecuación Clausius-Clapeyron, que, por lo general, se introduce en las
clases de química y se examina con má detalle en clases de termodinámica avanzada.
En meteorología, la ecuación Clausius-Clapeyron se emplea para determinar la relación entre presión de vapor de agua
de saturación y la temperatura atmosférica. La presión de vapor de agua de saturación se puede usar para calcular la
humedad relativa, un componente importante de la predicción del clima, cuando se conoce la verdadera presión parcial
del agua en el aire.
La ecuación Clausius-Clapeyron es
Donde:
P0=presión de vapor de saturación para el agua en mbar a temperatura T.
Calor latente de vaporización para el agua, 2.453 x 106 J/Kg
Constante de gas para el aire húmedo, 461 J/Kg, y
T = Temperatura en grados Kelvin (K)
Es raro que las temperaturas en la superficie de la tierra sean menores que -60 ºF o mayores que 120 ºF. Use la ecuación
de Clausius-Clapeyron para encontrar la opresión de vapor de saturación para temperaturas en este rango. Presente sus
resultados como una tabla de temperaturas Fahrenheit y presiones de vapor de saturación.
Problema:
Encontrar la presión de vapor de saturación a temperatura de -60ºF a 120ºF, con la ecuación de Clausius-Clapeyron.
Describa las entradas y salidas.
Entrada:
T= -60ºF a 120ºF
La temperatura se calculara a cada 10 grados.
Salida:
Presiones de vapor de saturación
La ecuación de Clausius-Clapeyron requiere que todas las variables tengan unidades consistentes. Esto significa que la
temperatura (T) necesita estar en grados Kelvin. Para cambiar grados Fahrenheit a Kelvin, se usa la ecuación de
conversión
Ahora se requiere resolver la ecuación de Calusius-Clapeyron para la presión de vapor de saturación p0. Se tiene
ALGORITMO: presiones_de_vapor_de_saturacion
ENTRADA: calor latente de vaporización y constante de gas para el aire húmedo, Temperatura
en grados fahrenhait
SALIDA: Temperatura en grados Kelvin y presiones de vapor de saturación (presión_satur) en
tabla
VARIABLES: TF,TK, Delta_H, R_air, presión_satur
Inicio
Leer TF, TK, Delta_H, R_air
TK=(TF+459.6)/1.8
presion_satur=6.11*exp((Delta_H/R_air)*(1/273-1./TK));
resultados=[TF',presion_satur']
Imprimir resultados
fin
Ahora realice un programa que los datos como calor latente de vaporización para el agua sea introducido por teclado así
como constante de gas para el aire húmedo para generalizar de vapor de condensación
1) Un hombre desea saber cuánto dinero se genera por concepto de intereses sobre la cantidad que
tiene en inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos
excedan a Bs 7 000, y en ese caso desea saber cuánto dinero tendrá finalmente en su cuenta.
ALGORITMO: Intereses_por_capital
ENTRADA: capital, porcentaje de interés
SALIDA: capital mas interes
VARIABLES: cap, p_interes, int, capf
Inicio
Leer p_int, cap
int = cap * p_int
si int > 7000 entonces
capf = cap + int
fin-si
Imprimir capf
fin
ALGORITMO: aprueba_reprueba
ENTRADA: calif1, calif2, calif3
SALIDA: texto: aprobado, reprobado
VARIABLES: calif1, calif2, calif3, prom tipo: real
Inicio
Leer calif1, calif2, calif3
prom = (calif1 + calif2 + calif3)/3
Si prom >= 51 entonces
Imprimir “alumno aprobado”
si no
Imprimir “alumno reprobado”
Fin-si
Fin
Si trabaja más de 40 horas se le paga Bs 16 por cada una de las primeras 40 horas y Bs 20
por cada hora extra.
ALGORITMO: salario_semanal
ENTRADA: horas trabajadas
SALIDA: salario semanal
VARIABLES: hora_trab, hora_ext, acumulado
Inicio
Leer hora_trab
Si hora_trab > 40 entonces
Hora_ext = hora_trab - 40
acumulado = hora_ext * 20 + 40 * 16
si no
acumulado = hora_trab * 16
Fin-si
Imprimir acumulado
Fin
INSTRUCCIONES if ANIDADAS
Ejemplo de solución de una ecuación de segundo grado codificado. Es de apreciar que los simbolos % antes de una frase
se utiliza para hacer comentario y cuando el programa ejecuta no muestra.
ALGORITMO: ecuación_segundo_grado
ENTRADA: coeficientes de la ecuación
SALIDA: las raíces de la ecuación real e imaginaria
VARIABLES: A, B, C, x1, x2: Real
Texto mensaje: cadena de caracteres
INICIO
ESCRIBIR (‘Introduzca el valor del coeficiente A de la ecuación:’)
LEER (A)
ESCRIBIR (‘Introduzca el valor del coeficiente B de la ecuación:’)
LEER (B)
ESCRIBIR (‘Introduzca el valor del coeficiente C de la ecuación:’)
LEER (C)
SI A == 0
X= - C/B
Escribir (‘La ecuación no es de segundo grado’)
Escribir (‘La solución es = ‘, X)
SI NO
SI B == 0
Z= -C/A
SI Z > 0
X1= sqrt(Z)
Imprimir (X1)
SI NO
X2 = sqrt(Z)*i
mostrar(X2)
FIN SI
SI NO
SI C == 0
X1=0
X2=-B/A
Imprimir (X1)
Imprimir (X2)
SI NO
Z=B^2-4AC
SI Z > 0
X1= (- B + sqrt(Z))/(2A)
X2= (-B – sqrt(Z))/(2A)
Imprimir(‘La solución de X1 = ‘,X1)
Imprimir(‘La solución de X2 =’,X2)
SI NO
X1= (- B + sqrt(abs(Z))*i)/(2A)
X2= (-B – sqrt(abs(Z))*i)/(2A)
Mostrar(X1), mostrar(X2)
FIN SI
FIN SI
if g < 50
count = count +1;
disp(g)
if b > g
b= 0;
end
end
Si anidamos varios niveles de instrucción if – else, puede ser difícil determinar cuáles
expresiones lógicas deben ser verdaderas ( o falsas) para ejecutar cada serie de instrucciones. En
estos casos es común utilizar la cláusula elseif para aclara la lógica del programa, como se ilustra
con la siguientes instrucciones.
1) Leer 2 números; si son iguales que los multiplique, si el primero es mayor que el segundo
que los reste y si no que los sume.
Inicio
Leer num1, num2
si num1 = num2 entonces
resul = num1 * num2
si no
si num1 > num2 entonces
resul = num1 - num2
si no
resul = num1 + num2
fin-si
fin-si
Inicio
Leer num1, num2, num3
Si (num1 > num2) entonces
aux = num1
si no
aux = num2
fin-si
si(aux>num3) entonces
mayor = aux
imprimir(‘El mayor es: ‘,mayor)
si no
mayor=num3
imprimir(‘El mayor es: ‘,mayor)
fin-si
3) Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras
trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se
consideran horas extras y que estas se pagan al doble de una hora normal cuando no exceden de
8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las horas
normales y el resto al triple.
Inicio
Leer ht, pph
Si ht < = 40 entonces
tp = ht * pph
si no
he = ht - 40
Si he < = 8 entonces
pe = he * pph * 2
si no
pd = 8 * pph * 2
pt = (he - 8) * pph * 3
pe = pd + pt
fin-si
tp = 40 * pph + pe
fin-si
Imprimir tp
fin
4) Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si este se le asigna
como un porcentaje de su salario mensual que depende de su antigüedad en la empresa de
acuerdo con la siguiente tabla:
Tiempo Utilidad
Inicio
Leer sm, antig
Si antig < 1 entonces
util = sm * 0.05
si no
Si (antig > = 1) and (antig < 2) entonces
util = sm * 0.07
si no
Si (antig > = 2) and (antig < 5) entonces
util = sm * 0.10
si no
Si (antig > = 5) and (antig < 10) entonces
util = sm * 0.15
si no
util = sm * 0.20
fin-si
fin-si
fin-si
fin-si
Imprimir util
fin.
5) El AFB en Bolivia requiere clasificar a las personas que se jubilaran en el año de 2000. Existen
tres tipos de jubilaciones: por edad, por antigüedad joven y por antigüedad adulta. Las personas
adscritas a la jubilación por edad deben tener 58 años o más y una antigüedad en su empleo de
menos de 25 años. Las personas adscritas a la jubilación por antigüedad joven deben tener menos
de 58 años y una antigüedad en su empleo de 25 años o más.
Las personas adscritas a la jubilación por antigüedad adulta deben tener 58 años o más y una
antigüedad en su empleo de 25 años o más. Determinar en qué tipo de jubilación, quedara adscrita
una persona.
Inicio
leer edad,ant
si edad >= 58 and ant < 25 entonces
imprimir “la jubilación es por edad”
si no
si edad >= 58 and ant > 25 entonces
imprimir “la jubilación es por edad adulta”
si no
si edad < 58 and ant > 25 entonces
imprimir “la jubilación es por antigüedad joven”
si no
imprimir “no tiene por qué jubilarse”
fin-si
fin-si
fin-si
fin
8. Un alumno desea saber cuál será su promedio general en las tres materias más difíciles que cursa
y cuál será el promedio que obtendrá en cada una de ellas. Además desea saber si estará
habilitado a alguna de las mesas.
cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en
función de algún dato dentro del programa).Los ciclos se clasifican en:
Ejemplo:
Introducir n números por teclado para seleccionar múltiplos de m números. Observe como se
introducen los números por teclado utilizando la instrucción for – end, luego if-end tmbien observe
el formato de salida de datos para adaptar a otras situaciones similares.
En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite hasta que la
variable de control llegue al límite superior.
Inicio
Sum=0
Leer Nom
Hacer para c = 1 a 7
Leer calif
Sum = sum + calif
Fin-para
prom = sum /7
Imprimir prom
Fin.
Inicio
Hacer para n = 1 a 10
Leer num
cubo = num * num * num
cuarta = cubo * num
Imprimir cubo, cuarta
Fin-para
Fin.
Inicio
Hacer para n = 1 a 10
Leer num
Si num > 0 entonces
Imprimir num
fin-si
Fin-para
Fin.
3) Leer 20 números e imprimir cuantos son positivos, cuantos negativos y cuantos neutros.
Inicio
cn = 0
cp = 0
cneg = 0
Hacer para x = 1 a 20
Leer num
Sin num = 0 entonces
cn = cn + 1
si no
Si num > 0 entonces
cp = cp + 1
si no
cneg = cneg + 1
Fin-si
Fin-si
Fin-para
Inicio
sum = 0
baja = 9999
Hacer para a = 1 a 40
Leer calif
sum = sum + calif
Si calif < baja entonces
baja = calif
fin-si
Fin-para
media = sum / 2
Imprimir media, baja
fin
Inicio
Hacer para h = 1 a 23
Hacer para m = 1 a 59
Hacer para s = 1 a 59
Imprimir h, m, s
Fin-para
Fin-para
Fin-para
fin.
Son aquellos en que el número de iteraciones no se conoce con exactitud, ya que esta dado
en función de un dato dentro del programa.
Hacer-Mientras: Esta es una estructura que repetirá un proceso durante “N” veces,
donde “N” puede ser fijo o variable. Para esto, la instrucción se vale de una condición
que es la que debe cumplirse para que se siga ejecutando. Cuando la condición ya no se
cumple, entonces ya no se ejecuta el proceso.
1) Una compañía de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la
semana. Su política de pagos es que un vendedor recibe un sueldo base, y un 10% extra por
comisiones de sus ventas. El gerente de su compañía desea saber cuánto dinero obtendrá en la
semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cuanto tomando
en cuenta su sueldo base y sus comisiones.
4) En una empresa se requiere calcular el salario semanal de cada uno de los n obreros que laboran
en ella. El salario se obtiene de la siguiente forma:
4) El Depto. de Seguridad Publica y Transito desea saber, de los n autos que entran a la ciudad de
Santa Cruz, cuantos entran con calcomanía de cada color. Conociendo el último dígito de la placa de
cada automóvil se puede determinar el color de la calcomanía utilizando la siguiente relación:
DÍGITO COLOR
1o2 amarilla
3o4 rosa
5o6 roja
7o8 verde
9o0 azul
6) Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de interés. Cuál será la
cantidad de dinero que esta persona tendrá al cabo de un año si la ganancia de cada mes es
reinvertida?.
10) En un supermercado un cajero captura los precios de los artículos que los clientes compran e
indica a cada cliente cual es el monto de lo que deben pagar. Al final del día le indica a su supervisor
cuanto fue lo que cobro en total a todos los clientes que pasaron por su caja.
11) Cinco miembros de un club contra la obesidad desean saber cuánto han bajado o subido de peso
desde la última vez que se reunieron. Para esto se debe realizar un ritual de pesaje en donde cada
uno se pesa en diez básculas distintas para así tener el promedio más exacto de su peso. Si existe
diferencia positiva entre este promedio de peso y el peso de la última vez que se reunieron, significa
que subieron de peso. Pero si la diferencia es negativa, significa que bajaron. Lo que el problema
requiere es que por cada persona se imprima un letrero que diga: “SUBIO” o “BAJO” y la cantidad
de kilos que subió o bajo de peso.
3) Se desea obtener el promedio de g grupos que están en un mismo año escolar; siendo que cada
grupo puede tener n alumnos que cada alumno puede llevar m materias y que en todas las materias
se promedian tres calificaciones para obtener el promedio de la materia. Lo que se desea desplegar
es el promedio de los grupos, el promedio de cada grupo y el promedio de cada alumno.
mientras que en el Hacer-Mientras puede ser que nunca llegue a entrar si la condición no se cumple
desde un principio. La forma de esta estructura es la siguiente:
1) En una tienda de descuento las personas que van a pagar el importe de su compra llegan a la caja
y sacan una bolita de color, que les dirá que descuento tendrán sobre el total de su compra.
Determinar la cantidad que pagara cada cliente desde que la tienda abre hasta que cierra. Se sabe que
si el color de la bolita es roja el cliente obtendrá un 40% de descuento; si es amarilla un 25% y si es
blanca no obtendrá descuento.
2) En un supermercado un ama de casa pone en su carrito los artículos que va tomando de los
estantes. La señora quiere asegurarse de que el cajero le cobre bien lo que ella ha comprado, por lo
que cada vez que toma un articulo anota su precio junto con la cantidad de artículos iguales que ha
tomado y determina cuánto dinero gastara en ese artículo; a esto le suma lo que ira gastando en los
demás artículos, hasta que decide que ya tomo todo lo que necesitaba. Ayúdale a esta señora a
obtener el total de sus compras.
3) un teatro otorga descuentos según la edad del cliente. Determinar la cantidad de dinero que el
teatro deja de percibir por cada una de las categorías. Tomar en cuenta que los niños menores de 5
años no pueden entrar al teatro y que existe un precio único en los asientos. Los descuentos se hacen
tomando en cuenta el siguiente cuadro:
Edad Descuento
Categoría 1 5 - 14 35 %
Categoría 2 15 - 19 25 %
Categoría 3 20 - 45 10 %
Categoría 4 46 - 65 25 %
Categoría 5 66 en adelante 35 %
2) Determinar la cantidad semanal de dinero que recibirá cada uno de los n obreros de una empresa.
Se sabe que cuando las horas que trabajo un obrero exceden de 40, el resto se convierte en horas
extras que se pagan al doble de una hora normal, cuando no exceden de 8; cuando las horas extras
exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al
triple.
3) En la Cámara de Diputados se levanta una encuesta con todos los integrantes con el fin de
determinar qué porcentaje de los n diputados está a favor del Tratado de Libre Comercio, que
porcentaje está en contra y que porcentaje se abstiene de opinar.
4) Una persona que va de compras a la tienda “Enano, S.A.”, decide llevar un control sobre lo que
va comprando, para saber la cantidad de dinero que tendrá que pagar al llegar a la caja. La tienda
tiene una promoción del 20% de descuento sobre aquellos artículos cuya etiqueta sea roja.
Determinar la cantidad de dinero que esta persona deberá pagar.
5) Un censador recopila ciertos datos aplicando encuestas para el último Censo Nacional de
Población y Vivienda. Desea obtener de todas las personas que alcance a encuestar en un día, que
porcentaje tiene estudios de primaria, secundaria, carrera técnica, estudios profesionales y estudios
de posgrado.
6) Un jefe de casilla desea determinar cuántas personas de cada una de las secciones que componen
su zona asisten el día de las votaciones. Las secciones son: norte, sur y centro. También desea
determinar cuál es la sección con mayor número de votantes.
9) El profesor de una materia desea conocer la cantidad de sus alumnos que no tienen derecho al
examen de nivelación.
Diseñe un algoritmo que lea las calificaciones obtenidas en las 5 unidades por cada uno de los 40
alumnos y escriba la cantidad de ellos que no tienen derecho al examen de nivelación.
10) Leer los 250,000 votos otorgados a los 3 candidatos a gobernador e imprimir el número del
candidato ganador y su cantidad de votos.
11) Suponga que tiene usted una tienda y desea registrar las ventas en su computadora. Diseñe un
algoritmo que lea por cada cliente, el monto total de su compra. Al final del día que escriba la
cantidad total de ventas y el número de clientes atendidos.
V. ARREGLOS
OBJETIVO EDUCACIONAL:
Utilizar los datos de tipo arreglo para plantear la solución de problemas que requieran de esta
estructura.
Arreglo: Un Arreglo es una estructura de datos que almacena bajo el mismo nombre (variable) a
una colección de datos del mismo tipo.
Tienen un mismo nombre de variable que representa a todos los elementos. Para hacer
referencia a esos elementos es necesario utilizar un índice que especifica el lugar que ocupa
cada elemento dentro del archivo.
Unidimensionales (Vectores)
Tipo de
Arreglos
Bidimensionales (Matrices)
6.1. Vectores
Es un arreglo de “N” elementos organizados en una dimensión donde “N” recibe el nombre
de longitud o tamaño del vector. Para hacer referencia a un elemento del vector se usa el nombre del
mismo, seguido del índice (entre corchetes), el cual indica una posición en particular del vector. Por
ejemplo:
Vec[x]
Donde:
Vec………… Nombre del arreglo
x…………… Numero de datos que constituyen el arreglo
Llenado de un Vector
Hacer para I = 1 a 10
Leer vec[I]
Fin-para
2) Llenar dos vectores A y B de 45 elementos cada uno, sumar el elemento uno del vector A con el
elemento uno del vector B y así sucesivamente hasta 45, almacenar el resultado en un vector C, e
imprimir el vector resultante.
4) Almacenar 500 números en un vector, elevar al cuadrado cada valor almacenado en el vector,
almacenar el resultado en otro vector. Imprimir el vector original y el vector resultante.
5) Almacenar 300 números en un vector, imprimir cuantos son ceros, cuántos son negativos,
cuantos positivos. Imprimir además la suma de los negativos y la suma de los positivos.
6) Almacenar 150 números en un vector, almacenarlos en otro vector en orden inverso al vector
original e imprimir el vector resultante.
7) Se tienen almacenados en la memoria dos vectores M y N de cien elementos cada uno. Hacer un
algoritmo que escriba la palabra “Iguales” si ambos vectores son iguales y “Diferentes” si no lo
son.
Serán iguales cuando en la misma posición de ambos vectores se tenga el mismo valor para
todos los elementos.
8) Se tiene el vector A con 100 elementos almacenados. Diseñe un algoritmo que escriba “SI” si el
vector esta ordenado ascendentemente o “NO” si el vector no está ordenado
9) Diseñe un algoritmo que lea un número cualquiera y lo busque en el vector X, el cual tiene
almacenados 80 elementos. Escribir la posición donde se encuentra almacenado el número en el
vector o el mensaje “NO” si no lo encuentra. Búsqueda secuencial.
10) Diseñe un algoritmo que lea dos vectores A y B de 20 elementos cada uno y multiplique el
primer elemento de A con el último elemento de B y luego el segundo elemento de A por el
diecinueveavo elemento de B y así sucesivamente hasta llegar al veinteavo elemento de A por el
primer elemento de B. El resultado de la multiplicación almacenarlo en un vector C.
11) Diseñe un algoritmo que almacene en un vector llamado FIB[100] los 100 primeros números de
la serie fibonacci.
6.2 Matriz
Para representar una matriz se necesita un nombre de matriz se necesita un nombre de matriz
acompañado de dos índices.
Mat [R,C]
Donde R indica el renglón y C indica la columna, donde se encuentra almacenado el dato.
Representación gráfica de una matriz
Mat [R,C] Fila o Renglon
[R] 1,1 1,2 1,3 1,4
2,1 2,2 2,3 2.4
3,1 3,2 3,3 3,4
4,1 4,2 4,3 4,4
Por renglones
Hacer para R = 1 a 5
Hacer para C = 1 a 5
Leer Mat [R,C]
Fin-para
Fin-para
Por columnas
Hacer para C = 1 a 5
Hacer para R = 1 a 5
Leer Mat [R,C]
Fin-para
Fin-para
Nota: Para hacer el llenado de una matriz se deben de usar dos variables para los índices y se
utilizan 2 ciclos uno para los renglones y otro para las columnas; a estos ciclos se les llama ciclos
anidados (un ciclo dentro de otro ciclo).
Problemas propuestos
1) Hacer un algoritmo que almacene números en una matriz de 5 * 6. Imprimir la suma de los
números almacenados en la matriz.
2) Hacer un algoritmo que llene una matriz de 10 * 10 y determine la posición [renglon, columna]
del número mayor almacenado en la matriz. Los números son diferentes.
3) Hacer un algoritmo que llene una matriz de 7 * 7. Calcular la suma de cada renglón y
almacenarla en un vector, la suma de cada columna y almacenarla en otro vector.
4) Hacer un algoritmo que llene una matriz de 20 * 20. Sumar las columnas e imprimir que
columna tuvo la máxima suma y la suma de esa columna.
5) Hacer un algoritmo que llene una matriz de 5 * 5 y que almacene la diagonal principal en un
vector. Imprimir el vector resultante.
6) Hacer un algoritmo que llene una matriz de 10 * 10 y que almacene en la diagonal principal
unos y en las demás posiciones ceros.
7) Hacer un algoritmo que llene una matriz de 6 * 8 y que almacene toda la matriz en un vector.
Imprimir el vector resultante.
8) Hacer un algoritmo que llene una matriz de 8 * 8, que almacene la suma de los renglones y la
suma de las columnas en un vector. Imprimir el vector resultante.
9) Hacer un algoritmo que llene una matriz de 5 * 6 y que imprima cuantos de los números
almacenados son ceros, cuántos son positivos y cuántos son negativos.
10) Diseñe un pseudocódigo que escriba el número de la hilera cuya suma sea mayor que las demás
hileras. Suponga que todas las hileras suman diferente cantidad.
11) El dueño de una cadena de tiendas de artículos deportivos desea controlar sus ventas por medio
de una computadora. Los datos de entrada son:
12) Se tiene almacenada la matriz M (50,5) la cuál contiene la información sobre las calificaciones
de la materia de IAC022. Diseñe un pseudocódigo que imprima:
C).- El (o los) numero (s) de control de lo(s) alumno(s) que haya (n) obtenido la máxima
calificación final.
OBJETIVO EDUCACIONAL:
Identificar y aplicara los datos de tipo cadena de caracteres (string) para la solución de
problemas de tipo administrativo.
Un subprograma realiza las mismas acciones que un programa, sin embargo, un subprograma
lo utiliza solamente un programa para un propósito especifico.
Funciones
Tipos de
Módulos
Procedimientos
Función: Una función en matemáticas, es una operación que toma un o mas valores (argumentos) y
devuelve un resultado (valor de la función para los argumentos dados). Por ejemplo:
F(X) = X / (1+X2)
Donde:
F ………….. Nombre de la función
X …………. Es el argumento (también conocido como parámetro formal)
Donde:
Función …………… Es la palabra clave que nos indica una definición de función.
Nombre_funcion ….. Es el identificador con el cual se reconoce a la función en el cuerpo del
algoritmo principal.
P1,p2,…,pn ……... Es el grupo de parámetros que define a la función.
Cuando definimos una función solo le indicamos al algoritmo que esta función existe, pero
una definición de función no implica la realización de las instrucciones que la constituyen. Para
hacer uso de una función, el algoritmo principal la debe llamar. Por ejemplo:
Función F(X)
Inicio
F = X /(1 + X^2)
Fin
Inicio
Imprimir “Este es el algoritmo principal”
Leer N
R = F(N) llamado de la función
Imprimir “El resultado de la función es:”,R
Fin
2) Diseñe un algoritmo que lea un número y mediante una función regrese el valor de 1 si el
numero es positivo y -1 si es negativo).
Ejemplo: Desarrollar un código QBASIC que pida el ingreso del nombre de una persona, su número
de documento y su dirección. Mostrar estos datos en pantalla
CLS
INPUT "Nombre: ", n$
Otro ejemplo:
CLS
LOCATE 2, 5
PRINT "cadena de texto inicia desde fila 2, columna 5"
LOCATE 10, 10
PRINT "fila 10 columna 10"
LOCATE 15, 20
PRINT "fila 15 y columna 20"
LOCATE 16, 30
PRINT "fila 16 y columna 30"
LOCATE 17, 40
PRINT " fila 17 y columna 40 "
LOCATE 19, 20
PRINT "La instruccion LOCATE ubica el"
LOCATE 20, 20
PRINT "comienzo de la salida del primer print"
LOCATE 21, 20
PRINT "desde la fila 2 y la columna 5."
Una de las razones por las que MatLab se ha convertido en una herramienta tan popular dentro de
las Ciencias e Ingeniería son:
Su capacidad de realizar operaciones con matrices de forma sencilla. Así podrán realizarse
operaciones con matrices (suma, resta, multiplicación, inversiones, etc) sin necesidad de
preocuparse por programar bucles que recorran los elementos de las matrices.
Ni siquiera es necesario definir las dimensiones de las matrices utilizadas. Además estas
dimensiones pueden alterarse si es necesario.
Presenta una gran facilidad de crear gráficos sencillos, e interfaces de usuario.
Existen un gran número de bibliotecas adicionales de funciones para facilitar el trabajo en
muchas áreas de ciencias e Ingeniería, denominadas toolboxes.
En definitiva MatLab se utiliza ampliamente en:
Cálculos numéricos
Desarrollo de algoritmos
Modelado, simulación y prueba de prototipos
Análisis de datos, exploración y visualización
Traficación de datos con fines científicos o de ingeniería
Desarrollo de aplicaciones que requieran de una interfaz gráfica de usuario (GUI, Graphical
User Interface)
En el ámbito académico y de investigación, es la herramienta estándar para los cursos introductorios
y avanzados de matemáticas, ingeniería e investigación. En la industria es la herramienta usada para
el análisis, investigación y desarrollo de nuevos procesos y productos tecnológicos.
Desde el punto de vista del control, MatLab se puede considerar un entorno matemático de
simulación que puede utilizarse para modelar y analizar sistemas.
La ventana de directorio actual lista todos los archivos en una carpeta de la computadora llamada
directorio actual. Cuando MatLab ingresa a archivos o guarda información, usa el directorio actual
a menos que se diga algo diferente. La ubicación por defecto del directorio actual varia con su
versión del software y con cómo se instalo.
La ventana Workspace constituye un entorno gráfico para ver las variables definidas en el espacio de
trabajo. Se activa con el comando view/Workspace. En la ventana de array editor se pueden
modificar los elementos de la matriz.
La ventana gráfica se lanza automáticamente cuando solicita una gráfica. Para crear una ventana
gráfica se usa el comando plot(x,y)
En MatLab un solo signo igual (=) se llama operador de asignación, este es diferente al de una
igualdad.
Orden de las operaciones: En todos los cálculos matemáticos es importante entender el orden en el
que se realizan las operaciones.
Primero realiza los cálculos adentro de paréntesis, desde el conjunto más interno hasta el más
externo
A continuación, realiza operaciones de exponenciación.
Luego realiza operaciones de multiplicación y división de izquierda a derecha.
Finalmente, realiza operaciones de suma y resta de izquierda a derecha.
Para entender mejor la importancia del orden de las operaciones, considere los cálculos que se
involucran al encontrar el área de un cilindro circular recto.
El área es la suma de las áreas de las dos bases circulares y el área de la superficie curva entre ellas,
Si la altura del cilindro es 10 cm y el radio es de 5 cm, se puede usar el siguiente código MatLab
para encontrar el área.
En este caso, MatLab realiza primero la exponenciación y eleva el radio a la segunda potencia.
Luego trabaja de izquierda a derecha y calcula el primer producto y luego el segundo producto.
Finalmente, suma los dos productos.
Variables: son secuencia de caracteres que se utiliza para almacenar datos. Sin embargo, a
diferencia de la mayoría de los lenguajes de programación no requiere de ningún tipo de
declaraciones de tipo de datos (entero, punto flotante, complejo, etc) ni de dimensionamiento.
Cuando MatLab encuentra una nueva variable, automáticamente crea la variable y reserva la
cantidad de localidades de memoria necesarias. Si la variable ya existía dentro del espacio de
trabajo actual, simplemente cambia el contenido.
Operadores
Las expresiones utilizan los operadores aritméticos comunes. Los operadores aritméticos son los
mismos que en cualquier lenguaje de programación y se sigue un orden de evaluación similar al que
se utiliza en los demás lenguajes de programación.
Funciones
MatLab proporciona un gran número de funciones matemáticas simples y avanzadas. La gran
mayoría de estas funciones acepta argumentos complejos. Las funciones más comunes, como sqrt y
sin son parte del núcleo del programa y están programadas en bajo nivel para hacerlas más eficientes
y no es posible acceder a su código. El resto de las funciones está programada en archivo M y su
código está disponible para revisiones o modificaciones.
Disp: Esta función permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero
sin imprimir su nombre. En realidad, disp. Siempre imprime vectores y o matrices. Las cadenas de
caracteres son un caso particular de vectores.
disp.(‘El programa ha terminado’);
Sentencia if.
El lenguaje incluye instrucciones estándar, tales como condicionales y bucles.
El if-elseif-else condicional tiene la forma general:
if condición (1)
instrucción (1)
elseif condición (2)
instrucción (2)
.
.
.
else
instrucción (n)
end
Existen también bifurcaciones múltiples, en la que pueden concatenarse tantas condiciones como se
desee, y que la forma:
if condicon1
Bloque1
elseif condicion2
Bloque2
elseif condicion3
Bloque3
else
Bloque4
end
Es de aclarar que el uso de else es opcional. Cuando no se cumplen las condiciones anteriores se
ejecuta esta opción.
Ejemplos:
nro=input(‘Ingrese un numero positivo’);
if mod(nro,2)==0
disp(‘es par’);
else
disp(‘es impar’);
end
Sentencias switch
Esta sentencia realiza la función análoga a un conjunto if …elseif concatenados. Su forma general
es:
Switch switch_expresion
case case_expresion
Bloque1
Case {case_expesion2, case_expresion3, case_expresion4, …},
Bloque2
……
otherwise,
Bloque3
end
Al principio se evalúa la switch_expresion, cuyo resultado debe ser un numero escalar o una
cadena de caracteres. Este resultado se compara con las case_expr, y e ejecuta el bloque de
sentencias que corresponda con este resultado. Si ninguno es igual a switch_expresion se
ejecutan las sentencias correspondientes a otherwise (que significa de otra manera). Es
posible poner varias case_expr dentro de llaves, como se ve arriba.
Ejemplo:
nro=input(‘Ingrese un numero positivo’)
switch nro
case 1, disp(‘Ud. Ingreso el numero 1’)
Sentencia for
MatLab permite dos tipos de bucles, un bucle for (comparable al bucle for de C) y un bucle while.
Un bucle for repite las instrucciones en el bucle mientras el índice toma los valores contenidos en un
vector fila dado. Por ejemplo, para calcular los seis primeros términos de la sucesión de Fibonacci
fi = fi-1 +fi-2, para i >=3, con fi = 0 y f2 = 1, uno puede usar las siguientes instrucciones:
f(1) = 0; f(2) = 1;
for i = [3 4 5 6]
f(i) = f(i-1) + f(i-2);
end
Note que se puede usar un punto y coma para separar varias instrucciones tecleadas en la misma
línea. Obsérvese también que podemos reemplazar la segunda instrucción por for i = 3:6, que es
equivalente.
for anidados:
for i=1:n
for j=1:m
sentencias
end
end
El bucle while se repite en tanto en cuanto la condición dada sea cierta. Por ejemplo, el siguiente
conjunto de instrucciones puede utilizarse como alternativa al conjunto anterior:
f(1) = 0; f(2) = 1; k = 3;
while k <=6
f(k) = f(k-1) + f(k-2); k = k+1;
end
Formatos de salida
2. La tasa de reacción química son proporcionales a una constante de tasa k que cambia con la
temperatura de acuerdo con la ecuación arrhenius
k = k0e-Q/RT
Para cierta reacción:
Q = 8000 cal/mol
R = 1.987 cal/mol ºK
K0 = 1200 min-1
Encuentre los valores de k para temperaturas desde 100k hasta 500 k, en incrementos de 50
grados. Cree una tabla con sus resultados.
4. Los números primos muy grandes se usan en criptografía. ¿Cuántos números primos existen
entre 10,000 y 20,000? (Estos no son números primos suficientemente grandes como para
usarse en cifrados) (sugerencia: use la función primes y el comando length)
5. El desplazamiento del resorte oscilatorio que se muestra en
la figura se puede describir mediante: x = Acos(wt)
Donde:
x = desplazamiento en el tiempo t,
A = Desplazamiento máximo.
w = frecuencia angular, que depende de la constante de
resorte y la masa unida al mismo, y
t = tiempo.
Encuentre el desplazamiento x para tiempos desde 0 hasta
10 segundos cuando el desplazamiento máximo A es 4 cm y
la frecuencia angular es 0.6 radianes/s. Presente sus
resultados en una tabla de desplazamiento y tiempo.
7. El rango de un objeto que se dispara en un ángulo θ con respecto al eje x y una velocidad
inicial v0 está dado por :
Para 0≤ θ ≤ π/2 y resistencia del aire despreciable. Use g= 9.81 m/s2 y una velocidad inicial
v0 de 100 m/s. Muestre que el rango máximo se obtiene a aproximadamente θ = π/4 al
calcular el rango en incrementos de 0.05 entre 0≤ θ ≤ π/2. No podrá encontrar el ángulo
exacto que produce el rango máximo, porque sus cálculos están en ángulos igualmente
espaciados de 0.05 radianes.
8. Elabora un programa que solicite el valor del radio y devuelva por pantalla la longitud de la
circunferencia y el radio del círculo.
9. Elaborar un programa que represente en una tabla por pantalla los valores de altura y presión
correspondiente en altura h desde cero a 80 Km. Y tomadas cada 10 Km Calcular la presión
P según la ecuación: P [=g/cm2] = 1035*exp(-0.12*h[= Km])
10. Elaborar un programa con un bucle for que presente en pantalla los números enteros entre 0
y 50.
11. Elaborar un programa que solicite los 10 números enteros componentes de un vector de
dimensión diez, y devuelva como resultado su suma.
12. Elaborar un programa que un numero entero y devuelva como resultado la cantidad de veces
que es divisible por dos.
13. Realizar un programa que calcule y muestre por pantalla los números primos menores que N,
donde N será pedido por el programa e introducido por usuario.
14. Realizar un programa que calcule la integral numérica aproximada de la función f(x)= 1-e-x
en el intervalo [0, L] donde L será pedido por el programa e introducido por usuario. Utilizar
el método de los trapecios.
15. Realizar un programa que calcule la velocidad con que cae un cuerpo por un plano inclinado
siendo los datos de entrada: la masa del cuerpo, la inclinación del plano inclinado y el
coeficiente de rozamiento. El programa debe mostrar la velocidad a intervalos de 0.1,
segundos y el tiempo de simulación lo decide el usuario.
16. Realizar un programa que pida los elementos de un vector de 10 elementos y,
posteriormente, compruebe si existen valores repetidos, mostrando estos y sus posiciones
dentro del vector.
17. Realizar un programa que calcule la media ponderada de una serie de valores. El usuario
deberá introducir los valores así como ponderación de cada uno de ellos.
18. Realizar un programa que realice la suma de dos matrices introducidos por el usuario.
19. Realizar un programa que calcule el producto de dos matrices introducidos por el usuario.
20. Realizar un programa que calcule la serie de Fibonacci. El programa debe pedir el número
de términos deseados.
21. Realizar un programa que calcule el cociente de dos números complejos.
22. Realizar un programa que resuelva la ecuación f(x) = x2 – 43 =0 por el método de Newton
Raphson. El programa debe pedir el punto de inicio del algoritmo x0, el número máximo de
iteraciones n y la aproximación deseada.
23. Realizar un programa que obtenga los factores primos de un número entero y nos diga si
dicho numero es primo.
24. Realizar un programa que calcule la media de n números y la desviación estándar.
25. Realizar un programa que simule el movimiento de un péndulo. El programa debe pedir
como variables la masa, la longitud del hilo, la constante de rozamiento con el aire (se
supone que actual con una fuerza proporcional a la velocidad), el tiempo de simulación y el
intervalo temporal con el que se quiere tener los datos. El programa ira sacando una tabla a
lo largo de la simulación con el tiempo, la posición y la velocidad a cada instante.
26. Realizar un programa que realice una interpolación numérica lineal. El programa pedirá n
puntos de coordenadas (xi, yi) y la coordenada x de un punto p. Por interpolación lineal
usando los puntos vecinos a p., el programa debe devolver la coordenada y de dicho punto.
27.
BIBLIOGRÁFIA
JEAN Paul Tremblay, B. Bunt Richard; "Introducción a la ciencias de las computadoras (enfoque
algoritmico)" Mc Graw Hill
CORREA Uribe Guillermo; "Desarrollo de algoritmos y sus aplicaciones en Basic, Pascal y C (3ª.
Edición)" Mc Graw Hill
JOYANES Aguilar Luis, Luis Rodríguez Baena y Matilde Fernández Azuela; "Fundamentos de
programación, libro de problemas" Mc graw Hill
Aguado-Muñoz, R., Blanco, A., Zabala, J. y Zamarreño, R.; “BASIC básico. Curso de
programación”, 7ª ed., Grupo Distribuidor Editorial, Madrid (1984).
Bellido, A. y Sánchez, A.; “BASIC para estudiantes”, Editorial Paraninfo, Madrid (1991).
Ceballos, F.J.; “Manual para QuickBASIC 4.0. Guía del programador”, RA-MA Editorial, Madrid
(1988).
Jarabo, F. y Elortegui, N.; “El ordenador”, Centro de la Cultura Popular Canaria, Santa Cruz de
Tenerife (1992).