SlideShare una empresa de Scribd logo
1 de 83
Introducción a la Programación
Ing. Jaime Mesias Cajas
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 computador se les conoce como
programas y no son más que una serie de operaciones que realiza el
computador para llegar a un resultado, con un grupo de datos
específicos. Lo anterior nos lleva al razonamiento de que un programa
nos sirve para solucionar un problema especifico.
Computador: Es un dispositivo electrónico utilizado para procesar datos
y obtener resultados. Los datos y la información se pueden introducir en
el computador como entrada (input) y a continuación se procesan para
producir una salida (output).
Ing. Jaime Mesias Cajas
Programa: Es el conjunto de instrucciones escritas de algún lenguaje
de programación y que ejecutadas secuencialmente resuelven un
problema especifico.
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.
•Lenguaje Maquina
•Lenguaje de Bajo Nivel (Ensamblador)
•Lenguaje de Alto Nivel
Ing. Jaime Mesias Cajas
La palabra algoritmo se deriva
de la traducción al latín de la
palabra árabe alkhowarizmi,
nombre de un matemático y
astrónomo árabe que escribió un
tratado sobre manipulación de
números y ecuaciones en el
siglo IX.
Un algoritmo es una serie de
pasos organizados que describe
el proceso que se debe seguir,
para dar solución a un problema
especifico.
Ing. Jaime Mesias Cajas
Lenguajes Algoritmicos
•Gráficos
•No Gráficos
Definición del Problema
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 el computador; mientras esto no se conozca del todo no tiene mucho
caso continuar con la siguiente etapa.
Análisis del Problema
Diseño del Algoritmo
Codificación
Prueba y Depuración
Documentación
Mantenimiento
Ing. Jaime Mesias Cajas
Análisis del Problema
Una vez que se ha comprendido lo que se desea de el computador, es
necesario definir:
• Los datos de entrada.
• Cual es la información que se desea producir (salida)
• Los métodos y fórmulas que se necesitan para procesar los
datos.
Una recomendación muy practica es el que nos pongamos en el lugar
del computador y analicemos que es lo que necesitamos que nos
ordenen y en que secuencia para producir los resultados esperados.
Ing. Jaime Mesias Cajas
Diseño del Algoritmo
Las características de un buen algoritmo son:
• Debe tener un punto particular de inicio.
• Debe ser definido, no debe permitir dobles interpretaciones.
• Debe ser general, es decir, soportar la mayoría de las variantes que se
puedan presentar en la definición del problema.
• Debe ser finito en tamaño y tiempo de ejecución.
Ing. Jaime Mesias Cajas
Codificación
La codificación es la operación de escribir la solución del problema (de
acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una
serie de instrucciones detalladas, en un código reconocible por el
computador, la serie de instrucciones detalladas se le conoce como
código fuente, el cual se escribe en un lenguaje de programación o
lenguaje de alto nivel.
Ing. Jaime Mesias Cajas
Prueba y Depuración
Los errores humanos dentro de la programación de
computadores son muchos y aumentan considerablemente con la
complejidad del problema. El proceso de identificar y eliminar errores,
para dar paso a una solución sin errores se le llama depuración.
Ing. Jaime Mesias Cajas
Documentación
Es la guía o comunicación escrita es sus variadas formas, ya sea en
enunciados, procedimientos, dibujos o diagramas.
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).
Ing. Jaime Mesias Cajas
Mantenimiento
Se lleva acabo 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.
Ing. Jaime Mesias Cajas
Tipos De Datos
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.
Ing. Jaime Mesias Cajas
Tipos de Datos Simples
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).
Datos Alfanuméricos (String): Es una secuencia de caracteres
alfanuméricos que permiten representar valores identificables de forma
descriptiva, esto incluye nombres de personas, direcciones, etc. Es
posible representar números como alfanuméricos, pero estos pierden su
propiedad matemática, es decir no es posible hacer operaciones con
ellos. Este tipo de datos se representan encerrados entre comillas.
Ing. Jaime Mesias Cajas
Expresiones
Las expresiones son combinaciones de constantes, variables, símbolos
de operación, paréntesis y nombres de funciones especiales. Por
ejemplo:
a + (b + 3)/c
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
Ing. Jaime Mesias Cajas
Operadores y Operandos
Operadores: Son elementos que relacionan de forma diferente, los
valores de una o más variables y/o constantes. Es decir, los operadores
nos permiten manipular valores.
Operadores Aritméticos: Los operadores aritméticos permiten la
realización de operaciones matemáticas con los valores (variables y
constantes). 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.
Ing. Jaime Mesias Cajas
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
12 mod 7 5
4 + 2 * 5 14
Ing. Jaime Mesias Cajas
Prioridad de los Operadores Aritméticos
Todas las expresiones entre paréntesis se evalúan primero. Las
expresiones con paréntesis anidados se evalúan de dentro hacia fuera,
el paréntesis mas interno se evalúa primero.
Dentro de una misma expresión los operadores se evalúan en el
siguiente orden.
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.
Ing. Jaime Mesias Cajas
Ejemplos:
1) 4 + 2 * 5 = 14
2) 23 * 2 / 5 = 9.2
3) 46 / 5 = 9.2
4) 3 + 5 * (10 - (2 + 4)) = 23
5) 3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23
6) 3.5 + 5.09 - 14.0 / 40 = 5.09
7) 3.5 + 5.09 - 3.5 = 8.59 - 3.5 = 5.09
8) 2.1 * (1.5 + 3.0 * 4.1) = 28.98
9) 2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98
Ing. Jaime Mesias Cajas
Operadores Relaciónales:
Se utilizan para establecer una relación entre dos valores.
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 alfanuméricos).
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, Distinto
= Igual
Ing. Jaime Mesias Cajas
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 de expresiones no válidas:
a < b < c
10 < 20 < 30
True < 30
(No es válido porque tiene diferentes operandos)
Ing. Jaime Mesias Cajas
Operadores Lógicos:
Estos operadores se utilizan para establecer relaciones entre valores
lógicos.
Estos valores pueden ser resultado de una expresión relacional.
Operadores Lógicos
And Y &&
Or O | |
Not Negación !
Ing. Jaime Mesias Cajas
Operador And (&&)
Operando1 Operador Operando2 Resultado
T AND T T
T F F
F T F
F F F
Operador Or ( | | ) Pipe
Operando1 Operador Operando2 Resultado
T OR T T
T F T
F T T
F F F
Operador Not ( ! )
OperandoResultado
T F
F T
Ejemplos: (a < b) and (b < c)
(10<20) and (20<30)
T and T
Ing. Jaime Mesias Cajas
Prioridad de los Operadores Lógicos
Not
And
Or
Prioridad de los Operadores en General
1.- ( )
2.- ^
3.- *, /, Mod, Not
4.- +, -, And
5.- >, <, > =, < =, < >, =, Or
Ejemplos:
a = 10; b = 12; c = 13; d =10
1) ((a > b) or (a < c)) and ((a = c) or (a >= b))
F T F F
T F
F
2) ((a >= b) or (a < d)) and (( a >= d) and (c > d))
F F T T
F T
F
3) not (a = c) and (c > b)
Ing. Jaime Mesias Cajas
Identificadores
Representan los datos de un programa (constantes, variables, tipos de
datos). Un identificador es una secuencia de caracteres que sirve para
identificar una posición en la memoria en el computador, que nos
permite accesar a su contenido.
Ejemplo: Nombre
Num_hrs
Calif2
(No confundir con variable)
Reglas para formar un Identificador
•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 el underscore ( _ ) están permitidos
después del primer carácter.
•La longitud de identificadores puede ser de hasta 256 caracteres.
Ing. Jaime Mesias Cajas
Constantes y Variables
Constante: Una constante es un dato numérico o alfanumérico que no
cambia durante la ejecución del programa.
Ejemplo:
PI = 3.1416
Variable: Es un espacio en la memoria del computador que permite
almacenar temporalmente un dato durante la ejecución de un
proceso, su contenido puede cambiar durante la ejecución del
programa. Para poder reconocer una variable en la memoria del
computador, es necesario darle un nombre con el cual podamos
identificarla dentro de un algoritmo.
Ejemplo:
area = PI * radio ^ 2
Las variables son : el radio, el área y la constate es PI
Ing. Jaime Mesias Cajas
Clasificación de las Variables
Ing. Jaime Mesias Cajas
Por su Contenido
Variable Numéricas: Son aquellas en las cuales se almacenan valores
numéricos, positivos o negativos.
Ejemplo:
iva = 0.15 pi = 3.1416 costo = 2500
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.
ok = 1 < 2 es_seguro = b > 3
Variables Alfanuméricas: Esta formada por caracteres alfanuméricos
(letras, números y caracteres especiales).
Ejemplo:
letra = ’a apellido = ’lopez’ direccion = ’Av. Libertad #190’
Ing. Jaime Mesias Cajas
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:
resultado = a + b / c
Contadores: Se utilizan para llevar el control del numero de ocasiones
en que se realiza una operación o se cumple una condición. Con los
incrementos generalmente de uno en uno.
Ejemplo:
veces = veces + 1
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.
Ejemplo:
suma = suma + b
Ing. Jaime Mesias Cajas
ESTRUCTURAS ALGORITMICAS
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:
Ing. Jaime Mesias Cajas
Estructuras Secuenciales
La estructura secuencial es aquella en la que una acción (instrucción)
sigue a otra en secuencia. Las tareas se suceden de tal modo que la
salida de una es la entrada de la siguiente y así sucesivamente hasta el
fin del proceso. Una estructura secuencial se representa de la siguiente
forma:
Inicio
Accion1
Accion2
.
.
AcciónN
Fin
Ing. Jaime Mesias Cajas
Asignación:
La asignación consiste, en el paso de valores o resultados a una zona
de la memoria. Dicha zona será reconocida con el nombre de la variable
que recibe el valor. La asignación se puede clasificar de la siguiente
forma:
Simples: Consiste en pasar un valor constante a una variable
(a = 15)
Contador: Consiste en usarla como un verificador del numero de veces
que se realiza un proceso
(a = a + 1)
Acumulador: Consiste en usarla como un sumador en un proceso
(a = a + b)
De trabajo: Donde puede recibir el resultado de una operación
matemática que involucre muchas variables
(a = c + b * 2 / 4).
Ing. Jaime Mesias Cajas
Lectura:
La lectura consiste en recibir desde un dispositivo de entrada (el teclado)
un valor. Esta operación se representa en un pseudo có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 (monitor o impresora)
un resultado o mensaje. Este proceso se representa en un pseudo
código como sigue:
Escribir “El resultado es:”, R
Donde “El resultado es:” es un mensaje que se desea aparezca y R es
una variable que contiene un valor.
Ing. Jaime Mesias Cajas
Problemas Secuenciales
Suponga que un individuo quiere invertir su capital en un banco y desea
saber cuanto dinero ganará después de un mes si el banco paga a
razón de 2% mensual.
Análisis
Datos de entrada
Capital a invertir (cap_invertir)
Interés pagado por el banco = 2% mensual
Datos de salida
Ganancia obtenida en un mes (ganancia)
Algoritmo
Inicio
Entero cap_invertir
Real ganancia
Leer cap_invertir
ganancia = cap_invertir * 0.02
Escribir ganancia
Fin
Ing. Jaime Mesias Cajas
Un vendedor recibe un sueldo base mas un 10% extra por comisión de sus
ventas, el vendedor desea saber cuanto 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.
Análisis
Datos de entrada
Sueldo base del vendedor (sueldo_base)
Comision por venta = 10% de las ventas
Realizo 3 ventas : Venta1, Venta2 y Venta3
Datos de salida
Valor de la comision de las ventas (comision)
Sueldo a recibir (sueldo_recibir)
Consideraciones
•Para calcular el valor de la comision, se debe concocer el total de las ventas
•Total de las ventas es la suma acumulativa de cada una de las ventas.
•La comision corresponde al 10% del total acumulado de las ventas
•El sueldo a recibir es la suma del sueldo base más la comision de las ventas.
Ing. Jaime Mesias Cajas
Algoritmo
Inicio
Entero sueldo_base, venta1, venta2, venta3
Entero total_venta
Real comision, sueldo_recibir
Leer sueldo_base, venta1, venta2, venta3
total_venta = venta1 + venta2 + venta3
comision = total_venta * 0.10
sueldo_recibir = sueldo_base + comision
Escribir sueldo_recibir, comision
Fin
Ing. Jaime Mesias Cajas
Una tienda ofrece un descuento del 15% sobre el total de la compra y un
cliente desea saber cuanto deberá pagar finalmente por su compra.
Analisis
Datos de entrada
El total de la compra (total_compra)
Descuento ofrecido por la tienda = 15% sobre el total de la compra
Datos de salida
Total a pagar por la compra (total_pagar)
Consideraciones
El descuento es el 15 del valor total comprado
Descuento = total_compra * 0,15
Ing. Jaime Mesias Cajas
Algoritmo
Inicio
Entero total_compra
Real descuento, total_pagar
Leer total_compra
descuento = total_compra * 0.15
total_pagar = total_compra - descuento
Escribir total_pagar
Fin
Ing. Jaime Mesias Cajas
1)Un alumno desea saber cual será su nota final en el curso de
Introducción a la programación. Dicha nota se compone de los
siguientes porcentajes:
55% del promedio de sus tres notas parciales.
30% de la nota del examen final.
15% de la nota de un trabajo final.
2) Un profesor conoce la cantidad de hombres y mujeres del curso
de Algoritmos, desea saber que porcentaje de hombres y que
porcentaje de mujeres hay en su grupo de estudiantes.
Ing. Jaime Mesias Cajas
1) Dada un cantidad en pesos, obtener la equivalencia en dólares,
asumiendo que la unidad cambiaría es un dato desconocido.
2) La presión, el volumen y la temperatura de una masa de aire se
relacionan por la formula:
masa = (presión * volumen)/(0.37 * (temperatura + 460))
Escribir un algoritmo que calcule dicha fórmula.
3) Calcular el numero de pulsaciones que una persona debe tener por
cada 10 segundos de ejercicio, si la formula es:
num. pulsaciones = (220 - edad)/10
4) Calcular el nuevo sueldo de un empleado si obtuvo un incremento del
25% sobre su sueldo anterior.
Ing. Jaime Mesias Cajas
5) En un hospital existen tres áreas: Ginecología, Pediatría, Traumatología. El
presupuesto anual del hospital se reparte conforme a la sig. tabla:
Área Porcentaje del presupuesto
Ginecología 40%
Traumatología 30%
Pediatría 30%
Obtener la cantidad de dinero que recibirá cada área, para cualquier monto
presupuestado.
6) 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%.
7) 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.
8) 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.
Ing. Jaime Mesias Cajas
9) Un alumno desea saber cual será su promedio general en los tres
cursos más difíciles que cursa y cual será el promedio que obtendrá
en cada una de ellas. Estas materias se evalúan como se muestra a
continuación:
La calificación de Matemáticas se obtiene de la sig. manera:
Examen 90%
Promedio de tareas 10%
En esta materia se pidió un total de tres tareas.
La calificación de Física se obtiene de la sig. manera:
Examen 80%
Promedio de tareas 20%
En esta materia se pidió un total de dos tareas.
La calificación de Programación se obtiene de la sig. manera:
Examen 85%
Promedio de tareas 15%
En esta materia se pidió un promedio de tres tareas.
Ing. Jaime Mesias Cajas
Estructuras de Condicionales
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.
Ing. Jaime Mesias Cajas
Simples: Las estructuras condicionales simples se les conoce como “Tomas de
decisión”.
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.
Si <condición> entonces
Acción(es)
si no
Acción(es)
Fin si
Donde:
Si ………………… Indica el comando de comparación
Condición………… Indica la condición a evaluar
entonces……..…… Precede a las acciones a realizar cuando se cumple la condición
acción(es)………… Son las acciones a realizar cuando se cumple o no la condición
si no……………… Precede a las acciones a realizar cuando no se cumple la condición
Ing. Jaime Mesias Cajas
Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o
mas acciones.
Múltiples: Las estructuras de comparación múltiples, son tomas de decisión
especializadas que permiten comparar una variable contra distintos posibles
resultados, ejecutando para cada caso una serie de instrucciones
especificas. 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
Accion(es)
Fin Si
Fin Si
Ing. Jaime Mesias Cajas
Estructura condicional EN CASO
En Caso Variable
Op1: Acción(es)
Op2: Acción(es)
.
.
OpN: acción
Fin En Caso
Ing. Jaime Mesias Cajas
Ejemplo Selección Simple.
Un hombre desea saber cuanto 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 $7.000, y en ese caso
desea saber cuanto dinero tendrá finalmente en su cuenta.
Datos de Entrada:
Capital en Inversión (cap_inv)
Valor del Interés (p_interes)
Datos de Salida:
Saldo en la cuenta (saldo)
Consideraciones:
Se debe calcular el valor del interés generado por el capital
Ing. Jaime Mesias Cajas
Algoritmo
Inicio
Entero cap_inv
Real p_interes, ineres_calculado, saldo
Leer p_interes, cap_inv
saldo = cap_inv
interes_calculado = cap_inv * p_interes
SI interes_calculado > 7000 entonces
saldo = cap_inv + interes_calculado
Fin Si
Escribir saldo
Fin
Ing. Jaime Mesias Cajas
Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara
si su promedio de las tres calificaciones es mayor o igual a 4.0; reprueba en
caso contrario.
Algoritmo
Inicio
Real Nota1, Nota2, Nota3
Real Promedio
String Mensaje
Leer Nota1, Nota2, Nota3
Promedio = (Nota1 + Nota2 + Nota3) / 3
Si promedio >= 4.0 entonces
Mensaje = “Alumno Aprobado”
si no
Mensaje = “Alumno Reprobado”
Fin si
Escribir Mensaje
Fin
Ing. Jaime Mesias Cajas
En un almacén se hace un 20% de descuento a los clientes cuya compra
supere los $1000 ¿ Cual será la cantidad que pagara una persona por su
compra?
Algoritmo
Inicio
Entero Compra
Real Descuento, Tot_Pagar
Leer Compra
Si Compra > 1000 entonces
Descuento = Compra * 0.2
si no
Descuento = 0
Fin si
Tot_Pagar = Compra – Descuento
Escribir Tot_pagar
Fin
Ing. Jaime Mesias Cajas
Un obrero necesita calcular su sueldo, el cual se obtiene de la sig. manera:
Si trabaja 40 horas o menos se le paga $1600 por hora trabajada
Si trabaja mas de 40 horas se le paga $1600 por cada una de las primeras 40
horas trabajadas y $2000 por cada hora extra.
Algoritmo
Inicio
Entero Hora_trabajada, Hora_extra, Sueldo
Leer Hora_trabajada
Si Hora_trabajada > 40 entonces
Hora_extra = Hora_trabajada - 40
Sueldo = Hora_extra * 2000 + 40 * 1600
si no
Sueldo = Hora_trabajada * 1600
Fin-si
Escribir Sueldo
Fin
Ing. Jaime Mesias Cajas
Ejercicios propuestos
1) Escribir un algoritmo que lea dos números y los escriba en forma
ascendente.
2) Una persona enferma, que pesa 70 kg, se encuentra en reposo y desea
saber cuantas calorías consume su cuerpo durante todo el tiempo que
realice una misma actividad. Las actividades que tiene permitido realizar son
únicamente dormir o estar sentado en reposo. Los datos que tiene son que
estando dormido consume 1.08 calorías por minuto y estando sentado en
reposo consume 1.66 calorías por minuto.
3) Escribir un algoritmo que escriba el nombre de un articulo, clave, precio
original y su precio con descuento. El descuento lo hace en base a la clave,
si la clave es 01 el descuento es del 10% y si la clave es 02 el descuento es
del 20% (solo existen dos claves).
4) Hacer un algoritmo que calcule el total a pagar por la compra de camisas. Si
se compran tres camisas o más se aplica un descuento del 20% sobre el
total de la compra y si son menos de tres camisas un descuento del 10%
Ing. Jaime Mesias Cajas
1) En un supermercado se hace una promoción, mediante la cual el cliente
obtiene un descuento dependiendo de un numero que se escoge al azar. Si
el numero escogido es menor que 74 el descuento es del 15% sobre el total
de la compra, si es mayor o igual a 74 el descuento es del 20%. Obtener
cuanto dinero se le descuenta.
2) Una compañía de seguros esta abriendo un depto. de finanzas y estableció
un programa para captar clientes, que consiste en lo siguiente: Si el monto
por el que se efectúa la fianza es menor que $50 000 la cuota a pagar será
por el 3% del monto, y si el monto es mayor que $50 000 la cuota a pagar
será el 2% del monto. La afianzadora desea determinar cual será la cuota
que debe pagar un cliente.
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.
Ing. Jaime Mesias Cajas
Estructuras Iterativas (Cíclicas)
Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es
necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una
cantidad especifica de veces. Esta 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:
Ciclos con un Numero Determinado de Iteraciones:
a) Para
Ciclos con un Numero Indeterminado de Iteraciones:
a) Mientras
b) Repetir-Hasta
Ing. Jaime Mesias Cajas
Ciclos con un Numero Determinado de Iteraciones (Para)
Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el
ciclo. La forma de esta estructura es la siguiente:
Para (Var_Control = Valor_Inicial ; Valor_Final ; Incremento_Var_Control)
Accion 1
Accion 2
…
Fin Para
Donde:
Var_Control es una variable que lleva la cuenta de las iteraciones.
Valor_Inicial corresponde al primer valor que tomará Var_Control.
Valor_Final corresponde al ultimo valor permitido para continuar iterando.
Incremento_Var_Control corresponde al avance que tendrá Var_Control
Ing. Jaime Mesias Cajas
Ejemplo:
Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de
Diseño Estructurado de Algoritmos.
Alternativa 1 (Sin considerar iteración)
Algoritmo
Inicio
Real Nota1, Nota2, Nota3, Nota4, Nota5, Nota6, Nota7
Real Promedio
Leer Nota1, Nota2, Nota3, Nota4, Nota5, Nota6, Nota7
Promedio = (Nota1+ Nota2+ Nota3+ Nota4+ Nota5+ Nota6+ Nota7)/7
Escribir Promedio
Fin
Ing. Jaime Mesias Cajas
Alternativa 2 (Considerar iteración)
Algoritmo
Inicio
Real Nota
Real Promedio, Suma
Entero C_Nota, i
Leer C_Nota
Suma = 0
Para (i = 1 ; C_Nota ; 1)
Leer Nota
Suma = Suma + Nota
Fin Para
Promedio = Suma / C_Nota
Escribir Promedio
Fin
Ing. Jaime Mesias Cajas
¿ Cual alternativa es mas interesante de implementar?
¿ Por que?
Ing. Jaime Mesias Cajas
Ejemplo
Leer 10 números y obtener su cuadrado y su cubo.
Algoritmo
Inicio
Entero Numero, Cuadrado, Cubo
Entero i
Para (i = 1 ; 10 ; 1)
Leer Numero
Cuadrado = Numero * Numero
Cubo = Cuadrado * Numero
Escribir Cuadrado, Cubo
Fin Para
Fin
Ing. Jaime Mesias Cajas
Leer 10 números e imprimir solamente los números positivos
Leer 20 números e imprimir cuantos son positivos, cuantos negativos y
cuantos neutros.
Leer 15 números negativos y convertirlos a positivos e imprimir dichos
números.
Suponga que se tiene un conjunto de notas finales de un grupo de 40 alumnos.
Escribir un algoritmo para calcule el promedio de las notas y la calificación
final más baja de todo el grupo.
Calcular y escribir la tabla de multiplicar de un numero cualquiera. Escribir el
multiplicando, el multiplicador y el producto.
Simular el comportamiento de un reloj digital, escribiendo la hora, minutos y
segundos de un día desde las 0:00:00 horas hasta las 23:59:59 horas
Ing. Jaime Mesias Cajas
Ciclos con un Numero Indeterminado de Iteraciones ( Mientras, Repetir-
Hasta)
Son aquellos en que el numero de iteraciones no se conoce con exactitud, ya
que esta dado en función de un dato dentro del programa.
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. La forma de
esta estructura es la siguiente:
Mientras (Condición)
Acción_1
Acción_2
…
Acción_N
Fin Mientras
Ing. Jaime Mesias Cajas
Ejemplo
Leer 10 números y obtener su cuadrado y su cubo.
Algoritmo
Inicio
Entero Numero, Cuadrado, Cubo
Entero i
i = 1;
Mientras (i <= 10)
Leer Numero
Cuadrado = Numero * Numero
Cubo = Cuadrado * Numero
Escribir Cuadrado, Cubo
i = i + 1
Fin Para
Fin
Ing. Jaime Mesias Cajas
1)Una compañía de seguros tiene contratados a n vendedores. Cada uno hace
tres ventas a la semana. Su política de remuneraciones 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 cuanto dinero obtendrá en la semana
cada vendedor por concepto de comisiones por las tres ventas realizadas, y
cual será su remuneración final, tomando en cuenta su sueldo base y sus
comisiones.
2) Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de
interés. Cual será la cantidad de dinero que esta persona tendrá al cabo de un
año si la ganancia de cada mes es reinvertida?.
3) Se desea obtener el promedio de g grupos que están en un mismo año
escolar; si cada grupo puede tener n alumnos, cada alumno puede tener m
materias y que en todas las materias se promedian tres notas 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.
Ing. Jaime Mesias Cajas
Repetir-Hasta: Esta es una estructura similar en algunas características, a la
anterior. Repite un proceso una cantidad de veces, pero a diferencia del
Mientras, el Repetir-Hasta lo hace hasta que la condición se cumple y no
mientras, como en el Mientras. Por otra parte, esta estructura permite realizar el
proceso cuando menos una vez, ya que la condición se evalúa al final del
proceso, mientras que en la estructura 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:
Repetir
Acción_1
Acción_2
…
Acción_N
Hasta ( Condición)
Ing. Jaime Mesias Cajas
Repetir-Hasta: Esta es una estructura similar en algunas características, a la
anterior. Repite un proceso una cantidad de veces, pero a diferencia del
Mientras, el Repetir-Hasta lo hace hasta que la condición se cumple y no
mientras, como en el Mientras. Por otra parte, esta estructura permite realizar el
proceso cuando menos una vez, ya que la condición se evalúa al final del
proceso, mientras que en la estructura 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:
Repetir
Acción_1
Acción_2
…
Acción_N
Hasta ( Condición)
Ing. Jaime Mesias Cajas
LENGUAJE C
Fue creado por Dennis Ritchie en 1972 (UNIX)
Deriva del lenguaje B de Ken Thompson
En 1989 se unifican criterios, Ansi C.
Características
Es estructurado (subrutinas y estructuras de control)
Es amigable, flexible y potente (Combina elementos de lenguaje de
alto nivel y elementos de ensambladores.)
Es eficiente
Es portable
Es compilado.
Ing. Jaime Mesias Cajas
Para escribir un programa en C hay que seguir los
siguientes pasos:
Diseñar el algoritmo que resuelve el problema
Escribir el Código Fuente del programa (extensión .c)
 Traducir de seudo lenguaje a código C
 Esto se hace utilizando cualquier editor de texto.
