Вы находитесь на странице: 1из 96

Programacin I

Perfil del Docente


Calificaciones
Definicin de Programacin

Programacin es el Proceso mediante el cual una aplicacin


informtica es desarrollada.

El Proceso de Programacin contempla las siguientes fases:


Definicin del
Problema
Anlisis
del Problema
Diseo de la
Solucin
Codificacin
Prueba y
Depuracin
Documentacin

Implementacin

Mantenimiento
Fases de Programacin

1. Definicin del Problema.


Consiste en la obtencin sin ambigedades de una visin
general y clara del problema. Asimismo, ayuda a identificar
los elementos claves del problema y los de la futura solucin.

Las respuestas a las siguientes preguntas son claves para la


correcta definicin de un problema:
a) Que entradas se requieren, de que tipo, en que orden y
que cantidad?
b) Que salidas se desean, de que tipo, en que orden y que
cantidad?
c) Que mtodo o formula produce o puede producir las
salidas deseadas?
continuacin

Fases de Programacin

2. Anlisis del Problema.


Es la comprensin a fondo del problema y sus detalles y es
un requisito para lograr una solucin eficaz.

En esta fase se define formal y correctamente la Entrada que


recibir el programa, la Salida que producir y el proceso
necesario para su solucin.
continuacin

Fases de Programacin

3. Diseo de la Solucin.
En esta fase se disea la lgica de la solucin a usar, o sea,
como har el programa la tarea que se desea automatizar
usando los datos de entrada para generar los datos de
salida.

El proceso de Diseo se realiza en dos pasos:


a) Elaboracin del Algoritmo. Un algoritmo es una secuencia
lgica y cronolgica de pasos encaminados a resolver un
problema. Las acciones bsicas que puede llevar a cabo
un algoritmo son: pedir datos, desplegar datos, evaluar
condiciones y ejecutar operaciones.

b) Realizacin de Pruebas de Escritorio. Comprobaciones a


mano del algoritmo planteado con datos y resultados de
pruebas conocidos, para simular su ejecucin y evaluar
continuacin

Fases de Programacin

4. Codificacin.
En este paso se traduce el algoritmo ya estructurado,
verificado y comprobado a mano, al lenguaje de
programacin que vaya a utilizarse. Slo se convierten las
acciones del algoritmo en instrucciones usando la sintaxis de
un lenguaje particular.

La Codificacin tiene dos etapas:


a) La Digitacin. El acto de teclear el algoritmo codificado,
se lleva a cabo para almacenar el programa en la
memoria del computador y pueda ser aceptado por esta.

b) La Compilacin. Eliminacin de los errores gramaticales


segn las reglas de construccin de instrucciones
particulares del propio lenguaje (sintaxis).
continuacin

Fases de Programacin

5. Prueba y Depuracin.
Despus de compilado el programa, este es sometido a
pruebas a fin de determinar si resuelve o no el problema
planteado en forma satisfactoria. Para ello, se le suministran
datos de prueba y se verifican los resultados.

En caso de que el programa no funcione correctamente,


debe depurarse realizando corridas de prueba continuas con
datos y respuestas ya establecidas, verificando todas las
posibles alternativas hasta obtener el resultado esperado.

De acuerdo a los resultados obtenidos, puede ser necesario


retroceder a fases previas del desarrollo.
continuacin

Fases de Programacin

6. Documentacin.
La Documentacin es la gua o la comunicacin escrita en
sus variadas formas, ya sea en enunciados, procedimientos,
dibujos o diagramas y sirve para ayudar a comprender o usar
un programa o para facilitar las futuras modificaciones.

La documentacin se divide en tres partes:


. Documentacin Interna.
. Documentacin Externa.
. Manual del Usuario.
continuacin

Fases de Programacin

7. Implementacin.
El programa ya probado, revisado y mejorado se considera
terminado y puede utilizarse con un alto grado de confianza
para resolver los problemas que dieron origen a su creacin.

En caso de que se este automatizando alguna tarea manual,


sta ltima se desecha para emplear solamente el programa.
continuacin

Fases de Programacin

8. Mantenimiento.
El programa debe revisarse cada cierto tiempo para realizar
los ajustes necesarios. Estos cambios pueden deberse por la
dinmica propia del problema, por la naturaleza del cdigo,
las exigencias del tiempo o las modernas necesidades que
podran presentarse con frecuencia, ya que se considera que
ningn problema es esttico.
Programacin Orientada a
Objeto
LaProgramacin Orientada a Objetos es un paradigma de
programacin que define los programas en trminos de
clases de objetos, que son entidades que
combinanestado(propiedades o datos), comportamiento
(procedimientos omtodos) eidentidad(propiedad del
objeto que lo diferencia del resto). Los objetos colaboran
entre ellos para realizar tareas, lo que permite que los
programas y mdulos sean ms fciles de escribir, mantener
y reutilizar.

Asimismo, esta programacin vincula diferentes conceptos


tales como clases, objetos, mtodos, propiedades, estados,
herencia, encapsulacin entre otros, generando cada vez
interrelaciones en pro del funcionamiento del sistema
principal, definiendo el programa como un conjunto de estos
objetos relacionados entre si.
Ventajas de la Programacin
Orientada a Objeto
Uniformidad. La representacin de los objetos implica tanto
el anlisis como el diseo y la codificacin de los mismos.

