El post que buscas se encuentra eliminado, pero este también te puede interesar

Fundamentos de Programacion

Anuncios

Fundamentos de Programacion Apuntes de la Universidad



UNIDAD 1

Noción de Algoritmo




RESOLUCIÓN DE PROBLEMAS COMPUTACIONALES

En la vida diaria nos enfrentamos continuamente a problemas que debemos resolver en lo posible felizmente. Así como cada individuo tiene formas de encarar un problema y su propia manera de solucionarlo, computacionalmente hablando podemos hacer un paralelo. Ante la presentación de un problema encarar la mejor forma de resolverlo para arribar al resultado esperado y correcto es un desafío. Para ello debemos comprender exactamente qué se pide, qué resultados se pretenden y que restricciones y/o condiciones existen. Para realizar lo antes dicho dividiremos la resolución de un problema en etapas, las cuales enunciamos y definimos a continuación.

ETAPAS PARA LA RESOLUCIÓN DE PROBLEMAS


a. Definición del problema
Está dada por la formulación del problema en forma correcta y completa. Esta enunciación de lo que se desea es primordial para el éxito de la resolución.
b. Análisis del problema
A partir del estudio del problema se deberá identificar y conocer las partes principales del mismo y de esa manera determinar los siguientes conjuntos:
• de DATOS : es la información con que contamos para resolver el problema.
• de RESULTADOS : es lo que se desea obtener.
• de CONDICIONES: una o más relaciones que vinculan los dos conjuntos anteriores y que permitirán plantear la solución del problema.
c. Programación
Esta etapa consiste en obtener la solución del problema dado. Se divide en dos subetapas:
c.1. Elección y creación del método
Se trata de buscar un procedimiento o método general que permita resolver el problema planteado utilizando una computadora. Es muy factible que se encuentren varios métodos para hacerlo, lo importante es determinar la “mejor alternativa”, de acuerdo a distintos parámetros que se establezcan para esta selección. Esta puede ser la que produzca los resultados esperados en el menor tiempo y al menor costo o sólo en el menor tiempo u otras.
c.2. Codificación
Consiste en expresar el método elegido en un lenguaje, llamado lenguaje de programación, que pueda ser interpretado por la computadora. Esta subetapa será objeto de estudio en años superiores.
d. Prueba
Esta etapa consiste en la ejecución del código del método elegido, es decir, suministrar los datos al computador, y obtener los resultados. Luego se analizarán los mismos determinando si son realmente los esperados. Caso contrario, deberán analizarse las etapas previas, comenzando por la última hacia atrás, y realizar las modificaciones necesarias, repitiendo este proceso hasta obtener los resultados esperados.

ESTRATEGIA

El diseño de la estrategia consiste en encontrar un método que nos permita llegar a resolver el problema planteado. Como primer paso de esta etapa, debemos preparar un plan o esquema general de las tareas que deben realizarse para llegar a la solución. Este esquema se denomina estrategia y debe ser una lista de QUÉ hacer.

¿Cómo se diseña una estrategia?

Por lo dicho, diseñar una estrategia consiste en dividir o descomponer el problema original en una sucesión de problemas más simples, de tamaño suficientemente pequeño como para que cada uno de ellos pueda ser comprendido en su totalidad. Ésto, permitirá atacar la solución de cada problema simple por separado e independientemente de los demás, volviendo a aplicar este enfoque a cada uno de los subproblemas hasta llegar a subproblemas de solución simple. Una vez que todos ellos han sido resueltos, se puede decir que el problema original ha sido resuelto.
Este proceso de descomposición de un problema partiendo de la formulación completa del problema hasta llegar a problemas elementales de simple solución, se llama diseño descendente, también conocido como top-down, método de refinamiento sucesivo o diseño compuesto.

ALGORITMO

Planteada una estrategia indicando QUÉ tareas hacer, debemos especificar una lista detallada de CÓMO hacerlas, llegando así a definir una solución paso a paso del problema llamada algoritmo. La descripción de la solución detallada por medio de un algoritmo constituye el segundo paso en la etapa de elección del método.
La palabra algoritmo se utiliza, en general, como sinónimo de procedimiento, método o técnica. Pero en el área de computación tiene un significado más específico.


Un algoritmo es un conjunto finito de operaciones (instrucciones - pasos) que seguidos en un determinado orden permiten resolver un tipo de problema.