Generar Código Objeto del programa (extensión .obj)
 El compilador traduce el programa fuente a lenguaje interno del
computador
 El compilador comprueba si hemos cometido algún error de
sintaxis.
Generar archivo ejecutable (Extensión .exe o .out)
 Se ejecuta un programa llamado linker, que genera el archivo
ejecutable.
Ing. Jaime Mesias Cajas
Ing. Jaime Mesias Cajas
Ing. Jaime Mesias Cajas
Ing. Jaime Mesias Cajas
Ing. Jaime Mesias Cajas
Ing. Jaime Mesias Cajas
Ing. Jaime Mesias Cajas
LAS FUNCIONES EN C.
Las aplicaciones informáticas que habitualmente suelen contener
decenas y aún cientos de miles de líneas de código fuente. A medida
que los programas se van desarrollando y aumentan de tamaño, se
convertirían rápidamente en sistemas poco manejables si no fuera por
la modularización o programación descendente, que es el proceso
consistente en dividir un programa muy grande en una serie de
módulos mucho más pequeños y manejables.
A estos módulos se les suele denominar de distintas formas
(subprogramas, subrutinas, procedimientos, funciones, etc.) según los
distintos lenguajes. El lenguaje C hace uso del concepto de función
(function). Sea cual sea la nomenclatura, la idea es sin embargo
siempre la misma: dividir un programa grande en un conjunto de
subprogramas o funciones más pequeñas que son llamadas por el
programa principal; éstas a su vez llaman a otras funciones más
específicas y así sucesivamente.
Ing. Jaime Mesias Cajas
LAS FUNCIONES EN C.
Una función de C es una porción de código o
programa que realiza una determinada tarea y
está asociada con un identificador o nombre, que
se utiliza para referirse a ella desde el resto del
programa.
¿POR QUÉ SE UTILIZAN?
La división de un programa en unidades más
pequeñas o funciones presenta –entre otras– las
ventajas siguientes:
Ing. Jaime Mesias Cajas
LAS FUNCIONES EN C.
1. Modularización.
2. Ahorro de memoria y tiempo de desarrollo.
3. Independencia de datos y ocultamiento de información.
Se suelen emplear subprogramas en los siguientes casos:
En programas complejos: si un programa complejo se escribe sin
subprogramas resulta difícil de entender. La división en subprogramas
permite que nos centremos en cada momento en un problema más
pequeño que el problema original.
Cuando se repite dentro de un algoritmo algún tipo de tratamiento:
de este modo describiremos como se hace el tratamiento una sola vez
con un subprograma y realizaremos una llamada a éste cada vez que
queramos usarlo.
Ing. Jaime Mesias Cajas
DEFINICIÓN DE FUNCIONES
tipo_valor_retorno nombre_funcion (lista argumentos
formales con tipos)
{
declaración de variables y/o de otras funciones
codigo ejecutable
return (expresión); // optativo
}
La primera línea recibe el nombre de encabezamiento (header) o
cabecera, y el resto de la definición –encerrado entre llaves– es el
cuerpo (body) de la función. Cada función puede disponer de sus
propias variables, declaradas al comienzo de su código.
Ing. Jaime Mesias Cajas
DEFINICIÓN DE FUNCIONES
Estas variables (Locales), por defecto sólo son
visibles dentro del bloque en el que han sido
definidas, se crean cada vez que se ejecuta la
función y permanecen ocultas para el resto del
programa.
También se pueden hacer visibles a la función,
variables globales definidas en otro archivo (o en
el mismo archivo, (aunque no suele ser
aconsejable, salvo en situaciones muy especiales).
Ing. Jaime Mesias Cajas
DEFINICIÓN DE FUNCIONES
El código ejecutable es el conjunto de instrucciones que deben
ejecutarse cada vez que la función es llamada.
La lista de argumentos con tipos, también llamados argumentos
formales, es una lista de declaraciones de variables, precedidas por su
tipo correspondiente y separadas por comas (,).
Los argumentos formales son la forma más natural y directa para que
la función reciba valores desde el programa que la llama,
correspondiéndose en número y tipo con otra lista de argumentos -los
argumentos actuales (como veremos a continuación)- en el programa
que realiza la llamada a la función. Los argumentos formales son
declarados en el encabezamiento de la función, pero no pueden ser
inicializados en él.
Ing. Jaime Mesias Cajas
DEFINICIÓN DE FUNCIONES
Cuando una función es ejecutada, puede devolver al programa que la
ha llamado un valor, el valor de retorno, cuyo tipo debe ser
especificado en el encabezamiento de la función (si no se especifica, se
supone por defecto el tipo int). Si no se desea que la función devuelva
ningún valor, el tipo del valor de retorno deberá ser void.
La sentencia return permite devolver el control al programa que
llama. Puede haber varias sentencias return en una misma función
(aunque deberemos intentar que aparezca una sola vez, al final de la
función). Si no hay ningún return, el control se devuelve cuando se
llega al final del cuerpo de la función. Le palabra clave return puede ir
seguida de una expresión, en cuyo caso ésta es evaluada y el valor
resultante devuelto al programa que llama como valor de retorno (si
hace falta, con una conversión previa al tipo declarado en el
encabezamiento). Los paréntesis que engloban a la expresión que
sigue a return son optativos.
Ing. Jaime Mesias Cajas
Ejemplo
double valor_abs( double x )
{
double abs;
if (x < 0.0)
abs = -x;
else
abs = x;
return ( abs );
}
// archivo prueba.c
#include <stdio.h>
double valor_abs(double);
// declaración
void main (void)
{
double z, y;
y = -30.8;
z = valor_abs(y) + y*y;
// llamada en una expresion
}
Ing. Jaime Mesias Cajas
Funciones
El efecto producido por la llamada a una función puede resumirse como:
 Se evalúan las expresiones que aparezcan en los argumentos (parámetros
reales).
 Se crean las variables correspondientes a los parámetros formales.
 Se asignan los valores calculados en 1) a los correspondientes parámetros