Comprensin. Los datos que componen los objetos y los


procedimientos que los manipulan estn agrupados en
clases, que se corresponden con las estructuras de
informacin que el programa trata.

Flexibilidad. Al relacionar los procedimientos que


manipulan datos con los datos, cualquier cambio que se
realice sobre ellos quedar reflejado en cualquier lugar
donde estos datos aparezcan.

Estabilidad. Dado que permite un tratamiento diferenciado


de aquellos objetos que permanecen constantes en el tiempo
sobre aquellos que cambian con frecuencia, permite aislar
continuacin

Ventajas de la Programacin
Orientada a Objeto
Reusabilidad. La nocin de objeto permite que programas
que traten las mismas estructuras de informacin reutilicen
las definiciones de objetos empleadas en otros programas e
incluso los procedimientos que los manipulan. De esta forma
el desarrollo de un programa puede ser una simple
combinacin de objetos ya definidos donde estos estn
relacionados de una manera particular.
Desventajas de la
Programacin
Orientada a Objeto
Limitaciones para el Programador. La mayora de los
programadores no estn familiarizados con los conceptos de
la tecnologa.

Tamao excesivo en las aplicaciones resultantes. La


gran mayora de equipos de computo cuentan con
capacidades tanto de almacenamiento como de memoria lo
suficientemente buena como para ejecutar la mayora de las
aplicaciones que puedan desarrollarse con la tecnologa
orientada a objetos, sin embargo, existen casos en los que
no se cumple.

Velocidad de ejecucin. Una aplicacin innecesariamente


pesada en muchas ocasiones es ms lenta de ejecutar que
una aplicacin conformada nicamente por los mdulos
necesarios.
Propiedades de la
Programacin
Orientada a Objeto
1. Abstraccin.
La abstraccin es una especificacin del sistema que enfatiza
sobre algunos de los detalles o propiedades del mismo
mientras suprime a otros. Una buena abstraccin es aquella
que enfatiza sobre detalles significativos al lector y al usuario
y suprime detalles que son al menos por el momento
irrelevantes o que causan distraccin.

Existen cuatro tipos de abstracciones:


1) Abstraccin de entidades.
2) Abstraccin de acciones.
3) Abstraccin de Maquinas Virtuales.
4) Abstraccin de Coincidencia.
continuacin

Propiedades de la
Programacin
Orientada a Objeto
2. Encapsulacin.
Tambin llamada "ocultacin de la informacin", es una
tcnica que permite localizar y ocultar los detalles de un
objeto, previniendo que un objeto sea manipulado por
operaciones distintas de las definidas.

La encapsulacin acta como una caja negra que esconde


los datos y solamente permite acceder a ellos de forma
controlada, con lo cual se asegura que los objetos no pueden
cambiar el estado interno de otros objetos de maneras
inesperadas.

Las razones tcnicas para la utilizacin de la encapsulacin


son:
1) Mantener a salvo los detalles de representacin, si
solamente nos interesa el comportamiento del objeto.
continuacin

Propiedades de la
Programacin
Orientada a Objeto
3. Modularidad.
Proceso de crear partes de un todo que se integran
perfectamente entre s para que funcionen por un objetivo
general, y a las cuales se les pueden agregar ms
componentes que se acoplen perfectamente al todo, o
extraerle componentes sin afectar su funcionamiento. En el
caso que se requiera actualizar un mdulo, no hay necesidad
de hacer cambios en otras partes del todo.
continuacin

Propiedades de la
Programacin
Orientada a Objeto
4. Jerarqua.
Lajerarquaes una propiedad que permite una ordenacin
de las abstracciones. De la misma forma, las distintas clases
de un programa se organizan mediante la jerarqua. La
representacin de dicha organizacin da lugar a los
denominados rboles de herencia:

Las dos jerarquas ms importantes de un sistema complejo


son:
1) Estructura de clases (jerarqua es-un(is-a):
generalizacin y especializacin)
continuacin

Propiedades de la
Programacin
Orientada a Objeto
5. Polimorfismo.
Polimorfismo es la capacidad del cdigo de un programa para
ser utilizado con diferentes tipos de datos u objetos. Tambin
se puede aplicar a la propiedad que poseen algunas
operaciones de tener un comportamiento diferente
dependiendo del objeto (o tipo de dato) sobre el que se
aplican.

Se puede clasificar el polimorfismo en dos grandes clases:


a) Polimorfismo dinmico (o polimorfismo ad hoc) es aqul
en el que el cdigo no incluye ningn tipo de
especificacin sobre el tipo de datos sobre el que se
trabaja. As, puede ser utilizado a todo tipo de datos
compatible.
b) Polimorfismo esttico (o polimorfismo paramtrico) es
aqul en el que los tipos a los que se aplica el
continuacin

Propiedades de la
Programacin
Orientada a Objeto
6. Herencia.
Herencia es una propiedad que permite que los objetos sean
creados a partir de otros ya existentes, obteniendo
caractersticas (mtodos y atributos) similares a los ya
existentes, es decir, crear clases derivadas a partir de clase
base.

Existen 2 tipos de Herencia:


a) Herencia sencilla: Un objeto puede extender las
caractersticas de otro objeto y de ningn otro, es decir,
solo puede tener un padre.
b) Herencia mltiple: Un objeto puede extender las
caractersticas de uno o ms objetos, es decir, puede
tener varios padres
Objeto

Unobjetoes una unidad que consta de un estado y de un


comportamiento, que a su vez constan respectivamente de
datos almacenados y de tareas realizables durante el tiempo
de ejecucin. Es creadoinstanciandounaclase.

Un objeto se caracteriza por varios conceptos:


Atributos: Datos que caracterizan al objeto. Son variables
que almacenan datos relacionados al estado de un objeto.
Mtodos: Acciones (operaciones) que el objeto puede
realizar por s mismo. Estas operaciones hacen posible que el
objeto responda a las solicitudes externas (o que acte sobre
otros objetos). Adems, las operaciones estn estrechamente
ligadas a los atributos, ya que sus acciones pueden depender
de, o modificar, los valores de un atributo.
Identidad: Identificador que lo distingue de otros objetos,
sin considerar su estado.
Estructura de un Objeto
Clase

Una clase es un contenedor de uno o ms datos (variables


miembro) junto a las operaciones de manipulacin de dichos
datos (mtodos). En resumen, unaclasees la estructura de
un objeto, es decir, la definicin de todos los elementos de
que est hecho un objeto.

Una clase se compone de:


Variables Miembros.Atributos que son caractersticas de
los objetos. Habitualmente, las variables miembro son
privadas al objeto y su acceso se realiza mediante mtodos
que realizan comprobaciones adicionales.
Mtodos.Funciones que pueden aplicarse a objetos.
Estructura de una Clase
Clase y Objeto
Algoritmo

Un Algoritmo es una serie de pasos organizados que describe


el proceso que se debe seguir para dar solucin a un
problema especfico. El algoritmo parte de un Estado inicial y
una Entrada, proponiendo pasos sucesivos que permiten
obtener el resultado final, es decir, la solucin.

Existen dos tipos de algoritmos:


a) Cualitativos: Son aquellos en los que se describen los
pasos utilizando palabras.
b) Cuantitativos: Son aquellos en los que se utilizan clculos
numricos para definir las partes del proceso.
Caractersticas del Algoritmo

1. Un Algoritmo debe ser preciso e indicar el orden de


realizacin de cada paso.

2. Un Algoritmo debe estar definido. Si se sigue el algoritmo


dos veces, se debe obtener el mismo resultado cada vez.

3. Un Algoritmo debe ser finito. Si se sigue el algoritmo,


debe terminar en algn momento, o sea, debe tener un
nmero finito de pasos.
Lenguajes Algortmicos

Un Lenguaje Algortmico es una serie de smbolos y reglas


que se utilizan para describir de manera explcita un proceso.
Son de dos tipos:
1. Grficos. Representan en forma grfica las operaciones
que realiza un algoritmo (Diagrama de Flujo).

2. No Grficos. Representan en forma descriptiva las


operaciones que realiza un algoritmo (Pseudocdigo).
Dato

Un Dato es la Expresin general que describe las


caractersticas de las entidades sobre las cuales opera un
algoritmo, el cual por si mismo no constituye Informacin. Es
el procesamiento de los Datos lo que proporciona
informacin.
Procesamient
Dato Informacin
o

Los datos puede ser:


a) Constantes. Dato que no cambia durante la ejecucin de
un algoritmo.
b) Variables. Dato que puede cambiar durante la ejecucin
de un algoritmo.
Tipos de Datos

Numricos: Permite expresar valores escalares de forma


numrica, incluyendo los nmeros enteros y los reales. Este
tipo de datos permite realizar operaciones aritmticas
comunes.

Lgicos: Son aquellos que solo pueden tener dos valores


(verdadero o falso), ya que representan el resultado de una
comparacin entre otros datos.

Alfanumricos: Es una secuencia de caracteres


alfanumricos que permiten representar valores
identificables de forma descriptiva, esto incluye nombres de
personas, direcciones, telfonos. Se representan encerrados
entre comillas.
Expresiones

Una expresin es una combinacin de constantes, variables,


signos de operacin, parntesis y nombres especiales
(nombres de funciones estndar), con un sentido unvoco y
definido y de cuya evaluacin resulta un nico valor.

Toda expresin tiene asociada un tipo que se corresponde


con el tipo del valor que devuelve la expresin cuando se
evala, por lo que habr tantos tipos de expresiones como
tipos de datos. Son de dos tipos:
a) Numricas: Una expresin numrica es aquella que slo
puede devolver valores numricos.
b) Lgicas: Una expresin lgica es aquella que slo puede
devolver dos valores (Verdadero o Falso). Los valores que
pueden aparecer en una expresin lgica son de 2 tipos:
lgicos y relacionales.
Expresiones Numricas

Operadores:
1) Aritmticos: +, -, *, /
2) Operacin resto: Devuelve el residuo de una divisin
entera. MOD, %
3) Divisin entera: Devuelve el cociente de una divisin
entera. DIV, \.
4) Potencia: ^

Reglas de precedencia:
Una expresin entera segn como la evale pueda dar
diferentes valores.
La solucin es aplicar prioridad entre los operadores, de
modo que ante la posibilidad de usar varios siempre aplicar
el de mayor prioridad. Entre dos operaciones con la misma
precedencia hay que usar la regla de la asociatividad
(primero la izquierda). La prioridad es:
Expresiones Lgicas

