Sei sulla pagina 1di 41

LOGO

Docente:
Ing. Alexis Rocha Haro, MGTI
Ingeniero en Sistemas Computacionales
Magíster en Gerencia de Tecnologías de la Información
Email: arocha@upse.edu.ec
alefroch22@hotmail.com
La Libertad, Santa Elena, Ecuador
Fundamentos y Lenguaje C
Bibliografía

Bibliografía Básica:
Joyanes Aguilar Luis (2008). Fundamentos de
Programación: Algoritmos, Estructuras de Datos y
Objetos (4ta. Edición) Madrid. Editorial: McGraw Hill.
Páginas: 45 – 81.
Bibliografía Recomendada:
Corona Nakamura María Adriana, Ancona Valdez María
de los Ángeles (2011). Diseño de algoritmos y su
codificación en lenguaje C (1era. Edición) México.
Editorial: McGraw Hill. Páginas: 27 – 127, 285 – 290.
Cairó Battistutti Osvaldo (2006). Fundamentos de
Programación: Piensa en C (1era. Edición) México.
Editorial: PEARSON Educación. Páginas: 49 – 84, 89 –
128.
¿Qué se quiere aprender al finalizar el Capítulo 3?

Definir un análisis adecuado para un mejor diseño y


resolución de problemas planteados.
Representar y desarrollar algoritmos que empleen todas
las estructuras algorítmicas, para ser utilizadas en el
desarrollo de ejercicios prácticos.
LOGO
Capítulo 3
Unidad 3 – Algoritmos y Pseudocódigos

CONTENIDOS
3.1. Análisis del Problema, Diseño del
Algoritmo, Resolución del Problema.
3.2. Representación del Algoritmo.
3.3. Estructuras Algorítmicas.
3.4. Ejercicios de Aplicación.
3.5. Evaluación de la Unidad.
Análisis del Problema, Diseño del
Algoritmo, Resolución del Problema
RESOLUCIÓN DE PROBLEMAS DE PROGRAMACIÓN
Existen 3 fases para la identificación y resolución de
problemas:
 Fase de Identificación (qué nos plantean).
 Fase de Resolución del Problema.
 Fase de Implementación (realización) en un lenguaje de
programación.

Fase de Resolución del Problema


Esta fase incluye: Análisis del Problema, así como el diseño
y posterior verificación del algoritmo.

3.1. Análisis del Problema, Diseño del Algoritmo, Resolución del Problema
Análisis del Problema:
Se debe tener una idea clara sobre lo que se solicita y
determinar los datos necesarios para conseguirlo,
definiendo datos de entrada y salida, para ello es
conveniente responder a las siguientes preguntas:
¿Qué entradas se requieren (tipo y cantidad)?: Datos de
Entrada (DE)
¿Qué método produce la salida deseada?: Modelo
Matemático (MM)
¿Cuál es la salida deseada (tipo y cantidad)?: Datos de
Salida (DS)
Diseño del Algoritmo:
Un algoritmo puede ser definido como la secuencia
ordenada de pasos, sin ambigüedades, que conducen a la
resolución de un problema dado y expresado en lenguaje
natural, todo algoritmo debe ser:

Preciso: Indicando el orden de realización de cada uno de


los pasos.
Definido: Si se sigue el algoritmo varias veces
proporcionándoles los mismos datos, se deben obtener
siempre los mismos resultados.
Finito: Al seguir el algoritmo, este debe terminar en algún
momento, es decir, tener un número finito de pasos.
Este método de diseño de algoritmos en etapas, yendo de
los conceptos generales a los de detalle, se conoce como el
método descendente (Top-Down)

En un algoritmo se debe considerar 3 partes:


Entrada: Información dada al algoritmo.
Proceso: Operaciones o cálculos necesarios para encontrar
la solución del problema.
Salida: Respuestas dadas por el algoritmo o resultados
finales de los procesos realizados.
Especificaciones de Entrada:
 ¿Qué datos son de entrada?
 ¿Cuántos datos se ingresarán?
 ¿Cuántos son datos de entrada válidos?