formales.
 Se crean las variables locales* al subprograma.
 Se ejecuta el código correspondiente al subprograma.
 Se destruyen las variables locales* y las correspondientes a los parámetros
formales.
 Se continúa el programa por la instrucción siguiente a la llamada al
subprograma.
Ing. Jaime Mesias Cajas
DECLARACIÓN DE FUNCIONES.
En principio, en C, la declaración de una función se puede hacer de tres
maneras:
 Mediante una llamada a la función. En efecto, cuando una función es llamada
sin que previamente haya sido declarada o definida, esa llamada sirve como
declaración suponiendo int como tipo del valor de retorno, y el tipo de los
argumentos actuales como tipo de los argumentos formales. Esta práctica es
muy peligrosa (es fuente de numerosos errores) y debe ser evitada.
 Mediante una definición previa de la función. Esta práctica es segura si la
definición precede a la llamada, pero tiene el inconveniente de que si la
definición se cambia de lugar, la propia llamada pasa a ser declaración como
en el caso a).
 Mediante una declaración explícita, previa a la llamada. Esta es la práctica más
segura y la que hay que tratar de seguir siempre. La declaración de la función
se hace mediante el prototipo de la función, bien fuera de cualquier bloque,
bien en la parte de declaraciones de un bloque.
Ing. Jaime Mesias Cajas
Problemas
1) Dos números a y b se dice que son amigos si la suma de los divisores
de a (salvo él mismo) coincide con b y viceversa. Diseña un
PROGRAMA (que utilice funciones) que tenga como entrada dos
números naturales n y m y que muestre en la pantalla todas las parejas
de números amigos que existan en el intervalo determinado por n y
m.
Ing. Jaime Mesias Cajas

