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

UNIVERSIDAD YACAMBU

Facultad de Ingeniería / Carrera Ingeniería Industrial


Laboratorio Virtual de Ciencia de los Materiales.
Algoritmos y Programación (TIA-0233)
Sección NP01N0S 2020-1
Prof. Sara Herminia Blach Figuera

error/nopermission

Más información sobre este error

Algoritmos y Programación T 1 Cuestionario – Algoritmo - Análisis de


problemas - Corrida en frío - Entradas implícitas y explicitas

Gianpiero Fusco Pagliarella


v-24320389 III-133-00005p

feb- 2020
Algoritmos y Programación T 1 Cuestionario – Algoritmo - Análisis de
problemas - Corrida en frío - Entradas implícitas y explicitas

Las personas para comunicarse entre sí utilizan un lenguaje que puede ser oral o
escrito. En general, para comunicar algo siempre se usa un lenguaje. La informática
no queda excluida del uso de lenguajes, ya que estos son la manera de especiaficar las
acciones que se desea sean realizadas en la computadora.
En otras palabras, son la interfase entre el programador y la computadora. A
través de ellos podemos desarrollar programas o aplicaciones, que se componen por
un conjunto de instrucciones que luego se ejecutarán en la computadora haciendo uso
de sus recursos (CPU, memoria, disco, etc.).
Los lenguajes de programación están destinados a distintos ambitos,
dependiendo de sus características que simplifican algunas tareas y complejizan otras.
Pueden estar destinados a aplicaciones científicas, aplicaciones de negocios,
inteligencia artificial, programación de sistemas, scripting, y también disponemos de
lenguajes de propósitos especiales. Los lenguajes de programación tienen una
estructura compleja que se compone de varias partes: sintáxis, semántica, elementos
del lenguaje, nivel de abstracción, paradigma, estructuras de control para ordenar la
ejecución de los programas, tipos de datos (números, letras, etc.), y funciones o
procedimientos (unidades) que contienen un conjunto de instrucciones, entre otras.
Un algoritmo es un conjunto de instrucciones ordenadas, finitas y delimitadas
que se crean con el fin de describir de forma sistemática la ejecución de una tarea.
Los algoritmos son de uso común en el día a día, y se pueden encontrar en manuales
de uso, instrucciones para ejecutar un plan, o guías para ejecutar procesos. Sin
embargo, el uso del término es más común en el ámbito de la programación.
Un programa es una secuencia lógica de instrucciones para ejecutar tareas
específicas en una computadora. Dichas secuencias están escritas en código y son
diseñadas por programadores, usando uno o más algoritmos.
1. En que consiste el análisis de problemas

Es un método para resolver cualquier caso del problema de tal manera que dada
una entrada particular, el algoritmo produzca el resultado deseado.
La 'resolución de un problema' mediante un ordenador consiste en el proceso
que a partir de la descripción de un problema, expresado habitualmente en lenguaje
natural y en términos propios del dominio del problema, permite desarrollar un
programa que resuelva dicho problema.
Este proceso exige los siguientes pasos:
-Análisis del problema.
-Diseño o desarrollo de un algoritmo.
-Transformación del algoritmo en un programa (codificación).
-Ejecución y validación del programa...

Los dos primeros pasos son los más difíciles del proceso. Una vez analizado el
problema y obtenido un algoritmo que lo resuelva, su transformación a un programa
de ordenador es una tarea de mera traducción al lenguaje de programación deseado.
Análisis del problema informático
Cuando un usuario plantea a un programador un problema que resolver
mediante su ordenador, por lo general ese usuario tendrá conocimientos más o menos
amplios sobre el dominio del problema, pero no es habitual que tenga conocimientos
de informática. Por ejemplo, un contable que necesita un programa para llevar la
contabilidad de una empresa será un experto en contabilidad (dominio del problema),
pero no tiene por qué ser experto en programación.
2. Una vez realizado el análisis de problemas, que se debe hacer con el en el
algoritmo.

Si entendemos el problema, podemos atacarlo a su solución por pasos, y esos