La particularidad de las expresiones lgicas es que mientras


en una expresin numrica por devolver un valor numrico
los operandos solo pueden ser nmeros, en una expresin
lgica los operandos no tienen porque ser booleanos aunque
se devuelva un valor booleano. Esto es lo que ocurre cuando
en la expresin lgica utilizamos operadores relacionales con
lo cual se obtienen valores lgicos o booleanos a partir de
otros que no lo son. En cambio cuando los operadores son
lgicos los operandos obligatoriamente tambin tienen que
ser lgicos.

Operadores:
1) Relacionales: <, <=, >, >=, =, <>, !=
2) Lgicos: Y and &&, O or !!, No not ~!
Tablas de Verdad
Estructura General de un
Algoritmo
Declaracin de Variables

Para que unprogramapueda hacer uso de una o


msvariables, stas deben ser declaradas previamente.
Todas las variables de un programa se declaran de la misma
forma, indicando de cada una de ellas:
1) El tipo de dato que puede almacenar (mediante
unidentificador).
2) Su nombre (mediante otro identificador).
Cuerpo del Algoritmo
Estructuras Secuenciales

Las estructuras secuenciales son aquellas en la que una


accin 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.
continuacin

Estructuras Secuenciales

1. 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:


Simple: Consiste en pasar un valor constate a una variable
(a=15)
Contador: Consiste en usarla como un verificador del
nmero 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: Consiste en recibir el resultado de una
operacin matemtica que involucre muchas variables
(a=c+b*2/4)
continuacin

Estructuras Secuenciales

C++ dispone de los siguientes comandos de asignacin:


= Asignacin Simple
*= Asignacin de
Producto
/= Asignacin de
Divisin
% Asignacin de
= Residuo
+ Asignacin de Suma
=
-= Asignacin de Resta
continuacin

Estructuras Secuenciales
continuacin

Estructuras Secuenciales

2. Entrada (Lectura).
La Entrada o Lectura es equivalente a la asignacin en
cuanto que va a haber una variable que recibe un valor, pero
este valor no resulta de evaluar ninguna expresin, sino que
el valor lo vamos a leer de un dispositivo externo de entrada.

El valor introducido por el dispositivo externo, tiene que ser


del mismo tipo del que la variable que se le asigne.

Leer (nombre de la variable)


continuacin

Estructuras Secuenciales

3. Salida (Escritura).
La Salida o Escritura muestra el valor de una variable en un
dispositivo externo de salida.

La operacin de escritura no es una operacin destructivo en


memoria.

Escribir (nombre de la variable)


Ejemplos

Escriba un algoritmo que pregunte por dos nmeros y


muestre como resultado la suma de estos.
Taller 1

1) Leer el sueldo de tres empleados y aplicarles un aumento


del 10, 12 y 15% respectivamente. Desplegar el
resultado.
2) Escribir un programa que calcule el salario de un
trabajador de la manera siguiente. El trabajador cobra un
precio fijo por hora y se le descuento el 10% en concepto
de impuesto sobre la renta. El programa debe pedir el
nombre del trabajador, las horas trabajadas y el precio
que cobra por hora. Como salida debe imprimir el sueldo
bruto, el descuento de renta y el salario a pagar.
3) Programa que pida el precio de un artculo y calcule su
valor aplicndole un 16% de IVA.
4) Escriba un programa que calcule el rea de un tringulo
rectngulo, dada la altura y la base.
5) Una tienda ofrece un descuento del 15% sobre el total de
la compra y un cliente desea saber cuanto deber pagar
Estructuras Condicionales

Las estructuras condicionales se utilizan para tomar


decisiones lgicas. Se evala una condicin y en funcin del
resultado la misma se realiza una opcin u otra. Las
condiciones se especifican usando expresiones lgicas. La
representacin de una estructura condicional se hace con
palabras en pseudocdigo (if, then, else o bien en espaol si,
entonces, sino), con una figura geomtrica en forma de
rombo.

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 dos tipos bsicos, las simples y las
mltiples.
continuacin

Estructuras Condicionales

1. Simples.
Las estructuras condicionales simples se les conoce como
Tomas de decisin. Estas tomas de decisin tienen la
siguiente forma:

Si <condicin> entonces
Accin(es)
Fin-si
continuacin

Estructuras Condicionales

2. 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:

Si <condicin> entonces
Accin(es)
Si no
Accin(es)
Fin-si
continuacin

Estructuras Condicionales

3. 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:

Si <condicin> entonces
Accin(es)
Si no
Si <condicin> entonces
Accin(es)
Fin-si
Fin-si
Estructuras Cclicas

Las estructuras condicionales se utilizan para ejecutar un


bucle, es decir, un mismo conjunto de acciones 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).

Cada repeticin del bucle se llama iteracin. Adems, todo


bucle tiene que llevar asociada una condicin, que es la que
va a determinar cuando se repite el bucle.
continuacin

Estructuras Cclicas

1. Para.
Ciclo en que el nmero de iteraciones se conoce antes de
ejecutarse. El ciclo lleva asociada una variable denominada
variable ndice, a la que se le asigna un valor inicial y se
determina cual va a ser su valor final y adems se establece
como va a incrementar o decrementar en cada iteracin,
operacin que se realiza en forma implcita (lo hace por
defecto).