Más contenido relacionado

La actualidad más candente

Introducción A La Programación
Introducción A La ProgramaciónIntroducción A La Programación
Introducción A La ProgramaciónPablo Parola
 
Algoritmo fundamentos de la programación
Algoritmo   fundamentos de la programaciónAlgoritmo   fundamentos de la programación
Algoritmo fundamentos de la programaciónDesarrolloWeb.com
 
Programacion Estructurada
Programacion EstructuradaProgramacion Estructurada
Programacion Estructuradaramirezadi
 
Algoritmos Y Programas Unidad1
Algoritmos Y  Programas Unidad1Algoritmos Y  Programas Unidad1
Algoritmos Y Programas Unidad1Silvanac
 
INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3thefasp10
 
Algoritmos y metodología para la solución de problemas
Algoritmos y metodología para la solución de problemasAlgoritmos y metodología para la solución de problemas
Algoritmos y metodología para la solución de problemasMartin Pacheco
 
Video Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia AbiertaVideo Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia AbiertaDanilo Jaramillo
 
Algoritmos y clase
Algoritmos y claseAlgoritmos y clase
Algoritmos y clasedaosma
 
Clase de metodologia para analisis y planteamiento de problemas
Clase de metodologia para analisis y planteamiento de problemasClase de metodologia para analisis y planteamiento de problemas
Clase de metodologia para analisis y planteamiento de problemasSol Hernández
 

La actualidad más candente (20)

Introducción A La Programación
Introducción A La ProgramaciónIntroducción A La Programación
Introducción A La Programación
 
Algoritmo fundamentos de la programación
Algoritmo   fundamentos de la programaciónAlgoritmo   fundamentos de la programación
Algoritmo fundamentos de la programación
 
Programacion Estructurada
Programacion EstructuradaProgramacion Estructurada
Programacion Estructurada
 
Trabajo de exposicion alg2
Trabajo de exposicion alg2Trabajo de exposicion alg2
Trabajo de exposicion alg2
 
Algoritmos Y Programas Unidad1
Algoritmos Y  Programas Unidad1Algoritmos Y  Programas Unidad1
Algoritmos Y Programas Unidad1
 
Algoritmos y diagramas de flujo
Algoritmos y diagramas de flujoAlgoritmos y diagramas de flujo
Algoritmos y diagramas de flujo
 
Algoritmos+y+solucion+de+problemas
Algoritmos+y+solucion+de+problemasAlgoritmos+y+solucion+de+problemas
Algoritmos+y+solucion+de+problemas
 
Tipos de algoritmos
Tipos de algoritmosTipos de algoritmos
Tipos de algoritmos
 
INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3
 
Resumen prgramacion
Resumen prgramacionResumen prgramacion
Resumen prgramacion
 
Algoritmos y metodología para la solución de problemas
Algoritmos y metodología para la solución de problemasAlgoritmos y metodología para la solución de problemas
Algoritmos y metodología para la solución de problemas
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Video Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia AbiertaVideo Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia Abierta
 
Mod 2 algoritmos
Mod 2 algoritmosMod 2 algoritmos
Mod 2 algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos y clase
Algoritmos y claseAlgoritmos y clase
Algoritmos y clase
 
Diagrama secuencial
Diagrama secuencialDiagrama secuencial
Diagrama secuencial
 
Clase de metodologia para analisis y planteamiento de problemas
Clase de metodologia para analisis y planteamiento de problemasClase de metodologia para analisis y planteamiento de problemas
Clase de metodologia para analisis y planteamiento de problemas
 
Diagrama de-flujo
Diagrama de-flujoDiagrama de-flujo
Diagrama de-flujo
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 

Destacado

sistema circulatorio
sistema circulatoriosistema circulatorio
sistema circulatorioPaula Prieto
 
ReSwift CocoaHeads Tricity
ReSwift CocoaHeads TricityReSwift CocoaHeads Tricity
ReSwift CocoaHeads TricityEliasz Sawicki
 