Especificaciones de Salida:
¿Cuáles son los datos de salida?
¿Cuántos datos de salida se producirán?
¿Qué formato y precisión tendrán los resultados?
Representación del Algoritmo
ALGORITMO
 Es una serie de operaciones detalladas y no ambiguas, a ejecutar
paso a paso y que conducen a la resolución de un problema.
 Los Algoritmos pueden representarse gráficamente empleando
diferentes formas y/o técnicas, de esta manera, son fácilmente
comprensibles, también los algoritmos son más universales, pues no
dependen de un lenguaje de programación específico.
 Los métodos más usados para representar un algoritmo son:
 Diagramas de Flujo de Datos (DFD)
 Diagramas de N-S (Nassi - Schneidermann)
 Lenguaje de Especificaciones de Algoritmos
 Pseudocódigo
 Lenguaje natural (español)
 Fórmulas Matemáticas

3.2. Representación del Algoritmo


Características de los Algoritmos
FINITUD
 Si se sigue un algoritmo, se debe terminar en algún momento.
PRECISIÓN
 Un algoritmo debe ser preciso e indicar el orden de realización de
cada paso.
ENTRADAS Y SALIDAS
 Un algoritmo debe estar definido, si se sigue un algoritmo 2 veces,
se debe obtener el mismo resultado cada vez.
EFECTIVIDAD
 La definición de un algoritmo describe 3 partes: entrada, proceso y
salida.
 Un algoritmo implica generalmente alguna entrada (algo que existe y
es utilizado por el algoritmo), también produce resultados
denominados como salida.
Técnicas de Representación
Ejemplos – Parte 1
Ejemplos – Parte 2
Ejemplos – Parte 3
Estructuras Algorítmicas
> Secuenciales o Simples:
Entrada, Asignación (Proceso) y Salida

> Condicionales, Selectivas o Alternativas:


SIMPLES: If (Si)
Estructuras DOBLES: If – Else (Si – Caso contrario)
MÚLTIPLES: If Anidados, Switch o Case(En caso de)

> Cíclicas o Repetitivas:


While (Mientras), Do While (Hacer mientras),
For (Para)

Cualquier programa puede ser desarrollado utilizando una sola


estructura o la combinación de varias estructuras, sean: Secuenciales,
Condicionales o Cíclicas.
3.3. Estructuras Algorítmicas
Estructuras Secuenciales
 Son aquellas en la que una acción, tarea, proceso o 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 finalizar el proceso.

ENTRADA (Lectura)
 Consiste en recibir un valor (dato) desde un dispositivo de entrada
(teclado). Ej.: Leer(a); Leer(b);
SALIDA (Escritura)
 Consiste en enviar por un dispositivo de salida (monitor o impresora),
un resultado o mensaje. Ej.:
Escribir(“El resultado es: ”); Escribir(R);
Escribir(“El resultado es: ”, R);
ASIGNACIÓN (Proceso)
Consiste en el paso de valores o resultados a una zona de memoria (RAM),
dicha zona será reconocida con el nombre de la variable que recibe el
valor, la asignación se clasifica de la siguiente forma:
 Simples: Consiste en pasar un valor constante a una variable (a=15)
 Contador: Consiste en usarla como un verificador del número 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 se puede recibir el resultado de una operación
matemática que involucre una o muchas variables (a=c+b*2/4)
Estructuras Condicionales, Selectivas o
Alternativas
SENTENCIA IF
Simples
 La sentencia If realiza una condición o pregunta, si la condición se
cumple, se ejecuta uno o varios procesos por Verdadero, caso
contrario no ejecuta nada por Falso.
Dobles
 La sentencia If realiza una condición o pregunta, puede ejecutar un