pasos son el corpus de algoritmo. Por lo que, el análisis de algoritmos se ocupa de
compararlos con base en la cantidad de recursos computacionales que utiliza cada
algoritmo. Queremos ser capaces de considerar dos algoritmos y decir que uno es
mejor que el otro, porque es más eficiente en su uso de esos recursos o simplemente
tal vez porque utiliza una menor cantidad.
Desde esta perspectiva, qué vamos a hacer con el algoritmo, pues ordenar la
solución, por procesos, las dos funciones anteriores parecen muy similares. Ambos
usan en esencia el mismo algoritmo para resolver el problema de la sumatoria.
En este punto, es importante pensar más en lo que realmente queremos decir
con recursos computacionales. Hay dos formas diferentes de ver esto. Una forma es
considerar la cantidad de espacio o memoria que un algoritmo requiere para resolver
el problema. La cantidad de espacio requerida por una solución suele ser dictada por
el caso particular del problema. De vez en cuando, sin embargo, hay algoritmos que
tienen requisitos de espacio muy específicos, y en esos casos seremos muy
cuidadosos al explicar las variaciones.
Del mismo modo, el informático que va a resolver un determinado problema
puede ser un experto programador, pero en principio no tiene por qué conocer el
dominio del problema; siguiendo el ejemplo anterior, el informático que hace un
programa no tiene por qué ser un experto en contabilidad. Por ello, al abordar un
problema que se quiere resolver mediante un ordenador, el programador e
informático necesita de la experiencia del experto del dominio para entender el
problema.
El problema esté bien definido con el máximo detalle
Las especificaciones de las entradas y salidas del problema, deben ser descritas
también en detalle:
-¿Qué datos son necesarios para resolver el problema?
-¿Qué información debe proporcionar la resolución del problema?
Diseño del algoritmo
Un algoritmo consiste en una especificación clara y concisa de los pasos
necesarios para resolver un determinado problema, pero para poder diseñar
algoritmos es necesario disponer de una notación, que llamaremos ‘notación
algorítmica’, que permita:
-Describir las operaciones puestas en juego (acciones, instrucciones,
comandos,...)
-Describir los objetos manipulados por el algoritmo (datos/informaciones)
-Controlar la realización de las acciones descritas, indicando la forma en que
estas se organizan en el tiempo
Para poder describir cualquier tipo de acción de las que intervienen en un
algoritmo, diversos autores proponen el uso de un conjunto de construcciones lógicas
(secuencia, decisión e iteración) con las que es posible escribir cualquier programa.
Lo que sigue a continuación es la descripción de las diferentes construcciones
disponibles para el diseño de algoritmos.
Acciones elementales
Se entiende por acciones elementales aquellas que el ordenador es capaz de
realizar y que serán de dos tipos:
-Aritmético – lógicas: Operaciones que, a partir de unos determinados datos,
realizan un cálculo aritmético (suma, resta, multiplicación,...) o un cálculo lógico
(mayor que, menor que, igual que,...).Las primeras devuelven un valor numérico (4,
-5.67,...) y las segundas un valor lógico (verdadero o falso).
-De entrada – salida: Acciones que permiten capturar datos para su posterior
tratamiento (las de entrada) y guardar los resultados de dicho tratamiento (las de
salida).
Secuencia de acciones elementales
Cuando en un algoritmo se deben ejecutar varias acciones sucesivamente, éstas
se describen una detrás de otra según el orden en que deban ejecutarse. Si se desea se
puede emplear algún tipo de símbolo para separar dos acciones consecutivas. En el
siguiente ejemplo se muestra la descripción de acciones separadas por punto y coma
(símbolo que habitualmente se emplea como separador).

3. En qué consiste la corrida en frío de un algoritmo

Corrida en frío: Es la ejecución manual de cada sentencia del programa,


utilizando un conjunto de datos de entrada determinados y verificando que los
resultados son correctos. Como una técnica de depuración, el programador debe
utilizar datos que permitan recorrer todas las posibles rutas del programa
Para el algoritmo de cálculo del área de un paralelepípedo: ancho = 3.0 largo =
2.0 alto = 1.0 area = 2*(3.0*2.0 + 3.0*1.0 + 2.0*1.0) = 22.0