Factory Pattern
Factory PatternFactory Pattern
Factory PatternDeepti C
 
Introduction To Functional Reactive Programming Poznan
Introduction To Functional Reactive Programming PoznanIntroduction To Functional Reactive Programming Poznan
Introduction To Functional Reactive Programming PoznanEliasz Sawicki
 
ReactiveCocoa workshop
ReactiveCocoa workshopReactiveCocoa workshop
ReactiveCocoa workshopEliasz Sawicki
 
ประเทศฟิลิปปินส์
ประเทศฟิลิปปินส์ประเทศฟิลิปปินส์
ประเทศฟิลิปปินส์pockikie
 
Time traveling with ReSwift
Time traveling with ReSwiftTime traveling with ReSwift
Time traveling with ReSwiftEliasz Sawicki
 
Introduction to Functional Reactive Programming
Introduction to Functional Reactive ProgrammingIntroduction to Functional Reactive Programming
Introduction to Functional Reactive ProgrammingEliasz Sawicki
 
【國際金融報告】近20年金融危機回顧(2016/2)
【國際金融報告】近20年金融危機回顧(2016/2) 【國際金融報告】近20年金融危機回顧(2016/2)
【國際金融報告】近20年金融危機回顧(2016/2) Collaborator
 
20160413 mwc四大趨勢前瞻
20160413 mwc四大趨勢前瞻20160413 mwc四大趨勢前瞻
20160413 mwc四大趨勢前瞻Collaborator
 
201607 新南向政策
201607 新南向政策201607 新南向政策
201607 新南向政策Collaborator
 
產業分析:航空
產業分析:航空產業分析:航空
產業分析:航空Collaborator
 

Destacado (13)

sistema circulatorio
sistema circulatoriosistema circulatorio
sistema circulatorio
 
Calabash
CalabashCalabash
Calabash
 
ReSwift CocoaHeads Tricity
ReSwift CocoaHeads TricityReSwift CocoaHeads Tricity
ReSwift CocoaHeads Tricity
 
Factory Pattern
Factory PatternFactory Pattern
Factory Pattern
 
Introduction To Functional Reactive Programming Poznan
Introduction To Functional Reactive Programming PoznanIntroduction To Functional Reactive Programming Poznan
Introduction To Functional Reactive Programming Poznan
 
ReactiveCocoa workshop
ReactiveCocoa workshopReactiveCocoa workshop
ReactiveCocoa workshop
 
ประเทศฟิลิปปินส์
ประเทศฟิลิปปินส์ประเทศฟิลิปปินส์
ประเทศฟิลิปปินส์
 
Time traveling with ReSwift
Time traveling with ReSwiftTime traveling with ReSwift
Time traveling with ReSwift
 
Introduction to Functional Reactive Programming
Introduction to Functional Reactive ProgrammingIntroduction to Functional Reactive Programming
Introduction to Functional Reactive Programming
 
【國際金融報告】近20年金融危機回顧(2016/2)
【國際金融報告】近20年金融危機回顧(2016/2) 【國際金融報告】近20年金融危機回顧(2016/2)
【國際金融報告】近20年金融危機回顧(2016/2)
 
20160413 mwc四大趨勢前瞻
20160413 mwc四大趨勢前瞻20160413 mwc四大趨勢前瞻
20160413 mwc四大趨勢前瞻
 
201607 新南向政策
201607 新南向政策201607 新南向政策
201607 新南向政策
 
產業分析:航空
產業分析:航空產業分析:航空
產業分析:航空
 

Similar a Algoritmos1 (20)

Unidad i
Unidad iUnidad i
Unidad i
 
Unidad i
Unidad iUnidad i
Unidad i
 
Entidades Primitivas Para Algoritmos
Entidades Primitivas Para AlgoritmosEntidades Primitivas Para Algoritmos
Entidades Primitivas Para Algoritmos
 
10_ALGORITMOS 2.pdf
10_ALGORITMOS 2.pdf10_ALGORITMOS 2.pdf
10_ALGORITMOS 2.pdf
 
algoritmos 7 4p.pptx
algoritmos 7 4p.pptxalgoritmos 7 4p.pptx
algoritmos 7 4p.pptx
 
informatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptxinformatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptx
 
informatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptxinformatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptx
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Tema n° 1
Tema n° 1Tema n° 1
Tema n° 1
 
Estructuras de un Algoritmo
Estructuras de un AlgoritmoEstructuras de un Algoritmo
Estructuras de un Algoritmo
 
Logica computacional conceptos basicos
Logica computacional conceptos basicosLogica computacional conceptos basicos
Logica computacional conceptos basicos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
algortimos
algortimosalgortimos
algortimos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos 02
Algoritmos 02Algoritmos 02
Algoritmos 02
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
algoritmos
algoritmosalgoritmos
algoritmos
 
Capitulo i modelos_matematicos_y_errores,_parte_1[1]
Capitulo i modelos_matematicos_y_errores,_parte_1[1]Capitulo i modelos_matematicos_y_errores,_parte_1[1]
Capitulo i modelos_matematicos_y_errores,_parte_1[1]
 
Algoritmos2daparte
Algoritmos2daparteAlgoritmos2daparte
Algoritmos2daparte
 

Último

Presentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptPresentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptCARLOSAXELVENTURAVID
 
Taller construcción de Prototipos Uno uML
Taller construcción de Prototipos Uno uMLTaller construcción de Prototipos Uno uML
Taller construcción de Prototipos Uno uMLAderMogollonLuna
 
linea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añoslinea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añosMaraPazCrdenas
 
PPT obligaciones ambientales oefa minan.pptx
PPT obligaciones ambientales oefa minan.pptxPPT obligaciones ambientales oefa minan.pptx
PPT obligaciones ambientales oefa minan.pptxDanmherJoelAlmironPu
 
PLANIFICACION ANUAL , año 2024. nivel primaria
PLANIFICACION ANUAL , año 2024. nivel primariaPLANIFICACION ANUAL , año 2024. nivel primaria
PLANIFICACION ANUAL , año 2024. nivel primariajosevilla696981
 
TALLER SOBRE METODOLOGÍAS DE DESARROLLO DE SOFTWARE..pdf
TALLER SOBRE METODOLOGÍAS DE DESARROLLO DE SOFTWARE..pdfTALLER SOBRE METODOLOGÍAS DE DESARROLLO DE SOFTWARE..pdf
TALLER SOBRE METODOLOGÍAS DE DESARROLLO DE SOFTWARE..pdfMiguelGomez900779
 
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVO
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVOPERFIL SECRETARIAL - SECRETARIADO EJECUTIVO
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVOAdrianaBernal82
 
La Navegacion en Internet con navegadores
La Navegacion en Internet con navegadoresLa Navegacion en Internet con navegadores
La Navegacion en Internet con navegadoresjosegillopez
 

Último (8)

Presentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptPresentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.ppt
 
Taller construcción de Prototipos Uno uML
Taller construcción de Prototipos Uno uMLTaller construcción de Prototipos Uno uML
Taller construcción de Prototipos Uno uML
 
linea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añoslinea de tiempo television y su avance en los años
linea de tiempo television y su avance en los años
 
PPT obligaciones ambientales oefa minan.pptx
PPT obligaciones ambientales oefa minan.pptxPPT obligaciones ambientales oefa minan.pptx
PPT obligaciones ambientales oefa minan.pptx
 
PLANIFICACION ANUAL , año 2024. nivel primaria
PLANIFICACION ANUAL , año 2024. nivel primariaPLANIFICACION ANUAL , año 2024. nivel primaria
PLANIFICACION ANUAL , año 2024. nivel primaria
 
TALLER SOBRE METODOLOGÍAS DE DESARROLLO DE SOFTWARE..pdf
TALLER SOBRE METODOLOGÍAS DE DESARROLLO DE SOFTWARE..pdfTALLER SOBRE METODOLOGÍAS DE DESARROLLO DE SOFTWARE..pdf
TALLER SOBRE METODOLOGÍAS DE DESARROLLO DE SOFTWARE..pdf
 
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVO
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVOPERFIL SECRETARIAL - SECRETARIADO EJECUTIVO
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVO
 
La Navegacion en Internet con navegadores
La Navegacion en Internet con navegadoresLa Navegacion en Internet con navegadores
La Navegacion en Internet con navegadores
 