Por tanto en cada iteracin del bucle, la variable ndice se


actualiza automticamente y cuando alcanza el valor que se
ha establecido como final se termina la ejecucin del bucle.

Para <variable ndice> = <inicial> hasta <final>


<incremento> haga
Accin(es)
continuacin

Estructuras Cclicas

2. Mientras Que.
Ciclo 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 condicin del bucle se evala al principio, antes de entrar


en l. Si la condicin es verdadera, se ejecutan las acciones
del bucle y se valida nuevamente la condicin. En el
momento en el que la condicin sea falsa, el bucle finaliza. Al
evaluarse la condicin antes de entrar en el bucle al
principio, puede presentarse el caso de que el bucle nunca
se ejecute.

Mientras Que <condicin> haga


continuacin

Estructuras Cclicas

3. Repetir Hasta.
Ciclo que repetir un proceso durante N veces, donde N
puede ser fijo o variable, hasta que la condicin sea
verdadera. Como la condicin se evala al final, incluso
aunque la primera vez ya sea verdadera, el bucle se
ejecutar al menos una vez.

Repita
Accin(es)
Hasta <condicin>
Ejemplos

Mostrar los mltiplos de 3 comprendidos entre los nmeros 1


y 20.
continuacin

Ejemplos

Hallar A+B-C+100.
continuacin

Ejemplos

Obtener (a-b)(a+b).
Ejercicios

1) Dos Atletas recorren la misma distancia y se registra sus


tiempos en minutos y segundos. Se desea saber
eltiempototal utilizando por ambos atletas en horas,
minutos y segundos.

2) Dado un numero, verificar si es positivo, negativo o nulo.

3) Disee un programa que lea un nmero entero (positivo


negativo) y determine si tiene 1, 2, 3, 4 ms de 4 cifras
imprimiendo lo que corresponda.

4) Generar la serie: 1, 5, 3, 7, 5, 9, 7, ..., 23

5) Recibe un nmero entero y retorne su factorial.

6) Recibe un nmero entero y retorne su Serie Fibonacci.


Ejercicios

7) Dada una cantidad expresada en pies, y otra en metros.


Determinar la suma pero convertida a pulgadas, a
yardas, a metros y a millas por separado. Considere las
siguientes equivalencias:
1 milla = 1609 metros, 1 pulgada = 0.0254 metros, 1
yarda = 3 pies, 1 pie = 12 pulgadas

8) Cubo de Nicmaco: Desarrolle un algoritmo que escriba


los N primeros cubos, teniendo en cuenta que sumando
el primer impar, se obtiene el primer cubo; sumando los
dos siguientes impares, se obtiene el segundo cubo, y as
sucesivamente.
13 = 1 =1
23 = 3 + 5 =8
33 = 7 + 9 + 11 = 27
43 = 13 + 15 + 17 + 19 = 64
Ejercicios

9) Una empresatiene N trabajadores, a cada uno de ellos le


paga un sueldo segn las horas trabajadas a cierta tarifa
por hora. Adems a cada trabajador cuyo sueldo supero
$1.600.000 le descuenta 10% por concepto de
impuestos. Se desea saber cuantos trabajadores gana
ms de $1.600.000, cuantos ganan hasta $1.600.000 y
cuantodinerose tiene que pagar alestadopor concepto
de impuestos.

10) En la feria del hogar se ha encontrado una tienda que


vende al contado y alcrditoen 6, 12, 18, 24
mensualidades sus artefactos: televisores, refrigeradoras,
hornos micro hondas. S e desea saber en cualquier
momento cuantasventasse han realizado al contado,
cuantas al crdito en 6, cuantas al en 12, cuantas al en
18, cuantas al en 24 mensualidades.
Ejercicios

11) Cree un algoritmo para calcular los salarios semanales de


unos empleados a los que se les paga $15.000 por hora
si stas no superan las 35 horas. Cada hora por encima
de 35 se considerar extra y se paga a $27.000. El
programa pide las horas del trabajador y devuelve el
salario que se le debe pagar. Adems el programa debe
preguntar si deseamos calcular otro salario, si es as el
programa se vuelve a repetir.

12) Elaborar un algoritmo que lea 3 nmeros diferentes entre


s, y determine el nmero mayor de los 3.

13) Elaborar un algoritmo que lea la edad de 200 personas y


que muestre cuantos mayores de edad y cuantos
menores de edad hay.
Ejercicios

14) Desarrollar un algoritmo que eleve un numero dado a


cualquier potencia, solo utilizando sumas.

15) Desarrollar el algoritmo para el Juego de Picas y Fijas. El


juego consiste en tratar de adivinar un nmero en la
menor cantidad de intentos. En cada intento, el jugador
dice 4 dgitos (no repetidos) y el oponente da pistas de
cuntos aciertos tuvo, sin indicarle cuales fueron, de la
siguiente forma: Si algn dgito que dice el jugador se
encuentra dentro del nmero a adivinar, pero no est en
la posicin correcta, se llama PICA. Si el dgito se
encuentra en la posicin adecuada, se llama FIJA. As, las
pistas sern la cantidad de PICAS y la cantidad de FIJAS
que se tienen. El juego termina cuando algn jugador
tiene 4 FIJAS (4 dgitos en el orden adecuado).
Ejercicios