proceso por Verdadero u otro proceso por Falso.
 NOTA: La sentencia If valida la pregunta por Verdadero.

If Simple (If) If Doble (If - Else)


MÚLTIPLES (IF ANIDADOS)
 La Sentencia If Anidada es similar a la Sentencia If tradicional,
solo que incluye una o más condiciones dentro de la primera
condición, sea por Verdadero y/o Falso.
MÚLTIPLES (SWITCH O CASE)
 La Sentencia Switch valida una sola variable, de esa validación se
pueden ejecutar varios procesos; es decir, se pueden dar múltiples
opciones o salidas.
CASO ESPECIAL DE LA SENTENCIA SWITCH O CASE
 Es el mismo procedimiento que la Sentencia Case (Switch), sólo que
añade un último proceso por defecto (por default), en caso obligado
de que ninguna entrada se realice o se ejecute.
USO DE SENTENCIAS SWITCH EN MENÚS
 Es la misma ejecución que la Sentencia Switch, solo que reemplaza
los Procesos por Funciones.
 Las Funciones se las declara por separado y es como definir otra
función Main().
Estructuras Cíclicas o Repetitivas
BUCLES
 Un Bucle o Ciclo es una sentencia que se realiza repetidas veces a una
parte aislada de código, hasta que la condición asignada a dicho bucle deje
de cumplirse.
 Generalmente, un Bucle es utilizado para hacer una acción repetida sin
tener que escribir varias veces el mismo código, ahorrando tiempo, deja el
código más claro y facilita su modificación en el futuro.
 El Bucle y los Condicionales representan la base de la programación
estructurada, los 3 bucles más utilizados son:
> While (Mientras)
> Do While (Hacer Mientras)
> For (Para)

BUCLES ANIDADOS
 Un Bucle es un proceso o sentencia que se repite N veces, anidado significa
que está un bucle dentro de otro.
Ejemplo:
Puede darse el caso de que una sentencia esté dentro de una misma clase de
sentencia; así como también, una sentencia esté dentro de otra sentencia
diferente.
SENTENCIA WHILE (MIENTRAS)
 La Sentencia While primero realiza una pregunta o condición, si
ésta se cumple (es Verdadera) entra a realizar un bucle repetitivo,
finaliza cuando la condición o pregunta es Falso.

Sintaxis:
while(condición)
{
sentencias;

sentencias;
}
SENTENCIA DO WHILE (HACER MIENTRAS)
 La Sentencia Do While primero realiza uno o varios procesos, luego
realiza una pregunta o condición, si ésta se cumple (es Verdadera)
entra a realizar un bucle repetitivo, finaliza cuando la condición o
pregunta es Falso.

Sintaxis:
do
{
sentencias;

sentencias;
}while(condición);
SENTENCIA FOR (PARA)
 La sentencia For es la más completa de las estructuras de control,
tiene a su vez, los siguientes parámetros:

Sintaxis:
for( valor_inicial; condición o pregunta; incremento o decremento )
{
sentencias;
}
Ejercicios de Aplicación 1
1) Realice un programa que ingrese 2 números por teclado y presente su número mayor.
2) Realizar un programa que ingrese un número y presente en pantalla si es PAR o
IMPAR.
3) Realice un programa que ingrese un número y calcule su raíz cuadrada.
4) Elabore un flujograma en el ingrese 3 números, se debe obtener la suma y promedio,
cuando presente los resultados debe presentar «La Suma es: » y «El Promedio es: ».
5) Ingrese 2 números por teclado, presente por pantalla y realice el producto de ambos
números, finalice cuando ingrese el número 9999.
6) Ingresar un número entre 1 al 7, de acuerdo al número ingresado presente por
pantalla el día de la semana.
7) Realizar un programa que lea un número comprendido entre 1 y 5, presente por
pantalla la vocal A, E, I, O, U, en función del número leído. El programa debe avisar al
usuario en caso de que el valor introducido no esté en el intervalo (1 al 5).
8) Elabore un programa que lea una letra del abecedario y presente al usuario si se
trata de una vocal o no.
9) Escriba un programa que permita ingresar un número cualquiera e indique si el mismo
es positivo, negativo o 0 (cero).
10) Ingrese un número comprendido entre 0 y 7, de acuerdo a su ingreso calcule y
presente en pantalla su respectivo binario en sistema octal.

