Algoritmos y Programación T 1 Cuestionario – Algoritmo - Análisis de problemas - Corrida en frío

Page 1

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 implícitas Para los tipos numéricos integrados, se puede realizar una conversión implícita cuando el valor que se va a almacenar se puede encajar en la variable sin truncarse ni redondearse. Para los tipos enteros, esto significa que el intervalo del tipo de origen es un subconjunto apropiado del intervalo para el tipo de destino. Por ejemplo, una variable de tipo long (entero de 64 bits)

Entradas - conversiones explícitas

Pero si no se puede realizar una conversión sin riesgo de perder información, el compilador requiere que se realice una conversión explícita, que se denomina conversión. Una conversión de tipos es una manera de informar explícitamente al compilador de que se pretende realizar la conversión y se es consciente de que se puede producir pérdida de datos. Para realizar una conversión, especifique el tipo al que se va a 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 programa, por otro lado, es un algoritmo que ha sido codificado en algún lenguaje de programación. Un programa, por otro lado, es un algoritmo que ha sido codificado en algún lenguaje de programación. Pueden existir muchos programas para el mismo algoritmo, dependiendo del programador y del lenguaje de programación que se esté utilizando. Ejemplo: Sumatoria de los primeros n enteros (active1)

Un algoritmo Un algoritmo es una lista genérica, paso a paso, de instrucciones para resolver un problema. Es un método para resolver cualquier caso del problema de tal manera que dada una entrada particular, el algoritmo produzca el resultado deseado. El algoritmo utiliza la idea de una variable acumuladora que se inicializa 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 Estado de la

Enviado para calificar Sin calificar

calificación Fecha de

martes, 3 de marzo de 2020, 23:55

entrega Tiempo

6 días 14 horas

restante Última

domingo, 23 de febrero de 2020, 18:29

modificación Archivos

T 1 Cuestionario – Algoritmo - problemas -Gianpiero

enviados

Fusco


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.