16) Desarrollar un algoritmo que escriba los nmeros del 100


al 0 en orden descendente.

17) Calcular el promedio de un alumno que tiene 7


calificaciones en la materia de Diseo Estructurado de
Algoritmos.

18) Realizar un algoritmo para calcular la calificacin media y


la calificacin mas baja de un grupo de 50 alumnos.

19) Hacer un algoritmo que permita determinar si un nmero


es primo.

20) Hacer un algoritmo que permita determinar cuanto


tiempo tarda en llenarse una Jarra tomando en cuenta
que la jarra tiene una capacidad de 1000 cc, cada
Quiz

Unapersonava decomprasN veces a un supermercado


donde le obsequian un chocolate sublime por cada vez que
compra mas de $50.000 pesos. Se desea saber cuantos
chocolates sublimes ha ganado en las N veces que compr.
Quiz

Suma de Potencias de 2. El algoritmo busca sumar y


multiplicar por potencias de 2 como operaciones bsicas.
Supongamos que se desea multiplicar 22 x 47, calculamos la
multiplicacin de 47 por todas las potencias de 2 inferiores o
iguales a 22, escogiendo los trminos que cumplan con la
condicin de sumar 22:
2 x 47 = 94
4 x 47 = 188
16 x 47 = 752

De tal forma que 22 x 47 = (16 x 47) + (4 x 47) + (2 x 47)


Quiz

Desarrollar un algoritmo que permita realizar un muestreo


con 50 personas para determinar el promedio de peso de los
nios, jvenes, adultos y viejos que existen en su zona
habitacional. Se determinan las categoras con base en los
siguientes datos:
CATEGORIA EDAD
Nios 0 12
Jvenes 13 29
Adultos 30 59
Viejos 60 en Adelante
Quiz

Un Zologo pretende determinar el porcentaje de animales


que hay en las siguientes tres categoras de edades: de 0 a 1
ao, de ms de 1 ao y menos de 3 y de 3 o ms aos. El
zoolgico todava no esta seguro del animal que va a
estudiar. Si se decide por elefantes solo tomara una muestra
de 20 de ellos; si se decide por las jirafas, tomara 15
muestras, y si son chimpancs tomara 40.
Arreglos

Un Arreglo se define como una coleccin finita, homognea y


ordenada de elementos, los cuales permiten hacer un
conjunto de operaciones para manipular los datos guardados
en ellos. Estas operaciones son: ordenar, buscar, insertar,
eliminar, modificar entre otras.

Finita. Todo Arreglo tiene un lmite, es decir, se sabe


determinar cual ser el nmero mximo de elementos que
podrn formar parte del arreglo.

Homognea. Todos los elementos del Arreglo son del mismo


Tipo.

Ordenada. Se puede determinar cual ser el primer


elemento, el segundo, el tercero, etc.
Arreglos Unidimensionales

Un Arreglo de una dimensin es una lista de variables, todos


de un mismo tipo, a las que se les hace referencia por medio
de un nombre comn. Una variable individual del arreglo se
denomina elemento del arreglo.

Para declarar un arreglo de una dimensin se usa el formato


general:
Tipo_dato Identificador[tamao]

Algunas sintaxis lo declaran con la palabra reservada TYPE y


luego se declara la variable de tipo arreglo. Esto se hace en
el bloque de declaracin de variables.
Type
nombre_arreglo= array[x..y]of tipo_dato;

Ejemplos:
continuacin

Arreglos Unidimensionales

Un vectores un rea de almacenamiento de datos


(elementos) que est dividida en una serie de posiciones y
en cada una de las cuales almacenar un dato., el cual debe
tener un nombre nemotcnico para diferenciarlo de los
dems vectores.

Donde:
nombreVector: Es el nombre del vector.
Posiciones: Son adyacentes (consecutivas) y en cada una
se almacenar un dato.
n: Es el tamao o longitud del vector.
Dato: Es el elemento (informacin) que se guarda en
cadaposicin del vector.
Referencia a los Datos

Cuando sea necesario hacer referencia a algn dato de un


vector, es necesario escribir el nombre del vector seguido de
un corchete y dentro de ste un subndice(constante,
variable o expresin aritmtica) que representa la posicin
de dicho dato.

Suponga que el siguiente vector ya est almacenado en


memoria

Entonces, para hacer referencia al dato 12 se escribe V[1],


para el dato 15 se escribe V[2], etc.
Operaciones con Vectores

Las operaciones convectores se pueden realizar aelementos


individuales o a todo el vector completo. Cuando es a
elementos individuales no requiere de la utilizacin de un
ciclo, pero cuandoes a todo el vector completo si lo
requerir.

Las operaciones con todo el vector completo pueden ser:


recorrido, bsqueda, insercin, borrado y ordenamiento.
Ordenamiento con Vectores

Algoritmos de Ordenamiento Lineal


1. Mtodo de Burbuja
2. Mtodo de Seleccin
3. Mtodo de Insercin
4. Mtodo Shell

Algoritmos de Ordenamiento Recursivo


5. Algortimo Merge
6. Mtodo de Ordenamiento Rpido
Mtodo de Burbuja

