Clase de problemas No computables: No existe un algoritmo. Computables Tratables: Existe un algoritmo eficiente. Intratable: No existe algoritmo eficiente. Un problema intratable puede convertirse en tratable si se encuentra un algoritmo que lo resuelva.
Informática Disciplina del estudio sistematizado de los procesos algorítmicos que describen y transforman información, su teoría, análisis, diseño, eficiencia, implementación y aplicación. La informática es una disciplina científica, matemática y una ingeniería. Tiene tres formas de pensar propias: Teoría, abstracción y diseño. Las tres se complementan para la resolución de la mayoría de los problemas.
Especificación Implementación Especificación: Es el proceso de analizar los problemas del mundo real y determinar en forma clara y concreta el objetivo que se desea alcanzar. El modelo debe ser interpretado sin errores por un autómata. Implementación: Traducir a un conjunto de instrucciones permitidas y definidas por sus reglas sintácticas y valor semántico lo que fue especificado.
Variables Constantes Variables: Denotan una magnitud o indicador del proceso. Se caracteriza por un nombre, un tipo de dato y el valor que tiene en un momento determinado. Utilizadas para los datos de entrada, intermedios y de salida. Constante: Nombre asociado a un valor que permanece sin modificación durante todo el proceso
Las metas que se persiguen son que el estudiante: Retenga el conocimiento, lo comprenda y haga uso activo del mismo. Adquiera un conocimiento organizado. Desarrolle habilidades intelectuales y haga uso activo de un pensamiento creativo. Fomentar pasiones intelectuales como la curiosidad. Que autogestionar su conocimiento, a sintetizar, a abstraer . Que haga uso de lenguajes del pensamiento, Que sepa como volcar ideas en el papel
Tipos de Datos Identifica o determina un dominio de valores y el conjunto de operaciones aplicables sobre esos valores. Primitivos. Derivados. Abstractos. Concordancia entre valores y operaciones. Baca la vuela Errores sintacticos, errores gramaticales La vaca vuela Error de concordancia entre objeto vaca y operación volar
Expresiones Sentencias Léxico Expresiones: secuencia de operadores y operandos que se reduce a un solo valor. Sentencias: acción produce un efecto, puede ser primitiva o no primitiva. Léxico: Descripción del conjunto de acciones e informaciones a partir de la cual se expresa el esquema de comportamiento del algoritmo.
Pasos para resolver un algoritmo Comprender el problema. Identificar información y acciones a incluir en el lexico (constantes, tipos, variables y acciones). Encontrar un camino de secuenciar las acciones para obtener el resultado, es decir para alcanzar la postcondición a partir del estado inicial que cumple con la precondición.
Acciones primitivas y derivadas Acciones primitivas: Incorporadas por el lenguaje. Acciones derivadas: realizadas mediante la combinacion de acciones primitivas con el objeto de desarrollar una tarea en particular. Son complementarias y pueden ser desarrolladas por el programador.
Acciones primitivas Asignacion: De entrada: permite cambiar el valor de una variable. Ya sea en forma interna o a través de algun dispositivo de entrada. De salida: Permite mostrar el valor de una variable a través de algun dispositivo de salida.
Acciones primitivas Analisis de casos: Permiten especificar la partición del dominio de datos. Instrucción según: Especifica la partición en varios subdominios y asocia acciones a cada uno de ellos. Instrucción si entonces si_no: cuando en un análisis de casos solo se tienen dos.
Acciones primitivas Repeticiones: permiten ejecutar una determinada cantidad de veces una accion o conjunto de acciones. Exactas: se conoce con precisión la cantidad de veces que las acciones se repetiran. No exactas: la finalización del ciclo depende de alguna condición, pueden ser pre o pos condicionales.
Ejemplo PROBLEMA: Dada una temperatura en grados Fahrenheit, escribir un algoritmo que obtenga la temperatura en grados Celsius. LEXICO {Nombres significativos para identificadores significativos} tempFahrenheit : Real // Contiene el valor que representa la temperatura en ºF tempCelsius : Real // Contiene el valor que representa la temperatura en ºC CERO_ABSOLUTO = -459.58 // Representa el valor del cero absoluto en ºF ConvertirFahrenheitCelsius : Accion PRE {TempFahrenheit >= CERO_ABSOLUTO} POS {Convierte a Celsius una temp. En Fahrenheid} tempCelsius = (5.0 / 9.0) * (tempFahrenheit 32.0) FIN ConvertirFahrenheitCelsius ALGORITMO Leer (tempFahrenheit) ConvertirFahrenheitCelsius Escribir(´La temp. En Celsius es : ´, tempCelcius) FIN
Ejemplo PROBLEMAS no algoritmicos. AA + BB = CBC DONALD + GERALD = ROBERT El papa de Rebeca tiene 5 hijos chacha, cheche, chichi, chuchu, como se llama el otro hijo Un granjero tenia 20 ovejas, todas menos nueve escaparon. Cuantas le quedaron? Una botella de vino cuesta 10 $, el vino vale 9 $ mas que la botella. Cuanto vale cada cosa? Matriz cuadrada impar N*N colocar N2 dígitos sin repetir 8 1 6 3 5 7 4 9 2 2 + 7 118 = 129
Problemas Paramo de posibilidades Meseta aparente sin indicios Angosto cañon de exploracion Oasis de falsas promesas Salto del pensamiento Larga busqueda Escaso avance aparente Acontecimiento desencadenante Chasquido cognitivo Transfomacion
Program Calculo; var notaTeoria, notaPractica, notaFinal : real; begin writeln; writeln('***** Calculo de la nota final*****'); write('Nota de teoria: '); readln(notaTeoria); write('Nota de practicas: '); notaFinal := (notaTeoria + notaPractica) / 2; write('La nota final es: , notaFinal:5:2); readln end. Ejemplo en Pascal
#include < stdio.h> #include < conio.h> int main () { float notaTeoria, notaPractica; float notaFinal; printf(" Calculo de la nota final de una asignaturan"); printf("Nota de teoria: "); scanf(" %f",¬aTeoria); printf("Nota de practicas: "); scanf(" %f",¬aPractica); notaFinal = (notaTeoria + notaPractica)// 2. 0; printf("La nota final es: %.2fn", notaFinal); printf("nPulse enter para continuar"); getchar(); return 0; } Ejemplo en C
Composicion secuencial Tecnica de descomposicion algoritmica que disminuye la complejidad de un problema mediante la division en probemas mas pequeños, cuya solucion se puede abordar en forma independiente y la secuenciacion parcial permite alcanzar la solucion final.
Ejemplo PROBLEMA: Dada una temperatura en grados Fahrenheit, escribir un algoritmo que obtenga la temperatura en grados Celsius. LEXICO {Nombres significativos para identificadores significativos} tempFahrenheit : Real // Contiene el valor que representa la temperatura en ºF tempCelsius : Real // Contiene el valor que representa la temperatura en ºC CERO_ABSOLUTO = -459.58 // Representa el valor del cero absoluto en ºF ConvertirFahrenheitCelsius : Accion PRE {TempFahrenheit >= CERO_ABSOLUTO} POS {Convierte a Celsius una temp. En Fahrenheid} tempCelsius = (5.0 / 9.0) * (tempFahrenheit 32.0) FIN ConvertirFahrenheitCelsius ALGORITMO Leer (tempFahrenheit); ConvertirFahrenheitCelsius; Escribir(La temp. En Celsius es : ´, tempCelcius); FIN
Analisis de casos Consiste en descomponer el dominio de los datos en varios subdominios o casos y asociar a cada uno de ellos con una o mas acciones. Cada caso es especificado mediante expresiones logicas mutuamente excluyentes y la union de los casos debe cubrir el dominio inicial de los datos.
Analisis de casos Los estados iniciales de cada caso deben cubrir el dominio de los datos de entrada. Debe existir un caso para cualquier posible entrada. Las condiciones de cada caso deben ser mutumente excluyentes.
Analisis de casos
0 < = N < 5 5< =N < 7 7< =N< =10 0 < = N< =5 5< =N< =7 7< =N< =10 0 < = N < 5 5 < N < 7 7 < N< =10 Ejemplo de posibles descomposiciones de valores entre 1 y 10
Instrucción segun SEGÚN c1 … cn e1 : a1 e2 : a2 . . . en : an FIN_SEGUN SEGÚN c1 … cn e1 : a1 e2 : a2 . . . en : an EN_OTRO_CASO : an+1 FIN_SEGUN Especifica la particion del dominio de datos en varios subdominios y asocia acciones a cada uno de ellos.
PROBLEMA: Desarrollar un programa que simule una calculadoa simple. Que ingrese dos oprandos y un operador. Según el operador que muestre la suma, resta, multiplicacion o division. LEXICO Operando1, Operando2 : Entero; Operador : Carácter; ALGORITMO Leer (Operando1, Operando2, Operador); SEGÚN Operador Operador = ´+´ : Escribir (Operando1 + Operando2) Operador = ´-´ : Escribir (Operando1 – Operando2) Operador = ´*´ : Escribir (Operando1 * Operando2) Operador = ´/´ : Escribir (Operando1 Div Operando2) FIN_SEGUN FIN
PROBLEMA: Desarrollar un programa que simule una calculadoa simple. Que ingrese dos oprandos y un operador. Según el operador que muestre la suma, resta, multiplicacion o division. LEXICO Operando1, Operando2 : Entero; Operador : Carácter; ALGORITMO Leer (Operando1, Oprando, Operador); SEGÚN Operador Operador = ´+´ : Escribir (Operando1 + Operando2) Operador = ´-´ : Escribir (Operando1 – Operando2) Operador = ´*´ : Escribir (Operando1 * Operando2) Operador = ´/´ : Escribir (Operando1 Div Operando2) EN_OTRO_CASO : Escribir(Operador no valido) FIN_SEGUN FIN
Instrucción SI ENTONCES SI_NO Cuando el analisis de casos solo tiene 2 casos, la instrucción según se puede simplificar con la instrucción SI exp ENTONCES a1 SI_NO a2 FIN_SI Si exp ENTONCES a1 FIN_SI
PROBLEMA: Obtener el mayor de dos numeros LEXICO x, z, mayor : Entero; ALGORITMO PRE { ( x = X) y ( z = Z)} POST { (( x>=z) ?(Mayor = X)) y ((z>x)?(Mayor=Z)) } Leer (x, z); SI x >= z ENTONCES Mayor ? x SI_NO Mayor ?z; FIN_SI Escribir(`El mayor es : ´,mayor); FIN
Página anterior | Volver al principio del trabajo | Página siguiente |