Algoritmos Base de Datos
Algoritmos Base de Datos
Algoritmos Base de Datos
Qu son los operadores y los operando, sus tipos y las prioridades de ejecucin de los
mismos. Entrar
programas.
La siguiente documentacin pueden servir de apoyo a tutores o profesores, en su labor cotidiana de
enseanza y al estudiante, facilitarle el desarrollo de su capacidad analtica y creadora, para de esta
manera mejorar su destreza en la elaboracin de algoritmos que sirven como base para la codificacin
de los diferentes programas que tendr que desarrollar a lo largo de su carrera.
Contenido
Los posteriores artculos mostrarn el desarrollo del tema de algoritmo a manera de curso. Existen una
serie de documentacin adicional para refuerzo conceptual, dado parte importante en el proceso del
tema en cuestin.
La Esencia de la Lgica de Programacin (Omar Ivn Trejos Buritic)
Curso Aprende a Programar
QU ES ALGORITMO?
La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre de un
matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en
el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar
solucin a un problema especfico.
TIPOS DE ALGORITMOS?
Existen dos tipos y son llamados as por su naturaleza:
Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir los pasos del
proceso.
Lenguajes Algortmicos
Un Lenguaje algortmico es una serie de smbolos y reglas que se utilizan para describir de manera
explcita un proceso.
Tipos de Lenguajes Algortmicos
No Grficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo
(pseudocodigo).
INICIO
Edad: Entero
ESCRIBA cual es tu edad?
Lea Edad
SI Edad >=18 entonces
ESCRIBA Eres mayor de Edad
FINSI
ESCRIBA fin del algoritmo
FIN
El computador es una mquina que por s sola no puede hacer nada, necesita ser programada, es decir,
introducirle instrucciones u ordenes que le digan lo que tiene que hacer. Un programa es la solucin a
un problema inicial, as que todo comienza all: en el Problema. El proceso de programacin es el
siguiente: Dado un determinado problema el programador debe idear una solucin y expresarla usando
un algoritmo (aqu es donde entra a jugar); luego de esto, debe codificarlo en un determinado lenguaje
de programacin y por ltimo ejecutar el programa en el computador el cual refleja una solucin al
problema inicial. Esto es a grandes rasgos lo que hace el programador de computadores.
La parte que corresponde a este manual es la de: Dado un determinado problema debemos idear una
solucin y expresarla usando un ALGORITMO!.
Metodologa para la solucin de problemas por medio de computadora
o
o
o
o
Debe ser general, es decir, soportar la mayora de las variantes que se puedan presentar
en la definicin del problema.
Debe ser finito en tamao y tiempo de ejecucin.
Diseo del Algoritmo
Prueba de escritorio o Depuracin
Se denomina prueba de escritorio a la comprobacin que se hace de un algoritmo para saber si est
bien hecho. Esta prueba consiste en tomar datos especficos como entrada y seguir la secuencia
indicada en el algoritmo hasta obtener un resultado, el anlisis de estos resultados indicar si el
algoritmo est correcto o si por el contrario hay necesidad de corregirlo o hacerle ajustes.
3.- Entidades primitivas para el desarrollo de algoritmos
Para el proceso de Algoritmos es necesario aprender a desarrollar un conjunto de elementos.
Todo estos elementos con los cuales se construyen dichos algoritmos se basan en una disciplina
llamada: Programacin Estructurada.
Empecemos por conocer las reglas para cambiar frmulas matemticas a expresiones vlidas para la
computadora, adems de diferenciar constantes e identificadores y tipos de datos simples.
Tipos De Datos
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carcter, 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.
Identificadores
Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un
identificador es una secuencia de caracteres que sirve para identificar una posicin en la memoria de la
computadora, que permite acceder a su contenido.
Ejemplo:
Nombre
Num_hrs
Calif2
Reglas para formar un identificador
Debe comenzar con una letra (A a Z, maysculas o minsculas) y no deben contener espacios en
blanco.
Letras, dgitos y caracteres como la subraya ( _ ) estn permitidos despus del primer carcter.
La longitud de identificadores puede ser de varios caracteres. Pero es recomendable una longitud
promedio de 8 caracteres.
El nombre del identificador debe dar una idea del valor que contiene.
Constantes, variables y expresiones
Qu son las constantes, las variables y las expresiones en la programacin as como su
clasificacin.
Constantes
Una constante es un dato numrico o alfanumrico que no cambia durante la ejecucin del programa.
Ejemplo:
pi = 3.1416
Variable
Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante
la ejecucin de un proceso, su contenido puede cambiar durante la ejecucin del programa.
Para poder reconocer una variable en la memoria de la computadora, 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 area y la constate es pi
Clasificacin de las Variables
Por su contenido
Variables Numricas: Son aquellas en las cuales se almacenan valores numricos, positivos o
negativos, es decir almacenan nmeros del 0 al 9, signos (+ y -) y el punto decimal.
Ejemplo:
iva = 0.15 pi = 3.1416 costo = 2500
Variables Lgicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos
representan el resultado de una comparacin entre otros datos.
Variables Alfanumricas: Esta formada por caracteres alfanumricos (letras, nmeros y
caracteres especiales).
Ejemplo:
letra = a apellido = lopez direccion = Av. Libertad #190
Por su uso
Variables de Trabajo: Variables que reciben el resultado de una operacin matemtica completa
y que se usan normalmente dentro de un programa.
Ejemplo:
Suma = a + b /c
Contadores: Se utilizan para llevar el control del numero de ocasiones en que se realiza una
operacin o se cumple una condicin. Con los incrementos generalmente de uno en uno.
Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una
serie de valores que se van leyendo o calculando progresivamente.
Expresiones
Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y
nombres de funciones especiales.
Por ejemplo:
a + (b + 3) / c
Cada expresin toma un valor que se determina tomando los valores de las variables y constantes
implicadas y la ejecucin de las operaciones indicadas.
Una expresin consta de operadores y operandos. Segn sea el tipo de datos que manipulan, se
clasifican las expresiones en:
Aritmticas
Relacionales
Lgicas
5.- Operadores y Operandos
Qu son los operadores y los operando, sus tipos y las prioridades de ejecucin de los
mismos.
Operadores
Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es
decir, los operadores nos permiten manipular valores.
Operadores Aritmticos
Los operadores aritmticos permiten la realizacin de operaciones matemticas con los valores
(variables y constantes).
Los operadores aritmticos 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.
Operadores Aritmticos
+ Suma
- Resta
* Multiplicacin
/ Divisin
mod Modulo (residuo de la divisin entera)
Ejemplos:
Expresin
Resultado
7/2
3.5
12 mod 7
5
4+2*5
14
Prioridad de los Operadores Aritmticos
Todas las expresiones entre parntesis se evalan primero. Las expresiones con parntesis anidados se
evalan de dentro a fuera, el parntesis ms interno se evala primero.
Dentro de una misma expresin los operadores se evalan en el siguiente orden:
1. ^ Exponenciacin
2. *, /, mod Multiplicacin, divisin, modulo.
3. +, - Suma y resta.
Los operadores en una misma expresin con igual nivel de prioridad se evalan de izquierda a derecha.
Ejemplos:
4 + 2 * 5 = 14
3 + 5 * (10 - (2 + 4)) = 23
23 * 2 / 5 = 9.2
2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98
Operadores Relacionales
Se utilizan para establecer una relacin entre dos valores. Luego compara estos valores entre si y esta
comparacin produce un resultado de certeza o falsedad (verdadero o falso).
Los operadores relacionales comparan valores del mismo tipo (numricos o cadenas). Estos tienen el
mismo nivel de prioridad en su evaluacin.
Los operadores relacinales tiene menor prioridad que los aritmticos.
Tipos de operadores Relacionales
> Mayor que
< Menor que
> = Mayor o igual que
< = Menor o igual que
< > Diferente
= Igual
Ejemplos:
Si a = 10, b = 20, c = 30
a+b>c
Falso
a-b<c
Verdadero
a-b=c
Falso
a*b<>c
Verdadero
Ejemplos no lgicos:
a<b<c
10 < 20 < 30
T > 5 < 30
(no es lgico porque tiene diferentes operandos)
Operadores Lgicos
Estos operadores se utilizan para establecer relaciones entre valores lgicos. Estos valores pueden ser
resultado de una expresin relacional.
Tipos de operadores Lgicos
And Y
Or O
Not Negacin
Ejemplo:
Para los siguientes ejemplos T significa verdadero y F falso.
Operando1
T
Operador
AND
T
F
F
Operando1
T
Operando2
T
F
T
F
Operador Or Operador Or
Operador
Operando2
Or
T
T
F
F
T
F
F
Resultado
T
F
F
F
Resultado
T
T
T
F
Top Down
Tambin conocida como de arriba-abajo y consiste en establecer una serie de niveles de mayor a menor
complejidad (arriba-abajo) que den solucin al problema. Consiste en efectuar una relacin entre las
etapas de la estructuracin de forma que una etapa jerrquica y su inmediato inferior se relacionen
mediante entradas y salidas de informacin. Este diseo consiste en una serie de descomposiciones
sucesivas del problema inicial, que recibe el refinamiento progresivo del repertorio de instrucciones que
van a formar parte del programa.
La utilizacin de la tcnica de diseo Top-Down tiene los siguientes objetivos bsicos:
Simplificacin del problema y de los subprogramas de cada descomposicin.
Las diferentes partes del problema pueden ser programadas de modo independiente e incluso
por diferentes personas.
El programa final queda estructurado en forma de bloque o mdulos lo que hace mas sencilla su
lectura y mantenimiento.
Bottom Up
El diseo ascendente se refiere a la identificacin de aquellos procesos que necesitan computarizarse
con forme vayan apareciendo, su anlisis como sistema y su codificacin, o bien, la adquisicin de
paquetes de software para satisfacer el problema inmediato.
Cuando la programacin se realiza internamente y haciendo un enfoque ascendente, es difcil llegar a
integrar los subsistemas al grado tal de que el desempeo global, sea fluido. Los problemas de
integracin entre los subsistemas son sumamente costosos y muchos de ellos no se solucionan hasta
que la programacin alcanza la fecha limite para la integracin total del sistema. En esta fecha, ya se
cuenta con muy poco tiempo, presupuesto o paciencia de los usuarios, como para corregir aquellas
delicadas interfaces, que en un principio, se ignoran. Aunque cada subsistema parece ofrecer lo que se
requiere, cuando se contempla al sistema como una entidad global, adolece de ciertas limitaciones por
haber tomado un enfoque ascendente.
Uno de ellos es la duplicacin de esfuerzos para acceder el software y mas an al introducir los datos.
Otro es, que se introducen al sistema muchos datos carentes de valor.
Un tercero y tal vez el mas serio inconveniente delenfoque ascendente, es que los objetivos globales de
la organizacin no fueron considerados y en consecuencia no se satisfacen.
Entonces
La diferencia entre estas dos tcnicas de programacin se fundamenta en el resultado que presentan
frente a un problema dado.
Imagine una empresa, la cual se compone de varios departamentos (contabilidad, mercadeo, ), en
cada uno de ellos se fueron presentando problemas a los cuales se le dieron una solucin basados en un
enfoque ascendente (Bottom Up): creando programas que satisfacan slo el problema que se
presentaba.
Cuando la empresa decidi integrar un sistema global para suplir todas las necesidades de todos los
departamentos se dio cuenta que cada una de las soluciones presentadas no era compatible la una con
la otra, no representaba una globalidad, caracterstica principal de los sistemas.
Como no hubo un previo anlisis, diseo de una solucin a nivel global en todos sus departamentos,
centralizacin de informacin, que son caractersticas propias de un diseo Descendente (Top Down) y
caractersticas fundamentales de los sistemas; la empresa no pudo satisfacer su necesidad a nivel
global.
La creacin de algoritmos es basado sobre la tcnica descendente, la cual brinda el diseo ideal para la
solucin de un problema.
7.- Tecnicas para la formulacin de algoritmos. Diagrama de flujo
Una de las dos herramientas ms comunes en el diseo de algoritmos es el diagrama de flujo. Entrar
Diagrama de Flujo
Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin se puede decir que es la
representacin detallada en forma grfica de como deben realizarse los pasos en la computadora para
producir resultados.
Esta representacin grfica se da cuando varios smbolos (que indican diferentes procesos en la
computadora), se relacionan entre si mediante lneas que indican el orden en que se deben ejecutar los
procesos. Los smbolos utilizados han sido normalizados por el instituto norteamericano de
normalizacin (ANSI):
Smbolo
Descripcin
Indica el inicio y el final de nuestro diagrama de flujo.
Indica la entrada y salida de datos.
Smbolo de proceso y nos indica la asignacin de un valor
en la memoria y/o la ejecucin de una operacin
aritmtica.
Indica la salida de informacin por impresora.
Conector dentro de pgina. Representa la continuidad del
diagrama dentro de la misma pgina.
Conector fuera de pagina. Representa la continuidad del
diagrama en otra pagina.
Indica la salida de informacin en la pantalla o monitor.
Qu es el pseudocdigo y sus ventajas frente a los diagramas de flujos y las definiciones de los diagramas estructurados y las
estructuras algortmicas. Entrar
Pseudocdigo
Mezcla de lenguaje de programacin y espaol (o ingles o cualquier otro idioma) que se emplea, dentro
de la programacin estructurada, para realizar el diseo de un programa. En esencial, el Pseudocdigo
se puede definir como un lenguaje de especificaciones de algoritmos.
En esencial, el Pseudocdigo se puede definir como un lenguaje de especificaciones de algoritmos.
Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un
problema determinado. El Pseudocdigo utiliza palabras que indican el proceso a realizar.
Ventajas de utilizar un Pseudocdigo a un Diagrama de Flujo
Ocupa menos espacio en una hoja de papel
Permite representar en forma fcil operaciones repetitivas complejas
Es muy fcil pasar de Pseudocdigo a un programa en algn lenguaje de programacin.
Si se siguen las reglas se puede observar claramente los niveles que tiene cada operacin.
Diagramas estructurados (Nassi-Schneiderman)
El diagrama estructurado N-S tambin conocido como diagrama de chapin es como un diagrama de
flujo en el que se omiten las flechas de unin y las cajas son contiguas. Las acciones sucesivas se
pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes
acciones en una caja. Un algoritmo se represente en la siguiente forma:
Estructuras Algortmicas
Las estructuras de operacin de programas son un grupo de formas de trabajo, que permiten, mediante
la manipulacin de variables, realizar ciertos procesos especficos que nos lleven a la solucin de
problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:
La estructura secuencial es aquella en la que una accin (instruccin) 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
El anterior ejemplo es un sencillo algoritmo de un problema cotidiano dado como muestra de una
estructura secuencial. Ahora veremos los componentes que pertenecen a ella:
Asignacin
La asignacin 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 asignacin se puede clasificar de la
siguiente forma:
En la anterior declaracin de variables Contador, Edad e I son declaradas de tipo entero; Salario_Basico
es una variable de tipo real, Opcion es de tipo carcter y la variable Direccion est declarada como una
variable alfanumrica de cadena de caracteres.
En el momento de declarar constantes debe indicarse que lo es y colocarse su respectivo valor.
CONSTANTE Pi 3.14159
CONSTANTE Msg Presione una tecla y continue
CONSTANTE ALTURA 40
Cuando se trabaja con algoritmos por lo general no se acostumbra a declarar las variables ni tampoco
constantes debido a razones de simplicidad, es decir, no es camisa de fuerza declarar las variables. Sin
embargo en este curso lo haremos para todos los algoritmos que realicemos, con esto logramos
hacerlos ms entendibles y organizados y de paso permite acostumbrarnos a declararlas ya que la
mayora de los lenguajes de programacin (entre ellos el C++) requieren que necesariamente se
declaren las variables que se van a usar en los programas.
Veamos algunos ejemplos donde se aplique todo lo que hemos visto hasta el momento sobre
algoritmos:
Ejemplo 1: Escriba un algoritmo que pregunte por dos nmeros y muestre como resultado la suma de
estos. Use Pseudocdigo y diagrama de flujos.
Ejemplo 2: Escriba un algoritmo que permita conocer el rea de un tringulo a partir de la base y la
altura. Exprese el algoritmo usando Pseudocdigo y diagrama de flujos.
Explicamos las distintas estructuras poniendo ejemplos tanto en diagrama de flujo como en
pseudocdigo.
Las estructuras condicionales comparan una variable contra otro(s)valor (es), para que en base al
resultado de esta comparacin, se siga un curso de accin dentro del programa. Cabe mencionar que la
comparacin se puede hacer contra otra variable o contra una constante, segn se necesite. Existen
tres tipos bsicos, las simples, las dobles y las mltiples.
Simples:
Las estructuras condicionales simples se les conoce como Tomas de decisin. Estas tomas de decisin
tienen la siguiente forma:
Pseudocdigo:
Diagrama de flujo:
Dobles:
Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en
funcin del cumplimiento o no de una determinada condicin. Se representa de la siguiente forma:
Pseudocdigo:
Diagrama de flujo:
Donde:
Si:Indica el comando de comparacin
Condicin : Indica la condicin a evaluar
Entonces : Precede a las acciones a realizar cuando se cumple la condicin
Instruccin(es):Son las acciones a realizar cuando se cumple o no la condicin
si no :Precede a las acciones a realizar cuando no se cumple la condicin
Dependiendo de si la comparacin es cierta o falsa, se pueden realizar una o ms acciones.
Mltiples:
Las estructuras de comparacin mltiples, son tomas de decisin especializadas que permiten comparar
una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones
especificas. La forma comn es la siguiente:
Pseudocdigo:
Diagrama de flujo:
Diagrama de flujo:
Diagrama de flujo:
Se pide leer tres notas del alumno, calcular su definitiva en un rango de 0-5 y enviar un mensaje donde
diga si el alumno aprob o reprob el curso. Exprese el algoritmo usando Pseudocdigo y diagrama de
flujos.
Pseudocdigo:
INICIO
Not1, Not2, Not 3 :REAL
Def: REAL
LEA Nota1, Nota2, Nota3
Def (Not1 + Not2 + Not3) /3
Si Def < 3 entonces
Se desea escribir un algoritmo que pida la altura de una persona, si la altura es menor o igual a 150 cm
enve el mensaje: Persona de altura baja; si la altura est entre 151 y 170 escriba el mensaje:
Persona de altura media y si la altura es mayor al 171 escriba el mensaje: Persona alta. Exprese el
algoritmo usando Pseudocdigo y diagrama de flujos.
Pseudocdigo:
INICIO
Altura: ENTERO
ESCRIBA Cul es tu altura?
LEA Altura
Si Altura <=150 entonces
ESCRIBA persona de altura baja
Sino
Si Altura <=170 entonces
ESCRIBA persona de altura media
Sino
Si Altura>170 ENTONCES
Explicamos las tres posibles estructuras cclicas; Para, mientras, repetir. Complementamos
con tres ejemplos para la correcta asimilacin de estas estructuras.
Se llaman problemas repetitivos o cclicos a aquellos en cuya solucin es necesario utilizar un mismo
conjunto de acciones que se puedan ejecutar una cantidad especfica de veces. Esta cantidad puede ser
fija (previamente determinada por el programador) o puede ser variable (estar en funcin de algn dato
dentro del programa). Los ciclos se clasifican en:
Ciclos con un Numero Determinado de Iteraciones
(Para): Son aquellos en que el nmero de iteraciones se conoce antes de ejecutarse el ciclo. La
forma de esta estructura es la siguiente:
Pseudocdigo
Diagrama de Flujos
Son aquellos en que el numero de iteraciones no se conoce con exactitud, ya que esta dado en funcin
de un dato dentro del programa.
Mientras Que: Esta es una estructura que repetir un proceso durante N veces, donde N
puede ser fijo o variable. Para esto, la instruccin se vale de una condicin que es la que debe
cumplirse para que se siga ejecutando. Cuando la condicin ya no se cumple, entonces ya no se
ejecuta el proceso. La forma de esta estructura es la siguiente:
Pseudocdigo
Diagrama de Flujos
Diagrama de Flujos
Ejemplo 1:
Realizar un algoritmo que muestre los nmeros de uno en uno hasta diez usando una estructura Para.
Exprese el algoritmo usando Pseudocdigo y diagrama de flujos.
Pseudocdigo
Diagrama de Flujos
Ejemplo 2:
Usando una estructura Mientras, realizar un algoritmo que escriba los nmeros de uno en uno hasta 20
Pseudocdigo
Diagrama de Flujos
Ejemplo 3:
Realizar un algoritmo que pregunte al usuario un nmero comprendido en el rango de 1 a 5. El
algoritmo deber validar el numero, de manera que no contine la ejecucin del programa mientras no
se escriba un numero correcto.
Pseudocdigo
Diagrama de Flujos
ejercicios
seala los errores que hacen invlidas las siguientes instrucciones de asignacin.
7.
5 := Numero
xCoord + 3.5 := 2.7
Codigo := 5
Codigo := 'ABC'
Numero := '5'
Numero := 3.4
Numero := '2' + '3'
Posicion := Numero := 1
Encontrado := 'false'
Suponga que las variables Alpha
donde cada nmero despus de los dos primeros es la suma de los dos anteriores. Escriba un
programa para calcular todos los nmeros de Fibonacci menores de 5000.
11. La compaa Rinky Gamusino vende actualmente 200 gamusinos al mes con un beneficio de 300
euros por gamusino. Ahora la compaa gasta 2000 euros al mes en publicidad y tiene unos costes de
funcionamiento de 1000 euros al mes que no dependen del volumen de ventas. Si la compaa dobla
la cantidad gastada en publicidad, las ventas se incrementan en un 20 por ciento. Escriba un programa
que imprima, bajo cabeceras apropiadas, la cantidad gastada en publicidad, las ventas realizadas y el
beneficio neto. Comience con el estado actual de la compaa y doble sucesivamente la cantidad
gastada en publicidad hasta que el beneficio neto comience a declinar. La salida debe incluir las
cantidades hasta la primera vez que el beneficio neto empieza a disminuir.
Estructuras Secuenciales
Se les denomina as, por que; son estructuras en un programa, que despus de ejecutar una instruccin o
sentencia, continan con la otra, hasta llegar al final del programa. Los ejemplos que hemos visto
anteriormente, son ejemplos de estructuras secuenciales. Veamos otros ejemplos:
Ejemplo 3.3
Disee un programa que calcula el cuadrado y el cubo de tres nmeros introducidos por el usuario.
#include
#include
main()
{
int x, x1, x2, y, y1, y2, z, z1, z2;
clrscr();
printf(\tPROGRAMA QUE CALCULA EL CUADRADO Y EL CUBO DE 3 NUMEROS\n\n);
printf(Introduzaca el primer nmero:\n);
scanf(%d, &x);
printf(Ahora ingrese el siguiente nmero:\n);
scanf(%d, &y);
printf(Y el tercer nmero es:\n);
scanf(%d, &z);
x1=x*x;
x2=x*x*x;
y1=y*y;
y2=y*y*y;
z1=z*z;
z2=z*z*z;
printf(*********************************\n);
printf(**Numero****Cuadrado*****Cubo****\n);
printf(**%d **** %d ***** %d ****\n, x, x1, x2);
printf(**%d **** %d ***** %d ****\n, y, y1, y2);
printf(**%d **** %d ***** %d ****\n, z, z1, z2);
printf(*********************************\n);
getch();
return 0;
}
Ejemplo 3.4
Una empresa necesita conocer el sueldo neto a pagar a un empleado. Teniendo como entrada el salario
produzca una salida de sueldo neto. Los descuentos a aplicar son: ISSS 5%, AFP 7% y Renta 10%, estos
descuentos son sobre el salario, y es sueldo neto es la diferencia entre el salario y el total de las retenciones:
#include
#include
main()
{
float sueldo, afp, isss, renta, sn;
char nombre[50];
clrscr();
printf(Introduzca el Nombre del empleado:\n);
scanf(%s, nombre);
printf(Su sueldo es:\n);
scanf(%f, &sueldo);
afp=sueldo*0.07;
isss=sueldo*0.05;
renta=sueldo*0.10;
sn=sueldo-(afp+isss+renta);
printf(El empleado %s\n, nombre);
printf(Posee un sueldo neto de %.2f\n, sn);
getch();
return 0;
}
Ejemplo 3.5
Disee un programa que calcule el promedio y la suma de tres nmeros ingresados por el usuario:
#include
#include
main()
{
float x, y, z, sum, prom;
clrscr();
printf(El Primer nmero es:\n);
scanf(%f, &x);
printf(Ahora el segundo nmero:\n);
scanf(%f, &y);
printf(El Ultimo numero es:\n);
scanf(%f, &z);
sum=x+y+z;
prom=sum/3;
printf(*****************************************\n);
printf(**La suma es %.2f y el promedio es %.2f*\n, sum, prom);
printf(*****************************************\n);
getch();
return 0;
}
Estructuras Selectivas
Los pequeos programas que hemos diseada hasta el momento, han sido del tipo secuencial, es decir, una
sentencia se ejecuta despus de otra, hasta el final del programa.
Pero en la vida diaria muchas veces debemos elegir entre un camino y otro para llegar a nuestro destino. Lo
mismo pasa en programacin, al realizar alguna actividad, nuestro programa debe ser capaz de elegir uno u
otro camino, a seguir dependiendo del valor de alguna condicin evaluada.
Para ello C, dispone de tres tipos de 3 tipos de estructuras selectivas, la cuales son:
int num;
printf(Ingrese el nmero:\n);
scanf(%d, &num);
if(num%2==0)
printf(ES PAR\n\n);
else
printf(ES IMPAR\n\n);
getch();
return 0;
}
Ejemplo 3.8
Disee un programa, que dada la nota de alumno, imprima en la pantalla un comentario sobre esa nota. El
criterio para los comentarios es el siguiente:
Si nota es mayor o igual a 9 Excelente
Si nota es mayor o igual a 8 Muy Bueno
Si nota es mayor o igual a 7 Bueno
Si nota es mayor o igual a 6 Regular
Si nota es menor que 6 Necesita Mejorar
#include
#include
main()
{
float nota;
printf(Digite la nota, porfavor:\n);
scanf(%f, ¬a);
>> Si son mujeres, y su estatura es mayor de a 1.50 m y su peso es mayor o igual a 130 lb, su dosis ser: 25%
de la estatura y 75% de su peso. De lo contrario, la dosis ser: 35% de la estatura y 65% de su peso. La dosis
debe ser expresada en gramos.
#include
#include
main()
{
float peso, estatura, dosis;
char sexo;
printf(Introduzca el sexo del alumno(a):\n);
scanf(%c, &sexo);
printf(Peso:\n);
scanf(%f, &peso);
printf(La estatura es de:\n);
scanf(%f, &estatura);
if(sexo==H || sexo==h')
{
if(estatura>1.60 && peso >=150)
{
dosis=(0.20*estatura)+(0.8*peso);
printf(La dosis de este alumno ser : %.2f gramos\n\n, dosis);
}
else
{
dosis=(0.3*estatura)+(0.7*peso);
printf(La dosis de este alumno sera %.2f gramos\n\n, dosis);
}
}
else
{
if(estatura>1.50 && peso >=130)
{
dosis=(0.25*estatura)+(0.75*peso);
printf(La dosis de esta alumna debe ser de %.2f gramos\n\n, dosis);
}
else
{
dosis=(0.35*estatura)+(0.65*peso);
printf(La dosis de esta alumna debe ser de %.2f gramos\n\n, dosis);
}
}
getch();
return 0;
}
SELECCIN MLTIPLE
Como su nombre lo indica, permite seleccionar entre varios caminos para llegar al final. En este caso se
pueden elegir un camino o accin a ejecutar de entre varios posibles que se debe de evaluar, llamada selector.
Sintaxis:
switch(selector)
{
case Etiqueta A:
Accin A;
break;
case Etiqueta B:
Accin B;
break;
case Etiqueta n:
Accin n;
break;
default:
Excepcin;
break;
}
En donde:
Selector: Variables, expresiones simples de tipo ordinal, (enteros y caracteres int y char-)
Etiqueta: Tiene que ser del mismo tipo de datos de selecto. Estas deber ser constantes nicas y diferentes de
otras.
Excepcin: Es opcional.
Ejemplo 3.10
Disee un programa en C, que dado un nmero del 1 al 3, muestre en pantalla y en letras, el mismo nmero:
#include
#include
main()
{
int n;
clrscr();
printf(El Nmero es:\n);
scanf(%d, &n);
switch(n)
{
case 0: puts(Cero);
break;
case 1: puts(Uno);
break;
case 2: puts(Dos);
break;
case 3: puts(Tres);
break;
default: puts(Dato No valido);
break;
}
getch();
return 0;
}
programacin modular
divisin:
, suponiendo
es el siguiente: divida
. (Si
entre
,
y el
) Entonces
. [Nota: Si
comn mltiplo de y
y se calcula usando
Escriba un programa que lea dos enteros y llame a un procedimiento que calcule y devuelva su
mximo comn divisor y su mnimo comn mltiplo. El programa principal debe mostrar los dos
enteros junto con su mximo comn divisor y su mnimo comn mltiplo.
3. El director de prstamos de un banco necesita un programa para determinar cundo un solicitante de
un prstamo est cualificado para obtener distintos tipos de prstamos: prestamos automovilsticos,
para reformas inmobiliarias, hipotecas, etc. El criterio para la concesin del prstamo depende del
tipo de prstamo; por ejemplo, un prstamo para una hipoteca de la vivienda requiere que el
solicitante tenga un sueldo base que sea al menos el 20 por cierto del precio de compra de la casa,
debe haber trabajado al menos 5 aos, debe tener unos ingresos anuales de al menos el 40 por cierto
del precio de la compra de la casa, y si tiene otros crditos, stos no deben superar el 20 por ciento del
sueldo anual.
1. Desarrolle una especificacin para el problema incluyendo los criterios establecidos para los
distintos tipos de prstamos. Para ello, debe obtener la informacin de un banco local o de
otras fuentes.
2. Desarolle un plan de diseo descendente para un programa que resuelva el problema de la
concesin de un crdito.
3. Codifique y pruebe los subprogramas y el programa completo que implemente el plan de
diseo.
Algoritmo
Informalmente un algoritmo es simplemente una manera de resolver un problema, o un conjunto de acciones
que la computadora debe llevar a cabo a fin de resolver un problema.
Mas formalmente, un Algoritmo es una secuencia de acciones bien definidas y efectivas que al ser
ejecutadas, siempre produce un resultado y siempre termina en un tiempo finito. Veamos en detalle estas
caractersticas de los algoritmos.
1. Secuencia Ordenada
El prximo paso a ejecutar esta definido sin ambigedades. El algoritmo debe tener comienzo y fin, puede
haber mas de un punto de terminacin.
4. Estructura Secuencial
Accin 1 -> Accin 2 -> Accin 3 -> ...
La solucin del problema consiste en la solucin de subproblemas parciales, en forma consecutiva. Es decir
que la accin k no se inicia hasta haber terminado la accin k-1. En muchos casos, para realizar la accin k
necesitaremos el resultado de la accin k-1. En nuestra notacin en pseudocdigo, indicaremos las acciones
secunciales separadas por ";":
Accin
Accin
Accin
Accin
1;
2;
3;
4;
Las acciones propiamente dichas van desde operaciones de entrada/salida (como ingresar nmeros por
teclado o imprimir un nmero por pantalla), operaciones matemticas o de manejo de caracteres, otras
estructuras algortmicas y hasta otros algoritmos ya resueltos (llamado procedimientos, funciones o
subrutinas en los distintos lenguajes). Por ejemplo: supongamos que queremos dividir dos nmeros a y b...
Ingresar nmero a;
Ingresar nmero b;
Dividir a y b;
Imprimir el resultado;
5. Estructura Condicional
En este caso la solucin del problema conduce a que, segn se cumpla cierta condicin o no, se ejecute una u
otra de dos acciones diferentes.
Si Condicin Entonces
Accin1
Sino
Accin2
FinSi
Ejemplo: mismo problema anterior, pero slo cuando b es distinto de 0.
Ingresar nmero a;
Ingresar nmero b;
Si b es igual a 0
Imprimir mensaje de error;
Sino
Dividir a y b;
Imprimir el resultado;
FinSi
6. Estructura Repetitiva
En este caso, la solucin del problema consiste en la repeticin de una accin ms
sencilla mientras se cumpla cierta condicin. Resulta evidente que para que esta
sucesin de acciones termine, la accin misma debe modificar por lo menos una de las variables que
intervienen en la condicin. Cada vez que se ejecuta la accin la llamaremos iteracin.
Mientras Condicin Hacer
Accin
FinMientras
Como se observa en el diagrama de bloques, la evaluacin de la condicin se realiza antes de ejecutar cada
una de las iteraciones; es decir que si la condicin no se cumple la primera vez que llegamos a este lazo, la
accin no se ejecutar nunca.
Ejemplo: calcular el factorial de un nmero n.
Ingresar nmero n;
Inicializar factorial en 1;
Mientras n sea mayor que 1
multiplicar factorial por n;
guardar resultado en factorial;
disminuir n en 1;
FinMientras
Imprimir factorial;
Notar que hasta este momento no hemos hecho mencin de ningn lenguaje en particular. Esto se debe a que
el planteo de algoritmos es un paso previo a la escritura del cdigo del programa. Por supuesto que los
distintos lenguajes brindan otras estructuras algortmicas adems de las bsicas que pueden facilitarnos la
vida a la hora de plantear la solucin ms apropiada.
Programacin
Serie de completa de pasos involucrados en la resolucin de un problema utilizando el computador. No debe
confundirse programacin con codificacin, este ltimo trmino se refiere al proceso de escribir
instrucciones en un lenguaje de programacin particular.
2. Especificacin de salidas
Descripcin de los datos de salida del programa:
Que valores deben ser producidos
Formato: precisin, cifras significativas, ubicacin en la pantalla
Rango de validez para cada dato de entrada
Ubicacin en la pantalla, ttulos, encabezados, etc.
3. Procesamiento especial
Verificar y procesar ciertas condiciones que podran llevar a error o que requieran un procesamiento
especial.
8. Esquema de la solucin
Excepto para problemas muy sencillos, un programa no se compone de una nica tarea, sino de varias tareas
interrelacionadas. Ejemplo, sistema en DACE para manejo de estudiantes y notas, no es un nico programa,
sino que tiene varios sub-programas que realizan distintas tareas: entrada de datos, ordenamiento de la
informacin, impresin de horarios, calculo de ndice, impresin de reportes, etc.
La mayora de los programas que veremos inicialmente en el curso son muy sencillos. Pero mas adelante
habr que descomponer un problema en sub-partes y hacer un esquema de la solucin.
10.
Codificacin
11.Eliminacin de Errores
El programador principiante pronto se dar cuenta de que el problema no se ha resuelto una vez que se ha
codificado el programa. Debemos ubicar y corregir los inevitables errores.
12.
Prueba y validacin
Que el programa arroje resultados no es suficiente. Hay que asegurarse de que los resultados sean correctos,
en todos los posibles casos.
13.
Documentacin
Se refiere a la documentacin tcnica, manuales, ayuda y todo documento escrito referente al programa y su
funcionamiento. Es un proceso continuo desde que se comienza la definicin del problema. Este paso tiene
relevancia para proyectos grandes de produccin de software.