La idea de este mtodo es ir tomando los elementos de a dos


e ir comparndolos e intercambindolos de ser necesario,
hasta que todos los elementos sean comparados.

El bucle externo establece un desplazamiento secuencial


dentro del vector desde el primer elemento hasta el
penltimo. El bucle interno realiza un recorrido del vector
desde el elemento i+1 hasta el ltimo elemento del vector y
va reduciendo en cada iteracin del bucle externo el nmero
de elementos a comparar, ya que los elementos anteriores
ya debieron ordenarse en las iteraciones anteriores. Ahora
bien, lo que se quiere es ordenar todos los valores, para lo
cual se compara el elemento i con los subsiguientes
elementos del vector e intercambindolo cuando sea mayor
que alguno de los elementos ubicado en alguna posicin
inferior del vector. En este intercambio se genera la burbuja.
continuacin

Mtodo de Burbuja

for (i=0; i<n-1; i++)


{
for (j=i+1; j<n; j++)
{
if(V[i]>V[j])
{
aux = V[i];
V[i] = V[j];
V[j] = aux;
}
}
}
Mtodo de Seleccin

El mtodo se basa en buscar en cada iteraccin el mnimo


elemento del subvector situado entre el ndice i y el final
del vector e intercambiarlo con el de ndice i. Tomando la
dimensin del vector n como tamao del problema es
inmediato que el bucle se repite n veces y por tanto la
funcin que da el nmero de repeticiones es de tipo lineal.

Se trata de una secuencia de tres operaciones, la segunda


de las cuales es una iteracin. La primera (asignacin) y la
tercera (intercambio) pueden considerarse de coste
constante. La segunda es un bucle que internamente incluye
una operacin condicional que en el peor caso supone una
operacin de coste constante y el nmero de repeticiones de
esa operacin es de tipo lineal, ya que se realiza n-(i+1)
veces, y por tanto, al crecer n, el nmero de veces crece
proporcionalmente a n.
continuacin

Mtodo de Seleccin

for (i=0; i<n; i++)


{
imin=i;
for (j=i+1; j<n; j++)
{
if(V[j]<V[imin])
imin=j;
}
aux = V[i];
V[i] = V[imin];
V[imin] = aux;
}
Mtodo de Insercin

En este procedimiento se recurre a una bsqueda binaria en


lugar de una bsqueda secuencial para insertar un elemento
en la parte de arriba del arreglo, que ya se encuentra
ordenado. El proceso, al igual que en el mtodo de insercin
directa, se repite desde el segundo hasta el n-simo
elemento.
continuacin

Mtodo de Insercin

for(i=1; i<n; i++) {


temp = V[i];
Izq = 0;
Der = i-1;
while (Izq <= Der){
Medio = (Izq+Der)/2;
if (temp < V[Medio])
Der = Medio -
1;
else
Izq = Medio +
1;
}
for (j=i-1; j>=Izq; j--){
V[j+1]=V[j];
}
Taller

Cada ejercicio debe ser realizado por los tres mtodos de


ordenamiento:

1. Lea 10 nmeros por teclado, almacnelos en un vector y


ordnelos de forma ascendente.
2. Lea 10 nmeros por teclado, almacnelos en un vector y
ordnelos de forma descendente.
3. Llene un Vector con los primeros 100 nmeros impares y
ordnelo en forma descendente.
4. Llene un vector con 50 nmeros obtenidos en forma
aleatoria y ordnelo en forma ascendente.
5. Llene un vector con 50 nmeros obtenidos en forma
aleatoria y ordnelo en forma descendente.
Bsqueda con Vectores

La bsqueda se refiere a la operacin de encontrar la


posicin de un elemento entre un conjunto de elementos
dados: lista, tabla o fichero

La operacin de bsqueda de un elemento N en un conjunto


de elementos consiste en:
1.Determinar si N pertenece al conjunto y, en ese caso,
indicar su posicin en l.
2.Determinar si N no pertenece al conjunto.

Los mtodos ms usuales de bsqueda son:


. Bsqueda secuencial o lineal.
. Bsqueda binaria.
Bsqueda Secuencial

El mtodo ms sencillo de buscar un elemento en un vector


es explorar secuencialmente el vector (recorrer el vector),
desde el primer elemento hasta el ltimo. Si se encuentra el
elemento buscado visualizar un mensaje similar a Elemento
encontrado en la posicin x, en caso contrario visualizar un
mensaje similar a Elemento no existe en el vector.

En otras palabras, la bsqueda secuencial compara cada


elemento del vector con el valor deseado, hasta que se
encuentra o termina de recorrer el vector completo.
continuacin

Bsqueda Secuencial

for(i=j=0;i<N;i++)
if(array[i]==elemento)
{
solucion[j]=i;
j++;
}
Bsqueda Binaria

Presupone una ordenacin previa de los elementos del


vector. Este mtodo se basa en la divisin sucesiva del
vector en dos partes, y seguir dividiendo cada mitad hasta
encontrar el elemento buscado.

Con este mtodo se examina primero el elemento central del


vector, si este es el elemento buscado, entonces la bsqueda
ha terminado.

En caso contrario se determina si el elemento buscado est


en la primera o segunda mitad de la lista, y a continuacin se
repite este proceso, utilizando el elemento central de esa
sublista.

Es un mtodo eficiente siempre que el vector est ordenado.


En la prctica esto suele suceder, pero no siempre es as. Por
continuacin

Bsqueda Binaria

int desde,hasta,medio,elemento,posicion;
int array[N];
for(desde=0,hasta=N-1;desde<=hasta;)
{if(desde==hasta) // si el array slo tiene un
elemento:
{if(array[desde]==elemento) // si es la
solucin:
posicion=desde; // darle el valor.
else // si no es el valor:
posicion=-1; // no est en el array.}
medio=(desde+hasta)/2; // Divide el array en
dos.
if(array[medio]==elemento) // Si coincide con
el central:
{posicion=medio; // ese es la solucin}
else
Ejercicios

1) Desarrollar un algoritmo que rellene un vector con 11


nmeros. Luego, los divida entre 3 y los muestre por
pantalla.

2) Desarrollar un algoritmo que lea 10 nmeros por teclado,


los almacene en un vector y los ordene de forma
ascendente.

3) Dado un vector de n elementos enteros desordenado,


escribir un algoritmo que detecte aquellos elementos que
estn repetidos, escribiendo el elemento y el nmero de
veces que se repite.

4) Crear un algoritmo que busque el Nmero Mayor, el