Las características principales de un algoritmo son:
 Finito: permite arribar a la solución de un problema después de la ejecución de un número finito de pasos.
 Definido: cada paso debe ser enunciado en forma clara y precisa, y no debe dar lugar a ambigüedades. Para los mismos datos el algoritmo debe dar siempre los mismos resultados
 General: la solución debe ser aplicable a un tipo de problemas y no a un problema particular.

Teniendo en cuenta las características mencionadas previamente podemos decir que: un algoritmo es una secuencia ordenada y finita de pasos que constituyen un método general para resolver un tipo de problemas.

Es de notar que esta definición, se refiere a ‘...resolver un tipo de problemas .....’ y no hace hincapié en el uso del computador como herramienta para su resolución. Esto se debe a que el concepto de algoritmo se aplica a problemas computacionales que van a ser resueltos por medio de un computador y a problemas no computacionales, en cuya resolución no interviene esta herramienta. En ambos casos el lenguaje usado en la descripción del algoritmo debe ser comprensible para el destinatario o para quien lo va a ejecutar. Por lo visto, para cualquier problema para el que pueda especificarse un método finito de solución puede definirse un algoritmo.

Ejemplos que se pueden presentar en la vida diaria:

• una receta de cocina
• las instrucciones para utilizar un aparato electrónico
• el camino para llegar a un lugar determinado desde un punto de partida

Ejemplos de algoritmos computacionales:

• Calcular los sueldos de los empleados de una empresa
• Actualizar el stock de un comercio
• Calcular las raíces de una ecuación

FORMALIZACIÓN

Formalizaremos algunos conceptos vistos anteriormente.
Hemos mencionado que la forma de enunciar la solución a un problema planteado depende del ejecutante o también llamado procesador. Por lo tanto llamaremos así a toda entidad capaz de entender un enunciado y ejecutar los pasos descriptos en un algoritmo. Si bien en los ejemplos vistos el ejecutante se trataba de una persona en la resolución de problemas computacionales debemos pensar que el procesador será la computadora.
También hemos notado que para poder realizar su tarea el ejecutante debe contar con los recursos adecuados. El conjunto de estos recursos existentes en el momento de la ejecución de un trabajo constituye el ambiente del problema.
El método que se elija para proponer la solución de un tipo de problema depende del ejecutante y de los recursos o elementos con que se cuenta (ambiente). Cuando definimos algoritmo hemos hablado de un conjunto de pasos o acciones.

Una acción es un evento que modifica el ambiente y puede ser:

 Primitiva
 No-primitiva
Una acción es primitiva cuando para un ejecutante dado su enunciado es suficiente para que pueda ser ejecutada sin información adicional.
Una acción no-primitiva es aquella que puede ser descompuesta en acciones primitivas para un ejecutante dado.
También hemos visto que en los ejemplos se nos presentan situaciones que indican alternativas: “SI se tiene soda ...”, esta no es una acción porque no modifica el ambiente, pero son elementos que el ejecutante debe saber interpretar. A estos enunciados se los denomina condición.
Por lo tanto:

Una condición es una afirmación lógica sobre el estado de algún recurso del ambiente, que puede tomar valor verdadero o falso en el momento de la observación.

El ejecutante determina en el momento de la ejecución del algoritmo las acciones a seguir, dependiendo de que la condición sea satisfecha o no.

PROGRAMACIÓN MODULAR

Es un método de diseño y tiende a dividir el problema en partes perfectamente diferenciadas que puedan ser analizadas, resueltas y puestas a punto por separado.
Para atacar el análisis de un problema, y siguiendo el diseño Top-Down, se pueden utilizar criterios de programación modular para dividirlos en partes independientes, probando cada uno por separado y realizando su recomposición ascendente.
Cada una de las partes independientes se llama Módulo y para su determinación se deben tener en cuenta los siguientes criterios:
 un módulo debe corresponder a una función lógica perfectamente bien definida.
 los módulos deben ser pequeños para que sean claros y de poca complejidad.
 un módulo debe tener una estructura de caja negra, es decir la salida debe ser exclusivamente función de la entrada.
 cada módulo deber tener una única entrada y una única salida.