La traza de un algoritmo se puede definir como la ejecución manual de forma


secuencial de las sentencias que lo componen. La traza de un algoritmo (o programa)
indica la secuencia de acciones (instrucciones) de su ejecución, así como, el valor de
las variables del algoritmo (o programa) después de cada acción (instrucción).
La función principal que posee realizar la traza de un algoritmo es la de
comprobar que éste funciona correctamente o para realizar la etapa de depuración en
la que se intenta corregir errores, simplificar el algoritmo al máximo e incrementar su
eficacia y velocidad.
4. Diferencie entradas implícitas y entradas explicitas

Lenguajes y Lógica de Programación


Algunos lenguajes son muy explícitos en la sintaxis, facilitándose la lectura, sin
embargo son demasiado agotadores para la escritura de los programas. Debe buscarse
un balance adecuado entre la facilidad para la escritura y la facilidad para la lectura a
la hora de definir la sintaxis de un lenguaje.
La cantidad de veces que se repita dicho conjunto de instrucciones también
debe ser finita. En algunos casos esta cantidad de veces va a depender de una
condición explícita y en otros casos va a depender de una condición implícita.
Una condición es explícita cuando depende solamente de la misma ejecución
del programa sin que sea importante la participación del usuario. Asimismo una
condición es implícita cuando depende solamente de la voluntad del usuario y por lo
tanto la cantidad de iteraciones o repeticiones del ciclo podría llegar a ser diferente
cada vez pues sería posible que cambiara con cada usuario.
c. Deben estar claramente demarcados el inicio y el fin del ciclo.
d. Dentro de un ciclo podrá ir cualquiera de las otras estructuras que se han
estudiado incluyendo otros ciclos.

Entradas explícitas: las conversiones explícitas requieren el operador


Entradas - conversiones Entradas - conversiones explícitas
implícitas

Para los tipos numéricos Pero si no se puede realizar una conversión


integrados, se puede realizar una sin riesgo de perder información, el compilador
conversión implícita cuando el valor que requiere que se realice una conversión explícita,
se va a almacenar se puede encajar en la que se denomina conversión. Una conversión de
variable sin truncarse ni redondearse. tipos es una manera de informar explícitamente
Para los tipos enteros, esto significa que al compilador de que se pretende realizar la
el intervalo del tipo de origen es un conversión y se es consciente de que se puede
subconjunto apropiado del intervalo producir pérdida de datos. Para realizar una
para el tipo de destino. Por ejemplo, una conversión, especifique el tipo al que se va a
variable de tipo long (entero de 64 bits) convertir entre paréntesis delante del valor o la
puede almacenar cualquier valor que un variable que se va a convertir. El siguiente
tipo int (entero de 32 bits) pueda programa convierte un tipo double en un tipo int.
almacenar. En el ejemplo siguiente, el El programa no se compilará sin la conversión.
compilador convierte de forma implícita C#
el valor de num en la parte derecha a un
tipo long antes de asignarlo a bigNum. Copiar
C# class Test
{
Copiar static void Main()
// Implicit conversion. A long can {
// hold any value an int can hold, double x = 1234.7;
and more! int a;
int num = 2147483647; // Cast double to int.
long bigNum = num; a = (int)x;
Para obtener una lista completa de System.Console.WriteLine(a);
las conversiones numéricas implícitas, }
consulte la sección Conversiones }
numéricas implícitas del artículo // Output: 1234
Conversiones numéricas integradas. Para obtener una lista completa de las
conversiones numéricas explícitas admitidas,
consulte la sección Conversiones numéricas
explícitas del artículo Conversiones numéricas
integradas.

Como programador del ecosistema .Net, seguramente te has dado cuenta de que
el framework nos permite hacer conversiones entre tipos de datos que ya están
implementadas. Estas conversiones pueden ser de dos tipos:
 Conversiones implícitas
 Conversiones explícitas