3.4. Ejercicios de Aplicación


Ejercicios de Aplicación 2
11) Ingrese 2 números por teclado, presente por pantalla y calcule 20 sumas.
12) Escriba un programa que calcule la fórmula general de la raíz.
13) Escriba un programa donde se ingrese el tiempo necesario para un cierto
proceso en horas, minutos y segundos. Se calcula el costo total del proceso sabiendo
que el costo por segundo es de $0,25 (debe salir por pantalla el tiempo expresado
en horas, minutos, segundos, el costo por segundo y el costo total).
14) Una farmacia aplica al precio de los remedios el 10% de descuento. Hacer un
programa que ingresado el precio, calcule el descuento y el precio final, sacando por
pantalla la siguiente información:
Precio: $ 5
Descuento: $ - 0,50 (10%)
Total a Pagar: $ 4,50
15) Escribir los 20 primeros múltiplos de 5, calcule y presente la suma acumulada.
16) Elabore un programa que presente en pantalla 4 columnas que deben contener
las 4 primeras potencias de los 20 primeros números.
17) Elabore un programa que resuelva los siguientes productos notables: (EDITAR)
a. (x + y)2
b. (x - y)2
c. ()
Ejercicios de Aplicación 3
18) Elabore un programa que permita ingresar por teclado, el nombre y el salario de
un asociado, proporcione como salida el nombre y cuota del asociado, teniendo en
cuenta la siguiente tabla de cuota:
Salario Cuota
Menos de $150 $2,00
Entre $150 y $300 $2,50 + 1,5% del excedente sobre 150
Más de $300 $3,00 + 2,5% del excedente sobre 300
19) Elabore un programa de manera que a partir de las coordenadas de 3 puntos en
el plano que se debe ingresar por teclado, indique si esa terna de 3 puntos forman o
no, un triángulo equilátero.
20) Elabore un programa que calcule el salario mensual de los obreros, para ello se
ingresa por teclado el nombre y horas trabajadas en la semana por el obrero, el
salario se calcula de la siguiente manera:
• Si trabaja 40 horas o menos, se le paga $5 por cada hora trabajada.
• Si trabaja más de 40 horas, se le paga $5 por las primeras 40 horas y $6,50 por
cada hora superior a las 40.
21) Ingresar 2 números enteros positivos y presentar en pantalla la suma de esos
números si el 1er. número es mayor que el 2do. número; y el producto en caso de ser
el 2do. número mayor que el 1er. número.
Ejercicios de Aplicación 4
22) Ingresar 2 números enteros positivos y presentar en pantalla el producto de
esos 2 números por sumas sucesivas (4 x 3 = 12, 4+4+4=12)
23) Elabore un programa que a partir del ingreso de un número positivo N
cualquiera, de como salida el valor de S = 1 + ½ + 1/3 + … + 1/N
24) Se desea desarrollar un sistema que lleve el control de las votaciones
estudiantiles en la UPSE, donde se ingrese los siguientes datos:
SEXO(1=Masculino, 2=Femenino), EDAD, ESTADO CIVIL(1=Soltero, 2=Casado)
El programa debe calcular e imprimir lo siguiente:
a. El número de hombres solteros que pueden votar.
b. El número de hombres casados que pueden votar.
c. El número de mujeres solteras que pueden votar.
d. El número de mujeres casadas que pueden votar.
e. El total de personas solteras que pueden votar.
f. El total de personas casadas que pueden votar.
g. El total de personas que pueden votar.
Ejercicios de Aplicación 5
25) En una central telefónica se procesan las llamadas realizadas de la siguiente
manera:
• Por cada llamada se ingresa el código de llamada (entero > 0)
• Tipo de llamada (1=hábil, 2=feriado)
• Duración en minutos (entero > 0)
• Los importes de las llamadas son los siguientes:
Tipo de Día Primeros 3 minutos Minuto Adicional
Hábil $0,10 cada minuto $0,02 cada minuto adicional
Feriado $0,15 cada minuto $0,03 cada minuto adicional
Se pide elaborar un diagrama de flujo con la correspondiente codificación que
presente en pantalla:
a. El importe a abonar por cada llamada (código e importe).
b. La cantidad de llamadas que superen los 3 minutos.
c. El porcentaje de llamadas que superen los 3 minutos (sobre el total de llamadas
ingresadas).
Ejercicios de Aplicación 6
26) Para identificar las ventas que se realizan diariamente en un negocio de venta de
automóviles, se usa la variable de entrada CODIGO DE VENTAS, la cual se debe validar con los
siguientes valores:
Código de Venta Significado
1 Identifica las ventas de autos nuevos.
2 Identifica las ventas de autos usados.
3 Identifica las ventas de repuestos.
La comisión de un vendedor es la siguiente:
• 3% en la venta de autos nuevos, sin que éste sobrepase los $20000.
• 5% del precio en venta de autos usados, asegurándole al menos $12000.
• 6% del precio en venta de repuestos.
Con estos antecedentes se pide:
Elaborar un diagrama de flujo con su respectiva codificación en el que se ingrese por teclado el
nombre del vendedor, el código de ventas y el valor de ventas; y produzca como salida:
a. Tipo de venta y comisión: El tipo de venta es una cadena de caracteres cuyo valor va a
depender del código de venta de la siguiente manera:
• Si el Código de Venta = 1 Tipo de Venta = «NUEVOS»
• Si el Código de Venta = 2 Tipo de Venta = «USADOS»
• Si el Código de Venta = 3 Tipo de Venta = «REPUESTOS»
b. Promedio de venta y promedio de comisión.
c. El valor de la venta más alta y el valor de la venta más baja.
Ejercicios de Aplicación 7
27) Para las elecciones de la ASO-ESCUELA de la Universidad, se tienen 3 listas de
candidatos codificados como A, B, C y 3 mesas electorales codificadas como 1, 2, 3
respectivamente.
Se pide elaborar un diagrama de flujo y la codificación, que controle los resultados
de estas elecciones, de forma que se ingrese por teclado el código de la mesa
electoral, el código de la lista y el número de votos debidamente validados y
presente como salida:
a. Por cada mesa electoral, el código de la mesa electoral, el código de la lista y el
total de votos en esa mesa, de la lista que mayor votos obtuvo.
b. El total de votos por cada una de las listas, indicando la lista ganadora de las
elecciones.
28) Ingresar un número cualquiera y presentarlo en forma invertida.
29) Genere la tabla de multiplicar del 5 (del 1 al 12).
30) Ingrese por teclado un número entre 1 al 12, calcule y presente su respectiva
tabla de multiplicar (1-12).
31) Realice un menú de opciones que genere las 4 operaciones básicas desde el 1
hasta el 12 (Funciones).
Tarea 1 – 1/1 Semestre y 1/2 Semestre
Ejercicio 13:
Escriba un programa donde se ingrese el tiempo necesario para un cierto proceso en
horas, minutos y segundos. Se calcula el costo total del proceso sabiendo que el
costo por segundo es de $0,25 (debe salir por pantalla el tiempo expresado en
horas, minutos, segundos, el costo por segundo y el costo total).
Al finalizar el programa deberá repetir con las siguientes opciones (C=Continuar,
S=Salir).
Ejercicio 23:
Elabore un programa que a partir del ingreso de un número positivo N cualquiera, de
como salida el valor de la serie, por ejemplo: S = 1 + ½ + 1/3 + … + 1/N. Calcule y
presente la serie y el resultado.
Al finalizar el programa deberá repetir con las siguientes opciones (333=Continuar,
444=Salir).
Ejercicio 31:
Ingresar por teclado un número N positivo (6-12), genere y presente por pantalla
las 4 operaciones básicas desde el 1 hasta el 12.
Al finalizar el programa deberá repetir con las siguientes opciones (SI=Repetir el
programa, NO=Finalizar el programa).
Tarea 2 – 1/1 y 1/2 Semestre
Ejercicio 26:
Para identificar las ventas que se realizan diariamente en un negocio de venta de automóviles, se usa la
variable de entrada CODIGO DE VENTAS, la cual se debe validar con los siguientes valores:
Código de Venta Significado
1 Identifica las ventas de autos nuevos.
2 Identifica las ventas de autos usados.
3 Identifica las ventas de repuestos.
La comisión de un vendedor es la siguiente:
• 3% en la venta de autos nuevos, sin que éste sobrepase los $20000.
• 5% del precio en venta de autos usados, asegurándole al menos $12000.
• 6% del precio en venta de repuestos.
Con estos antecedentes se pide:
Elaborar un diagrama de flujo con su respectiva codificación en el que se ingrese por teclado el nombre del
vendedor, el código de ventas y el valor de ventas; y produzca como salida:
a. Tipo de venta y comisión: El tipo de venta es una cadena de caracteres cuyo valor va a depender del código
de venta de la siguiente manera:
• Si el Código de Venta = 1 Tipo de Venta = «NUEVOS»
• Si el Código de Venta = 2 Tipo de Venta = «USADOS»
• Si el Código de Venta = 3 Tipo de Venta = «REPUESTOS»
b. Promedio de venta y promedio de comisión.
c. El valor de la venta más alta y el valor de la venta más baja.
Al finalizar el programa deberá repetir para gestionar otra venta, con las siguientes opciones (C=Continuar,
S=Salir).
Ejercicios en Clase – 1/1 y 1/2 Semestre
Ejercicio 1:
Realizar un programa que ingrese la edad de una persona, si la edad es
de 1 a 12 años será “Niño o Infante”, si la edad es de 13 a 18 años será
“Joven o Adolescente”, caso contrario será “Adulto o Mayor de edad”.
Información en la Web
https://sites.google.com/site/474introduccionalaprogramacion/resolucion-de-problemas-
con-c/analisis-del-problema-1
http://www.buenastareas.com/ensayos/Analisis-De-Problemas-Fundamentos-De-
Programacion/3474154.html
http://www.slideshare.net/mmescobarh/principios-de-programacin
http://www.conocimientosweb.net/zip/article814.html
http://es.wikipedia.org/wiki/Resoluci%C3%B3n_de_problemas_de_programaci%C3%B3n
https://sites.google.com/site/tecnochiapa2012/unidad-i/2-2-representacion-de-algoritmos-
grafica-y-pseudocodigo
http://virtual.uaeh.edu.mx/repositoriouaeh/paginas/Introduccion_Algoritmos/representacin
_de_un_algoritmo.html
http://es.wikipedia.org/wiki/Bucle_(programaci%C3%B3n)
http://algoritmosextremos.blogspot.com/2012/02/estructuras-algoritmicas.html
http://algoritmosreu.netai.net/estructuras_algoritmicas.html
*http://programavideojuegos.blogspot.com/2013/05/25-ejercicios-resueltos-de-
estructuras.html
*http://jorgesanchez.net/programacion/ejerciciosc/sencillos.html
http://es.slideshare.net/csandovalrivera/unidad-5-estructuras-algoritmicas
LOGO Fundamentos de Programación

Potrebbero piacerti anche