Objetivos de la programación modular
La programación modular tiende a:
 disminuir complejidad: disminuye la complejidad del problema original, dividiendo un problema en partes más simples.
 aumentar la claridad: el problema original es planteado ahora como una sucesión de módulos que resulta más fácil de comprender inclusive para terceras personas.
 aumentar la fiabilidad: como consecuencia de los dos puntos anteriores, aumenta la confiabilidad en todo proceso de resolución.
 facilitar modificaciones y conexiones: cada módulo puede realizarse y probarse por separado, minimizándose los problemas de puesta a punto al final.

GUÍA DE TRABAJOS PRÁCTICOS NRO. 1


Temas: Constantes, Variables, Expresiones, Asignaciones, Leer y Escribir.

1. Analice el valor de verdad de cada una de las siguientes expresiones. Justifique su respuesta.


a) La constante mantiene siempre su valor a lo largo del algoritmo.
b) Una variable es un lugar de memoria.
c) El nombre de una variable debe estar relacionado con su contenido.
d) El tipo de variable se define por su contenido. Si el contenido se modifica en el transcurso del algoritmo, puede cambiar el tipo.
e) Una variable puede almacenar una expresión.
f) El nombre de una variable será correcto siempre que el mismo comience con un número o una letra.
g) Resultado y RESULTADO son variables distintas.
h) ´JUAN´ y JUAN son variables distintas.
i) En una expresión las sumas y restas se resuelven primero.
j) Una función no puede participar en el argumento de otra función.
k) Las palabras reservadas se escriben siempre con mayúsculas.
l) Una cadena de caracteres hay que encerrarlas entre apóstrofos.


2. Complete con una de las opciones propuestas entre paréntesis:


Las siguientes ...........................(variables / constantes) son .................... (iguales / diferentes).
- ALTO - AlTo - AltO

Las siguientes ...........................(variables / constantes) son .................... (iguales / diferentes).
- ‘ALTO’ - ‘AlTo’ - ‘AltO’


3. Dados los siguientes contenidos para las variables A, B, C, D, E, F; analice las expresiones en que intervienen y encuentre en la lista de opciones el resultado correcto de la expresión.

A B C D E F
3 ‘ÁBC’ ‘JOSE’ V 97.9 ‘87’

a) ( A + C ) RC 2

b) TRUNC( E ) >= REDON( E )

c) 'ER' < A

d) ( B = ‘XA’ ) v ( A = E )

e) ( B < C ) ^ F f) ( C <> 'F' ) ^ ( A < 4 )

g) ( E < F )

h) TRUNC( ( A + E ) / 2 )+5


Resultados posibles: V | F | Expresión Inválida | 55 |


4. Analice el valor de verdad de cada una de las siguientes expresiones. Justifique su respuesta.


a) A la izquierda del símbolo de asignación puede ir una variable.
b) La asignación X <- X + 2 carece de sentido porque no existe ningún número que incrementado en dos unidades sea igual a sí mismo.
c) La acción de escritura destruye el contenido de las variables que utiliza.
d) En una única acción de lectura se pueden leer dos o más datos.
e) En una acción de lectura el primer valor ingresado se almacena en la variable que sigue a la palabra LEER.

5. Dado el siguiente algoritmo realizar el seguimiento del mismo.

a) Con los datos: 26, 5, 2007, ‘Jorge Gómez’, 500, 150, 120.
b) Con los datos: 15, 10, 2008, ‘Carlos Oviedo’, 850, 600, 250.

Proceso Liquidación
Leer DIAACT, MESACT, ANIOACT;
Leer NOM, DEUDA, PAGO1, PAGO2;
PAGO <- PAGO1 + PAGO2;
SALDO <- DEUDA – PAGO;
DESC <- SALDO * 0.10;
SALDO <- SALDO – DESC;
Escribir ‘Fecha: ‘, DIAACT, ‘/’, MESACT, ‘/’, ANIOACT;
Escribir ‘Cliente: ‘, NOM, ‘Deuda Total: $ ‘, DEUDA;
Escribir ‘Pagos realizados: $ ‘, PAGO;
Escribir ‘Descuento 10%: $ ‘, DESC;
Escribir ‘Saldo a pagar: $ ‘, SALDO
FinProceso

6. Realizar ambiente y algoritmo de cada uno de los siguientes enunciados:


a) Calcular e informar el perímetro de un cuadrado conociendo el valor del lado.

b) Una remisera desea liquidar el sueldo de los choferes de una de sus unidades para ello se ingresan los datos de los 2 choferes de la misma: nombre y apellido, sueldo básico y km. recorridos en el mes a liquidar. Primero se ingresan los datos del chofer 1, y luego los datos del chofer 2.
Se desea generar un informe como el siguiente:

LIQUIDACION MENSUAL CHOFERES
NOMBRE DEL CHOFER 1.............................. TOTAL A COBRAR $..................
NOMBRE DEL CHOFER 2.............................. TOTAL A COBRAR $..................
TOTAL GRAL $......................

Observación: Tener en cuenta que por cada km. se le paga $7.5 y que el total a cobrar se calcula como: Sueldo básico + monto por kms.

SOLUCIÓN:
PARA COMPILAR EN PSeint

Proceso Remiseria
Leer nom1, sdobas1, kmr1;
Leer nom2, sdobas2, kmr2;
montokm1<-7.5*kmr1;
montokm2<-7.5*kmr2;
totc1<-sdobas1+montokm1;
totc2<-sdobas2+montokm2;
totalg<-totc1+totc2;
Escribir 'Liquidacion mensual choferes:';
Escribir 'Nombre chofer 1:', nom1, 'Total a cobrar: $', totc1;
Escribir 'Nombre chofer 2:', nom2, 'Tocal a cobrar: $', totc2;
Escribir 'total general: $', totalg
FinProceso


Dados los siguientes enunciados realizar ambiente y pseudocódigo.


7. En un recital se vendieron dos tipos de entradas, a saber: popular y platea. El éxito del recital se ocasionó porque se lograron vender la totalidad de las plateas y de las populares, 1000 y 3000 respectivamente. El precio de la popular fue un 50 % más barato que el de la platea. Hallar la recaudación total del recital, sabiendo que se ingresa como primer dato el precio de la platea.

SOLUCIÓN:
PARA COMPILAR EN PSeint

Proceso Recital
Escribir 'Ingrese el Valor de la Platea:';
Leer PrePla;
PrePop<-PrePla/2;
TOTG<-(PrePla*1000)+(PrePop*3000);
Escribir 'Recaudacion Total:', TOTG
FinProceso


8. Una empresa que comercializa artefactos electrodomésticos posee 2 sucursales. De cada una de ellas se conocen los montos de ventas semestrales realizadas durante el año 2009. Estos datos se ingresan ordenados por sucursal y por semestre.
Cada sucursal destinó el 20% del total de sus ventas para pagar una bonificación a sus empleados; monto que se repartió en partes iguales entre ellos. Se ingresan también, la cantidad de empleados que tenían las sucursales en el 2009.
Determinar e informar:
a. El total de ventas de cada sucursal.
b. La bonificación que pagó cada sucursal a cada empleado.

SOLUCIÓN:
PARA COMPILAR EN PSeint

Proceso Pravega
Escribir 'Ingrese el monto del semestre A de la sucursal 1:';
Leer MontoV1SeA;
Escribir 'Ingrese el monto del semestre B de la sucursal 1:';
Leer MontoV1SeB;
Escribir 'Ingrese la cantidad de empleados de la sucursal 1:';
Leer CantEm1;
Escribir 'Ingrese el monto del semestre A de la sucursal 2:';
Leer MontoV2SeA;
Escribir 'Ingrese el monto del semestre B de la sucursal 2:';;
Leer MontoV2SeB;
Escribir 'Ingrese la cantidad de empleados de la sucursal 2:';
Leer CantEm2;
TOTV1<-MontoV1SeA+MontoV1SeB;
TOTV2<-MontoV2SeA+MontoV2SeB;
BON1<-(TOTV1*0.2)/CantEm1;
BON2<-(TOTV2*0.2)/CantEm2;
Escribir 'Total de Ventas de la sucursal 1:',TOTV1;
Escribir 'Total de Ventas de la sucursal 2:',TOTV2;
Escribir 'Bonificacion que pago la sucursal 1 a cada empleado:',BON1;
Escribir 'Bonificacion que pago la sucursal 2 a cada empleado:',BON2
FinProceso


9. Un avión realiza su recorrido partiendo del aeropuerto A, luego se dirige al B, y de allí al C y culmina su recorrido nuevamente en A.
Se conocen como datos las coordenadas de los puntos A (Xa,Ya), B(Xb,Yb) y C(Xc,Yc).
Se pide:
a. Calcular la distancia que existe entre A y B, entre B y C y entre C y A.
b. Calcular e informar la distancia total que debe recorrer el avión.