Las conversiones implícitas son aquellas para las que no hace falta indicar entre
paréntesis (...) la conversión:
double variable = 10;
En este código estamos asignando a una variable de tipo double un valor de
tipo int:
De modo que: La única diferencia de significado entre las conversiones
explícitas e implícitas, tiene que ver con el hecho de si existe riesgo o no de perder
en información.
El primer caso (sin los paréntesis) es una conversión implícita. Da igual el valor
del literal int que escribamos: un double siempre va a poder contenerlo sin riesgo de
perder información ya que es un tipo de mayor capacidad.
Por el contrario, en el segundo caso estamos obligados a hacer una conversión
explícita. Esto es así porque un objeto de tipo double sí puede contener valores que
un tipo int, de menor capacidad, no puede representar. Por ejemplo:
int variable = (int)10.5;

Sentencias de Entrada/Salida: Se utilizan para transferir información entre los


diferentes dispositivos de entrada o salida (monitor, teclado , ratón, etc.) y la memoria
principal
Sentencias aritmético –lógicas: se utilizan para efectuar operaciones
aritméticas (suma, resta, multiplicación, etc) o lógicas (AND, OR)

Sentencias de Decisión: Permiten la selección de tareas alternativas sobre la


base de expresiones condicionales
Sentencias Repetitivas: Se utilizan para realizar un conjunto de sentencias un
número determinado o no determinado de veces.
Ejemplo: Inicio Escribir “Introduzca el Ancho del paralelepípedo” Leer
ANCHO ... float area { float ancho, alto, largo, area; printf(“Introduzca el Ancho del
paralelepípedo\n”); scanf(“%f”, &ancho); consideraciones semánticas Son nombres
que permiten referenciar o hacer mención de los diferentes componentes manipulados
por un programa. Deben ilustrar lo que representan, ejemplo Si se esta haciendo
referencia al color de un gato el identificador podria ser: ColorGato
Consideraciones sintácticas No pueden ser palabras reservadas El primer
caracter debe ser una letra Se establece una diferencia entre letras mayúsculas y
minúsculas
Ejemplos Válidos: TempeInic, Contador, Pres1, aux, valor_inicial No Válidos
01val, -promedio, parámetro_inic, ?aux
Son símbolos que permiten al compilador separar y reconocer los diferentes
componentes del lenguaje punto y coma (;) sirve para indicar la finalización de una
sentencia coma (,) sirve para separar los elementos consecutivos de una lista
paréntesis () enmarcan una lista de parámetros, expresiones o condiciones
corchetes [] enmarcan las dimensiones de arreglos llaves {} enmarcan un conjunto de
sentencias de una estructura dada.

5. Diferencie análisis de problemas y algoritmo

La diferencia entre un problema con un algoritmo que conlleve a un programa,


es que si bien ambos hacen referencia una serie de instrucciones, los algoritmos
pueden estar escritos en código o en lenguaje natural, mientras que los programas
sólo pueden estar escritos en lenguaje de programación.
Hay una diferencia importante entre un programa y el algoritmo
subyacente que el programa está representando.

Un programa Un algoritmo
Un programa, por otro lado, es un Un algoritmo es una lista
algoritmo que ha sido codificado en algún genérica, paso a paso, de instrucciones
lenguaje de programación. para resolver un problema.
Un programa, por otro lado, es un Es un método para resolver cualquier
algoritmo que ha sido codificado en algún caso del problema de tal manera que
lenguaje de programación. dada una entrada particular, el
Pueden existir muchos programas para el algoritmo produzca el resultado
mismo algoritmo, dependiendo del programador deseado.
y del lenguaje de programación que se esté El algoritmo utiliza la idea de una
utilizando. Ejemplo: Sumatoria de los primeros n variable acumuladora que se inicializa
enteros (active1) en 0.
La solución itera entonces a través de
los n enteros, agregando cada uno a la
variable acumuladora.
Gracias profe. Por el material de apoyo.
Estado de la entrega Enviado para calificar
Estado de la Sin calificar
calificación
Fecha de martes, 3 de marzo de 2020, 23:55
entrega
Tiempo restante 6 días 14 horas
Última domingo, 23 de febrero de 2020, 18:29
modificación
Archivos
 T 1 Cuestionario – Algoritmo - problemas -Gianpiero
enviados
Fusco

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