Algoritmos1

  • 1. Introducción a la Programación Ing. Jaime Mesias Cajas
  • 2. 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 computador se les conoce como programas y no son más que una serie de operaciones que realiza el computador para llegar a un resultado, con un grupo de datos específicos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema especifico. Computador: Es un dispositivo electrónico utilizado para procesar datos y obtener resultados. Los datos y la información se pueden introducir en el computador como entrada (input) y a continuación se procesan para producir una salida (output). Ing. Jaime Mesias Cajas
  • 3. Programa: Es el conjunto de instrucciones escritas de algún lenguaje de programación y que ejecutadas secuencialmente resuelven un problema especifico. 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. •Lenguaje Maquina •Lenguaje de Bajo Nivel (Ensamblador) •Lenguaje de Alto Nivel Ing. Jaime Mesias Cajas
  • 4. La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema especifico. Ing. Jaime Mesias Cajas
  • 5. Lenguajes Algoritmicos •Gráficos •No Gráficos Definición del Problema 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 el computador; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa. Análisis del Problema Diseño del Algoritmo Codificación Prueba y Depuración Documentación Mantenimiento Ing. Jaime Mesias Cajas
  • 6. Análisis del Problema Una vez que se ha comprendido lo que se desea de el computador, es necesario definir: • Los datos de entrada. • Cual es la información que se desea producir (salida) • Los métodos y fórmulas que se necesitan para procesar los datos. Una recomendación muy practica es el que nos pongamos en el lugar del computador y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados. Ing. Jaime Mesias Cajas
  • 7. Diseño del Algoritmo Las características de un buen algoritmo son: • Debe tener un punto particular de inicio. • Debe ser definido, no debe permitir dobles interpretaciones. • Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema. • Debe ser finito en tamaño y tiempo de ejecución. Ing. Jaime Mesias Cajas
  • 8. Codificación La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas, en un código reconocible por el computador, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel. Ing. Jaime Mesias Cajas
  • 9. Prueba y Depuración Los errores humanos dentro de la programación de computadores son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración. Ing. Jaime Mesias Cajas
  • 10. Documentación Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. 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). Ing. Jaime Mesias Cajas
  • 11. Mantenimiento Se lleva acabo 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. Ing. Jaime Mesias Cajas
  • 12. Tipos De Datos 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. Ing. Jaime Mesias Cajas
  • 13. Tipos de Datos Simples 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). Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas. Ing. Jaime Mesias Cajas
  • 14. Expresiones Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Por ejemplo: a + (b + 3)/c 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 Ing. Jaime Mesias Cajas
  • 15. Operadores y Operandos Operadores: Son elementos que relacionan de forma diferente, los valores de una o más variables y/o constantes. Es decir, los operadores nos permiten manipular valores. Operadores Aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes). 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. Ing. Jaime Mesias Cajas
  • 16. 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 12 mod 7 5 4 + 2 * 5 14 Ing. Jaime Mesias Cajas
  • 17. Prioridad de los Operadores Aritméticos Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro hacia fuera, el paréntesis mas interno se evalúa primero. Dentro de una misma expresión los operadores se evalúan en el siguiente orden. 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. Ing. Jaime Mesias Cajas
  • 18. Ejemplos: 1) 4 + 2 * 5 = 14 2) 23 * 2 / 5 = 9.2 3) 46 / 5 = 9.2 4) 3 + 5 * (10 - (2 + 4)) = 23 5) 3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23 6) 3.5 + 5.09 - 14.0 / 40 = 5.09 7) 3.5 + 5.09 - 3.5 = 8.59 - 3.5 = 5.09 8) 2.1 * (1.5 + 3.0 * 4.1) = 28.98 9) 2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98 Ing. Jaime Mesias Cajas
  • 19. Operadores Relaciónales: Se utilizan para establecer una relación entre dos valores. 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 alfanuméricos). 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, Distinto = Igual Ing. Jaime Mesias Cajas
  • 20. 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 de expresiones no válidas: a < b < c 10 < 20 < 30 True < 30 (No es válido porque tiene diferentes operandos) Ing. Jaime Mesias Cajas
  • 21. Operadores Lógicos: Estos operadores se utilizan para establecer relaciones entre valores lógicos. Estos valores pueden ser resultado de una expresión relacional. Operadores Lógicos And Y && Or O | | Not Negación ! Ing. Jaime Mesias Cajas
  • 22. Operador And (&&) Operando1 Operador Operando2 Resultado T AND T T T F F F T F F F F Operador Or ( | | ) Pipe Operando1 Operador Operando2 Resultado T OR T T T F T F T T F F F Operador Not ( ! ) OperandoResultado T F F T Ejemplos: (a < b) and (b < c) (10<20) and (20<30) T and T Ing. Jaime Mesias Cajas
  • 23. Prioridad de los Operadores Lógicos Not And Or Prioridad de los Operadores en General 1.- ( ) 2.- ^ 3.- *, /, Mod, Not 4.- +, -, And 5.- >, <, > =, < =, < >, =, Or Ejemplos: a = 10; b = 12; c = 13; d =10 1) ((a > b) or (a < c)) and ((a = c) or (a >= b)) F T F F T F F 2) ((a >= b) or (a < d)) and (( a >= d) and (c > d)) F F T T F T F 3) not (a = c) and (c > b) Ing. Jaime Mesias Cajas
  • 24. Identificadores Representan los datos de un programa (constantes, variables, tipos de datos). Un identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria en el computador, que nos permite accesar a su contenido. Ejemplo: Nombre Num_hrs Calif2 (No confundir con variable) Reglas para formar un Identificador •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 el underscore ( _ ) están permitidos después del primer carácter. •La longitud de identificadores puede ser de hasta 256 caracteres. Ing. Jaime Mesias Cajas
  • 25. Constantes y Variables Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa. Ejemplo: PI = 3.1416 Variable: Es un espacio en la memoria del computador que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambiar durante la ejecución del programa. Para poder reconocer una variable en la memoria del computador, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo. Ejemplo: area = PI * radio ^ 2 Las variables son : el radio, el área y la constate es PI Ing. Jaime Mesias Cajas
  • 26. Clasificación de las Variables Ing. Jaime Mesias Cajas
  • 27. Por su Contenido Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos. Ejemplo: iva = 0.15 pi = 3.1416 costo = 2500 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. ok = 1 < 2 es_seguro = b > 3 Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres especiales). Ejemplo: letra = ’a apellido = ’lopez’ direccion = ’Av. Libertad #190’ Ing. Jaime Mesias Cajas
  • 28. 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: resultado = a + b / c Contadores: Se utilizan para llevar el control del numero de ocasiones en que se realiza una operación o se cumple una condición. Con los incrementos generalmente de uno en uno. Ejemplo: veces = veces + 1 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. Ejemplo: suma = suma + b Ing. Jaime Mesias Cajas
  • 29. ESTRUCTURAS ALGORITMICAS 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: Ing. Jaime Mesias Cajas
  • 30. Estructuras Secuenciales La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de la siguiente forma: Inicio Accion1 Accion2 . . AcciónN Fin Ing. Jaime Mesias Cajas
  • 31. Asignación: La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma: Simples: Consiste en pasar un valor constante a una variable (a = 15) Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a = a + 1) Acumulador: Consiste en usarla como un sumador en un proceso (a = a + b) De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a = c + b * 2 / 4). Ing. Jaime Mesias Cajas
  • 32. Lectura: La lectura consiste en recibir desde un dispositivo de entrada (el teclado) un valor. Esta operación se representa en un pseudo có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 (monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudo código como sigue: Escribir “El resultado es:”, R Donde “El resultado es:” es un mensaje que se desea aparezca y R es una variable que contiene un valor. Ing. Jaime Mesias Cajas
  • 33. Problemas Secuenciales Suponga que un individuo quiere invertir su capital en un banco y desea saber cuanto dinero ganará después de un mes si el banco paga a razón de 2% mensual. Análisis Datos de entrada Capital a invertir (cap_invertir) Interés pagado por el banco = 2% mensual Datos de salida Ganancia obtenida en un mes (ganancia) Algoritmo Inicio Entero cap_invertir Real ganancia Leer cap_invertir ganancia = cap_invertir * 0.02 Escribir ganancia Fin Ing. Jaime Mesias Cajas
  • 34. Un vendedor recibe un sueldo base mas un 10% extra por comisión de sus ventas, el vendedor desea saber cuanto 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. Análisis Datos de entrada Sueldo base del vendedor (sueldo_base) Comision por venta = 10% de las ventas Realizo 3 ventas : Venta1, Venta2 y Venta3 Datos de salida Valor de la comision de las ventas (comision) Sueldo a recibir (sueldo_recibir) Consideraciones •Para calcular el valor de la comision, se debe concocer el total de las ventas •Total de las ventas es la suma acumulativa de cada una de las ventas. •La comision corresponde al 10% del total acumulado de las ventas •El sueldo a recibir es la suma del sueldo base más la comision de las ventas. Ing. Jaime Mesias Cajas
  • 35. Algoritmo Inicio Entero sueldo_base, venta1, venta2, venta3 Entero total_venta Real comision, sueldo_recibir Leer sueldo_base, venta1, venta2, venta3 total_venta = venta1 + venta2 + venta3 comision = total_venta * 0.10 sueldo_recibir = sueldo_base + comision Escribir sueldo_recibir, comision Fin Ing. Jaime Mesias Cajas
  • 36. Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto deberá pagar finalmente por su compra. Analisis Datos de entrada El total de la compra (total_compra) Descuento ofrecido por la tienda = 15% sobre el total de la compra Datos de salida Total a pagar por la compra (total_pagar) Consideraciones El descuento es el 15 del valor total comprado Descuento = total_compra * 0,15 Ing. Jaime Mesias Cajas
  • 37. Algoritmo Inicio Entero total_compra Real descuento, total_pagar Leer total_compra descuento = total_compra * 0.15 total_pagar = total_compra - descuento Escribir total_pagar Fin Ing. Jaime Mesias Cajas
  • 38. 1)Un alumno desea saber cual será su nota final en el curso de Introducción a la programación. Dicha nota se compone de los siguientes porcentajes: 55% del promedio de sus tres notas parciales. 30% de la nota del examen final. 15% de la nota de un trabajo final. 2) Un profesor conoce la cantidad de hombres y mujeres del curso de Algoritmos, desea saber que porcentaje de hombres y que porcentaje de mujeres hay en su grupo de estudiantes. Ing. Jaime Mesias Cajas
  • 39. 1) Dada un cantidad en pesos, obtener la equivalencia en dólares, asumiendo que la unidad cambiaría es un dato desconocido. 2) La presión, el volumen y la temperatura de una masa de aire se relacionan por la formula: masa = (presión * volumen)/(0.37 * (temperatura + 460)) Escribir un algoritmo que calcule dicha fórmula. 3) Calcular el numero de pulsaciones que una persona debe tener por cada 10 segundos de ejercicio, si la formula es: num. pulsaciones = (220 - edad)/10 4) Calcular el nuevo sueldo de un empleado si obtuvo un incremento del 25% sobre su sueldo anterior. Ing. Jaime Mesias Cajas
  • 40. 5) En un hospital existen tres áreas: Ginecología, Pediatría, Traumatología. El presupuesto anual del hospital se reparte conforme a la sig. tabla: Área Porcentaje del presupuesto Ginecología 40% Traumatología 30% Pediatría 30% Obtener la cantidad de dinero que recibirá cada área, para cualquier monto presupuestado. 6) 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%. 7) 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. 8) 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. Ing. Jaime Mesias Cajas
  • 41. 9) Un alumno desea saber cual será su promedio general en los tres cursos más difíciles que cursa y cual será el promedio que obtendrá en cada una de ellas. Estas materias se evalúan como se muestra a continuación: La calificación de Matemáticas se obtiene de la sig. manera: Examen 90% Promedio de tareas 10% En esta materia se pidió un total de tres tareas. La calificación de Física se obtiene de la sig. manera: Examen 80% Promedio de tareas 20% En esta materia se pidió un total de dos tareas. La calificación de Programación se obtiene de la sig. manera: Examen 85% Promedio de tareas 15% En esta materia se pidió un promedio de tres tareas. Ing. Jaime Mesias Cajas
  • 42. Estructuras de Condicionales 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. Ing. Jaime Mesias Cajas
  • 43. Simples: Las estructuras condicionales simples se les conoce como “Tomas de decisión”. 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. Si <condición> entonces Acción(es) si no Acción(es) Fin si Donde: Si ………………… Indica el comando de comparación Condición………… Indica la condición a evaluar entonces……..…… Precede a las acciones a realizar cuando se cumple la condición acción(es)………… Son las acciones a realizar cuando se cumple o no la condición si no……………… Precede a las acciones a realizar cuando no se cumple la condición Ing. Jaime Mesias Cajas
  • 44. Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o mas acciones. Múltiples: Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. 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 Accion(es) Fin Si Fin Si Ing. Jaime Mesias Cajas
  • 45. Estructura condicional EN CASO En Caso Variable Op1: Acción(es) Op2: Acción(es) . . OpN: acción Fin En Caso Ing. Jaime Mesias Cajas
  • 46. Ejemplo Selección Simple. Un hombre desea saber cuanto 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 $7.000, y en ese caso desea saber cuanto dinero tendrá finalmente en su cuenta. Datos de Entrada: Capital en Inversión (cap_inv) Valor del Interés (p_interes) Datos de Salida: Saldo en la cuenta (saldo) Consideraciones: Se debe calcular el valor del interés generado por el capital Ing. Jaime Mesias Cajas
  • 47. Algoritmo Inicio Entero cap_inv Real p_interes, ineres_calculado, saldo Leer p_interes, cap_inv saldo = cap_inv interes_calculado = cap_inv * p_interes SI interes_calculado > 7000 entonces saldo = cap_inv + interes_calculado Fin Si Escribir saldo Fin Ing. Jaime Mesias Cajas
  • 48. Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de las tres calificaciones es mayor o igual a 4.0; reprueba en caso contrario. Algoritmo Inicio Real Nota1, Nota2, Nota3 Real Promedio String Mensaje Leer Nota1, Nota2, Nota3 Promedio = (Nota1 + Nota2 + Nota3) / 3 Si promedio >= 4.0 entonces Mensaje = “Alumno Aprobado” si no Mensaje = “Alumno Reprobado” Fin si Escribir Mensaje Fin Ing. Jaime Mesias Cajas
  • 49. En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000 ¿ Cual será la cantidad que pagara una persona por su compra? Algoritmo Inicio Entero Compra Real Descuento, Tot_Pagar Leer Compra Si Compra > 1000 entonces Descuento = Compra * 0.2 si no Descuento = 0 Fin si Tot_Pagar = Compra – Descuento Escribir Tot_pagar Fin Ing. Jaime Mesias Cajas
  • 50. Un obrero necesita calcular su sueldo, el cual se obtiene de la sig. manera: Si trabaja 40 horas o menos se le paga $1600 por hora trabajada Si trabaja mas de 40 horas se le paga $1600 por cada una de las primeras 40 horas trabajadas y $2000 por cada hora extra. Algoritmo Inicio Entero Hora_trabajada, Hora_extra, Sueldo Leer Hora_trabajada Si Hora_trabajada > 40 entonces Hora_extra = Hora_trabajada - 40 Sueldo = Hora_extra * 2000 + 40 * 1600 si no Sueldo = Hora_trabajada * 1600 Fin-si Escribir Sueldo Fin Ing. Jaime Mesias Cajas
  • 51. Ejercicios propuestos 1) Escribir un algoritmo que lea dos números y los escriba en forma ascendente. 2) Una persona enferma, que pesa 70 kg, se encuentra en reposo y desea saber cuantas calorías consume su cuerpo durante todo el tiempo que realice una misma actividad. Las actividades que tiene permitido realizar son únicamente dormir o estar sentado en reposo. Los datos que tiene son que estando dormido consume 1.08 calorías por minuto y estando sentado en reposo consume 1.66 calorías por minuto. 3) Escribir un algoritmo que escriba el nombre de un articulo, clave, precio original y su precio con descuento. El descuento lo hace en base a la clave, si la clave es 01 el descuento es del 10% y si la clave es 02 el descuento es del 20% (solo existen dos claves). 4) Hacer un algoritmo que calcule el total a pagar por la compra de camisas. Si se compran tres camisas o más se aplica un descuento del 20% sobre el total de la compra y si son menos de tres camisas un descuento del 10% Ing. Jaime Mesias Cajas
  • 52. 1) En un supermercado se hace una promoción, mediante la cual el cliente obtiene un descuento dependiendo de un numero que se escoge al azar. Si el numero escogido es menor que 74 el descuento es del 15% sobre el total de la compra, si es mayor o igual a 74 el descuento es del 20%. Obtener cuanto dinero se le descuenta. 2) Una compañía de seguros esta abriendo un depto. de finanzas y estableció un programa para captar clientes, que consiste en lo siguiente: Si el monto por el que se efectúa la fianza es menor que $50 000 la cuota a pagar será por el 3% del monto, y si el monto es mayor que $50 000 la cuota a pagar será el 2% del monto. La afianzadora desea determinar cual será la cuota que debe pagar un cliente. 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. Ing. Jaime Mesias Cajas
  • 53. Estructuras Iterativas (Cíclicas) Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad especifica de veces. Esta 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: Ciclos con un Numero Determinado de Iteraciones: a) Para Ciclos con un Numero Indeterminado de Iteraciones: a) Mientras b) Repetir-Hasta Ing. Jaime Mesias Cajas
  • 54. Ciclos con un Numero Determinado de Iteraciones (Para) Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el ciclo. La forma de esta estructura es la siguiente: Para (Var_Control = Valor_Inicial ; Valor_Final ; Incremento_Var_Control) Accion 1 Accion 2 … Fin Para Donde: Var_Control es una variable que lleva la cuenta de las iteraciones. Valor_Inicial corresponde al primer valor que tomará Var_Control. Valor_Final corresponde al ultimo valor permitido para continuar iterando. Incremento_Var_Control corresponde al avance que tendrá Var_Control Ing. Jaime Mesias Cajas
  • 55. Ejemplo: Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Diseño Estructurado de Algoritmos. Alternativa 1 (Sin considerar iteración) Algoritmo Inicio Real Nota1, Nota2, Nota3, Nota4, Nota5, Nota6, Nota7 Real Promedio Leer Nota1, Nota2, Nota3, Nota4, Nota5, Nota6, Nota7 Promedio = (Nota1+ Nota2+ Nota3+ Nota4+ Nota5+ Nota6+ Nota7)/7 Escribir Promedio Fin Ing. Jaime Mesias Cajas
  • 56. Alternativa 2 (Considerar iteración) Algoritmo Inicio Real Nota Real Promedio, Suma Entero C_Nota, i Leer C_Nota Suma = 0 Para (i = 1 ; C_Nota ; 1) Leer Nota Suma = Suma + Nota Fin Para Promedio = Suma / C_Nota Escribir Promedio Fin Ing. Jaime Mesias Cajas
  • 57. ¿ Cual alternativa es mas interesante de implementar? ¿ Por que? Ing. Jaime Mesias Cajas
  • 58. Ejemplo Leer 10 números y obtener su cuadrado y su cubo. Algoritmo Inicio Entero Numero, Cuadrado, Cubo Entero i Para (i = 1 ; 10 ; 1) Leer Numero Cuadrado = Numero * Numero Cubo = Cuadrado * Numero Escribir Cuadrado, Cubo Fin Para Fin Ing. Jaime Mesias Cajas
  • 59. Leer 10 números e imprimir solamente los números positivos Leer 20 números e imprimir cuantos son positivos, cuantos negativos y cuantos neutros. Leer 15 números negativos y convertirlos a positivos e imprimir dichos números. Suponga que se tiene un conjunto de notas finales de un grupo de 40 alumnos. Escribir un algoritmo para calcule el promedio de las notas y la calificación final más baja de todo el grupo. Calcular y escribir la tabla de multiplicar de un numero cualquiera. Escribir el multiplicando, el multiplicador y el producto. Simular el comportamiento de un reloj digital, escribiendo la hora, minutos y segundos de un día desde las 0:00:00 horas hasta las 23:59:59 horas Ing. Jaime Mesias Cajas
  • 60. Ciclos con un Numero Indeterminado de Iteraciones ( Mientras, Repetir- Hasta) Son aquellos en que el numero de iteraciones no se conoce con exactitud, ya que esta dado en función de un dato dentro del programa. 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. La forma de esta estructura es la siguiente: Mientras (Condición) Acción_1 Acción_2 … Acción_N Fin Mientras Ing. Jaime Mesias Cajas
  • 61. Ejemplo Leer 10 números y obtener su cuadrado y su cubo. Algoritmo Inicio Entero Numero, Cuadrado, Cubo Entero i i = 1; Mientras (i <= 10) Leer Numero Cuadrado = Numero * Numero Cubo = Cuadrado * Numero Escribir Cuadrado, Cubo i = i + 1 Fin Para Fin Ing. Jaime Mesias Cajas
  • 62. 1)Una compañía de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su política de remuneraciones 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 cuanto dinero obtendrá en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cual será su remuneración final, tomando en cuenta su sueldo base y sus comisiones. 2) Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de interés. Cual será la cantidad de dinero que esta persona tendrá al cabo de un año si la ganancia de cada mes es reinvertida?. 3) Se desea obtener el promedio de g grupos que están en un mismo año escolar; si cada grupo puede tener n alumnos, cada alumno puede tener m materias y que en todas las materias se promedian tres notas 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. Ing. Jaime Mesias Cajas
  • 63. Repetir-Hasta: Esta es una estructura similar en algunas características, a la anterior. Repite un proceso una cantidad de veces, pero a diferencia del Mientras, el Repetir-Hasta lo hace hasta que la condición se cumple y no mientras, como en el Mientras. Por otra parte, esta estructura permite realizar el proceso cuando menos una vez, ya que la condición se evalúa al final del proceso, mientras que en la estructura 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: Repetir Acción_1 Acción_2 … Acción_N Hasta ( Condición) Ing. Jaime Mesias Cajas
  • 64. Repetir-Hasta: Esta es una estructura similar en algunas características, a la anterior. Repite un proceso una cantidad de veces, pero a diferencia del Mientras, el Repetir-Hasta lo hace hasta que la condición se cumple y no mientras, como en el Mientras. Por otra parte, esta estructura permite realizar el proceso cuando menos una vez, ya que la condición se evalúa al final del proceso, mientras que en la estructura 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: Repetir Acción_1 Acción_2 … Acción_N Hasta ( Condición) Ing. Jaime Mesias Cajas
  • 65. LENGUAJE C Fue creado por Dennis Ritchie en 1972 (UNIX) Deriva del lenguaje B de Ken Thompson En 1989 se unifican criterios, Ansi C. Características Es estructurado (subrutinas y estructuras de control) Es amigable, flexible y potente (Combina elementos de lenguaje de alto nivel y elementos de ensambladores.) Es eficiente Es portable Es compilado. Ing. Jaime Mesias Cajas
  • 66. Para escribir un programa en C hay que seguir los siguientes pasos: Diseñar el algoritmo que resuelve el problema Escribir el Código Fuente del programa (extensión .c)  Traducir de seudo lenguaje a código C  Esto se hace utilizando cualquier editor de texto. Generar Código Objeto del programa (extensión .obj)  El compilador traduce el programa fuente a lenguaje interno del computador  El compilador comprueba si hemos cometido algún error de sintaxis. Generar archivo ejecutable (Extensión .exe o .out)  Se ejecuta un programa llamado linker, que genera el archivo ejecutable. Ing. Jaime Mesias Cajas
  • 73. LAS FUNCIONES EN C. Las aplicaciones informáticas que habitualmente suelen contener decenas y aún cientos de miles de líneas de código fuente. A medida que los programas se van desarrollando y aumentan de tamaño, se convertirían rápidamente en sistemas poco manejables si no fuera por la modularización o programación descendente, que es el proceso consistente en dividir un programa muy grande en una serie de módulos mucho más pequeños y manejables. A estos módulos se les suele denominar de distintas formas (subprogramas, subrutinas, procedimientos, funciones, etc.) según los distintos lenguajes. El lenguaje C hace uso del concepto de función (function). Sea cual sea la nomenclatura, la idea es sin embargo siempre la misma: dividir un programa grande en un conjunto de subprogramas o funciones más pequeñas que son llamadas por el programa principal; éstas a su vez llaman a otras funciones más específicas y así sucesivamente. Ing. Jaime Mesias Cajas
  • 74. LAS FUNCIONES EN C. Una función de C es una porción de código o programa que realiza una determinada tarea y está asociada con un identificador o nombre, que se utiliza para referirse a ella desde el resto del programa. ¿POR QUÉ SE UTILIZAN? La división de un programa en unidades más pequeñas o funciones presenta –entre otras– las ventajas siguientes: Ing. Jaime Mesias Cajas
  • 75. LAS FUNCIONES EN C. 1. Modularización. 2. Ahorro de memoria y tiempo de desarrollo. 3. Independencia de datos y ocultamiento de información. Se suelen emplear subprogramas en los siguientes casos: En programas complejos: si un programa complejo se escribe sin subprogramas resulta difícil de entender. La división en subprogramas permite que nos centremos en cada momento en un problema más pequeño que el problema original. Cuando se repite dentro de un algoritmo algún tipo de tratamiento: de este modo describiremos como se hace el tratamiento una sola vez con un subprograma y realizaremos una llamada a éste cada vez que queramos usarlo. Ing. Jaime Mesias Cajas
  • 76. DEFINICIÓN DE FUNCIONES tipo_valor_retorno nombre_funcion (lista argumentos formales con tipos) { declaración de variables y/o de otras funciones codigo ejecutable return (expresión); // optativo } La primera línea recibe el nombre de encabezamiento (header) o cabecera, y el resto de la definición –encerrado entre llaves– es el cuerpo (body) de la función. Cada función puede disponer de sus propias variables, declaradas al comienzo de su código. Ing. Jaime Mesias Cajas
  • 77. DEFINICIÓN DE FUNCIONES Estas variables (Locales), por defecto sólo son visibles dentro del bloque en el que han sido definidas, se crean cada vez que se ejecuta la función y permanecen ocultas para el resto del programa. También se pueden hacer visibles a la función, variables globales definidas en otro archivo (o en el mismo archivo, (aunque no suele ser aconsejable, salvo en situaciones muy especiales). Ing. Jaime Mesias Cajas
  • 78. DEFINICIÓN DE FUNCIONES El código ejecutable es el conjunto de instrucciones que deben ejecutarse cada vez que la función es llamada. La lista de argumentos con tipos, también llamados argumentos formales, es una lista de declaraciones de variables, precedidas por su tipo correspondiente y separadas por comas (,). Los argumentos formales son la forma más natural y directa para que la función reciba valores desde el programa que la llama, correspondiéndose en número y tipo con otra lista de argumentos -los argumentos actuales (como veremos a continuación)- en el programa que realiza la llamada a la función. Los argumentos formales son declarados en el encabezamiento de la función, pero no pueden ser inicializados en él. Ing. Jaime Mesias Cajas
  • 79. DEFINICIÓN DE FUNCIONES Cuando una función es ejecutada, puede devolver al programa que la ha llamado un valor, el valor de retorno, cuyo tipo debe ser especificado en el encabezamiento de la función (si no se especifica, se supone por defecto el tipo int). Si no se desea que la función devuelva ningún valor, el tipo del valor de retorno deberá ser void. La sentencia return permite devolver el control al programa que llama. Puede haber varias sentencias return en una misma función (aunque deberemos intentar que aparezca una sola vez, al final de la función). Si no hay ningún return, el control se devuelve cuando se llega al final del cuerpo de la función. Le palabra clave return puede ir seguida de una expresión, en cuyo caso ésta es evaluada y el valor resultante devuelto al programa que llama como valor de retorno (si hace falta, con una conversión previa al tipo declarado en el encabezamiento). Los paréntesis que engloban a la expresión que sigue a return son optativos. Ing. Jaime Mesias Cajas
  • 80. Ejemplo double valor_abs( double x ) { double abs; if (x < 0.0) abs = -x; else abs = x; return ( abs ); } // archivo prueba.c #include <stdio.h> double valor_abs(double); // declaración void main (void) { double z, y; y = -30.8; z = valor_abs(y) + y*y; // llamada en una expresion } Ing. Jaime Mesias Cajas
  • 81. Funciones El efecto producido por la llamada a una función puede resumirse como:  Se evalúan las expresiones que aparezcan en los argumentos (parámetros reales).  Se crean las variables correspondientes a los parámetros formales.  Se asignan los valores calculados en 1) a los correspondientes parámetros formales.  Se crean las variables locales* al subprograma.  Se ejecuta el código correspondiente al subprograma.  Se destruyen las variables locales* y las correspondientes a los parámetros formales.  Se continúa el programa por la instrucción siguiente a la llamada al subprograma. Ing. Jaime Mesias Cajas
  • 82. DECLARACIÓN DE FUNCIONES. En principio, en C, la declaración de una función se puede hacer de tres maneras:  Mediante una llamada a la función. En efecto, cuando una función es llamada sin que previamente haya sido declarada o definida, esa llamada sirve como declaración suponiendo int como tipo del valor de retorno, y el tipo de los argumentos actuales como tipo de los argumentos formales. Esta práctica es muy peligrosa (es fuente de numerosos errores) y debe ser evitada.  Mediante una definición previa de la función. Esta práctica es segura si la definición precede a la llamada, pero tiene el inconveniente de que si la definición se cambia de lugar, la propia llamada pasa a ser declaración como en el caso a).  Mediante una declaración explícita, previa a la llamada. Esta es la práctica más segura y la que hay que tratar de seguir siempre. La declaración de la función se hace mediante el prototipo de la función, bien fuera de cualquier bloque, bien en la parte de declaraciones de un bloque. Ing. Jaime Mesias Cajas
  • 83. Problemas 1) Dos números a y b se dice que son amigos si la suma de los divisores de a (salvo él mismo) coincide con b y viceversa. Diseña un PROGRAMA (que utilice funciones) que tenga como entrada dos números naturales n y m y que muestre en la pantalla todas las parejas de números amigos que existan en el intervalo determinado por n y m. Ing. Jaime Mesias Cajas