La distancia se debe calcular en base a la siguiente fórmula: D= RC ( (X2-X1)2 + (Y2-Y1)2)

SOLUCIÓN:
PARA COMPILAR EN PSeint

Proceso Avion
Escribir 'Ingrese el valor de la coordenada XA:';
Leer XA;
Escribir 'Ingrese el valor de la coordenada YA:';
Leer YA;
Escribir 'Ingrese el valor de la coordenada XB:';
Leer XB;
Escribir 'Ingrese el valor de la coordenada YB:';
Leer YB;
Escribir 'Ingrese el valor de la coordenada XC:';
Leer XC;
Escribir 'Ingrese el valor de la coordenada YC:';
Leer YC;
DistAB<-(XB+YB)-(XA+YA);
DistBC<-(XC+YC)-(XB+YB);
DistCA<-(XC+YC)-(XA+YA);
DistTOT<-(RC(((XC-XA)*(XC-XA))+((YC-YA)*(YC-YA))))*2;
Escribir 'Distancia entre A y B:',DistAB;
Escribir 'Distancia entre B y C:',DistBC;
Escribir 'Distancia entre C y A:',DistCA;
Escribir 'Distancia total que recorrio el Avion:',DistTOT
FinProceso


10. Una línea de colectivos presta los siguientes servicios: Común, Estudiante y Trabajador. Los estudiantes y los trabajadores abonan el 50 % y el 40 % del costo de un boleto común, respectivamente. Se desea obtener cantidad de boletos vendidos según el servicio y total recaudado.
Para resolver el problema se dispone de las numeraciones iniciales y finales de los boletos de cada uno de los servicios, además se conoce al inicio el precio del boleto estudiante.

SOLUCIÓN: PROXIMAMENTE


11. La liquidación del consumo telefónico de una línea familiar tiene en cuenta un abono fijo con el cual el usuario puede utilizar 600 pulsos. El exceso de pulsos se liquida a razón de $0,035 por cada pulso de más. Se conocen como datos: el monto del abono fijo, la cantidad de pulsos consumidos totales (mayor de 600) y la cantidad de pulsos utilizados en Internet. Estos últimos se liquidan a tarifa reducida del 40 % del costo del pulso normal. Como primer dato, se conoce el número de teléfono.
Se desea obtener un informe como el siguiente:

NÚMERO DE TELÉFONO: …………….............
ABONO FIJO: $ .......................
RECARGO: $ ........................... CANTIDAD DE PULSOS EXCEDENTES: ..............
INTERNET: $............................
TOTAL: $ ................................

SOLUCIÓN: PROXIMAMENTE

____________________________________________________________________________________________________


LUEGO MAS ADELANTE

UNIDAD 2
Formalización de Algoritmos

14 comentarios - Fundamentos de Programacion

@HacKan
Interesante post... fuente¿?
Salutes!
@Lexus94
eso es o q yo voy a tener q estudiar O_____________________O ya me asuste con lo difisil q deve ser
@Lexus94
a me falto desir q buen post aunq no lo lei todo porq no entiendo y me agarro miedito de todo lo q es T_T te dejo mis 10
@metal3689
gracias por avisarme amigo!! excelente, post! y pues así es la programación de por ley siempre se tiene que combinar las matemáticas y los códigos, pero mas que nada hay que usar mucha lógica, es complicado pero la verdad vale la pena .

muy buena información te dejo +10
@metal3689
metal3689 dijo:gracias por avisarme amigo!! excelente, post! y pues así es la programación de por ley siempre se tiene que combinar las matemáticas y los códigos, pero mas que nada hay que usar mucha lógica, es complicado pero la verdad vale la pena .

muy buena información te dejo +10


y estaré esperando la unidad ya que esta información vale oro en conocimientos

muchas gracias por la información!

Fundamentos de Programacion
@liopehua
lindo..... lindo...... lastima la banderita que tenes..
@galcubo
Lexus94 dijo:eso es o q yo voy a tener q estudiar O_____________________O ya me asuste con lo difisil q deve ser

Antes que nada deberias aprender a escribir, para asi poder ingresar a una universidad. (es con onda eh!!!)
Buen aporte enzo. GRACIAS!!!
@AdRe77
Te dejo 10 puntos asi te haces NFU, porque necesitaba el libro &quot;World Link book 2&quot;.
Si podes pasarme el 3 seria de gran ayuda!