Nmero Menor y el Promedio de los Nmeros contenidos
en un Vector.
continuacin

Ejercicios

6) Crear un algoritmo que guarde 100 nmeros en un


vector, calcule la media y la moda.

7) Crear un algoritmo que pida al usuario 10 nmeros


reales, calcule su media y luego muestre los que estn
por encima de la media.

8) Crear un algoritmo que genere los nmeros primos entre


3 y 1000 utilizando el mtodo de la criba de Eratstenes,
el cual se inicia con los nmeros impares y luego se
eliminan todos los nmeros mltiplos de los impares
hasta la raz cuadrada de 100.

9) Crear un algoritmo que calcule la Primera derivada de


una Ecuacin.
Quiz

1. Desarrolle un algoritmo que convierta un Numero


Decimal a Numero Binario y lo guarde en un vector.

2. Desarrolle un algoritmo que determine el Nmero Menor


y Mayor de un arreglo llenado previamente.
Arreglos Bidimensionales

Un Arreglo Bidimensional es un arreglo de arreglos


unidimensionales, que puede ser visualizado como una
matriz con filas y columnas.

Para declarar un arreglo de dos dimensiones se usa el


formato general:
Tipo_dato Identificador[tamao,tamao]

Algunas sintaxis lo declaran con la palabra reservada TYPE y


luego se declara la variable de tipo arreglo. Esto se hace en
el bloque de declaracin de variables.
Type
nombre_arreglo= array[x..y,x..z]of tipo_dato;

Ejemplos:
tablas= array [1..x,1..y] of real;
continuacin

Arreglos Bidimensionales

Las matrices son arreglos bidimensionales, y al igual que en


los vectores estas son contenedores de datos. Los datos que
se almacena en las matrices sern del mismo tipo. Por lo
tanto, se podra decir entonces que una matriz es un vector
de vectores.
Ejercicios

1) Desarrollar un algoritmo que sume dos matrices.

2) Desarrollar un algoritmo que multiplique dos matrices.

3) Crear un algoritmo que pida al usuario los datos de una


matriz de 3x3, y calcule y muestre su matriz inversa.

4) Dadas dos matrices A y B, desarrollar un algoritmo que


intercambie los mnimos de A con los mximos de B.

5) Sean dos matrices de dimensiones m,n y l,k. Disear un


algoritmo que detecte aquellos elementos presentes en
ambas matrices y los escriba, indicando su posicin en
las dos matrices (suponiendo que no hay valores
repetidos dentro de ninguna de las dos matrices).
continuacin

Ejercicios

6) Desarrollar un algoritmo que calcule los puntos de silla de


una matriz de enteros. Un elemento de una matriz es un
punto de silla si es el mnimo de su fila y el mximo de su
columna.

7) Desarrollar un algoritmo que calcule la moda en una


matriz.

8) Crear un algoritmo que escriba el numero de la hilera


cuya suma sea mayor que las dems hilera.

9) Desarrollar un algoritmo llene una matriz de 7 * 7.


Calcular la suma de cada fila y la almacene en un vector,
la suma de cada columna y la almacene en otro vector.

10) Desarrollar un algoritmo que encuentre e imprima la


Taller

Realice los algoritmos que permitan obtener las siguientes


matrices:
Quiz

Realice el algoritmo que permita obtener una matriz similar:


Parcial

1) Escriba un algoritmo que calcule el determinante de una


matriz n*n.
2) En la tienda Mara Shop desean crear un programa para
conocer como han sido las ventas de cada una de las
ltimas 4 semanas. Desarrolle un programa donde se
ingresen en las ventas de cada da en una matriz 4x7 y
luego determine e imprima:
1) El total de ventas de cada semana.
2) El promedio de ventas de cada semana.
3) Cual semana fue la de mayor venta
3) Escriba un programa en lenguaje C que solicite al usuario
ingresar 12 nmeroslos cuales corresponden a una
matriz de 4x3. Se pide calcular la suma de:
1) Diagonal Principal.
2) Diagonal Secundaria.
3) Primera y Ultima Fila.

Вам также может понравиться