fund a mentos

Upload: golvin-leonel-martinez-rivas

Post on 01-Mar-2016

216 views

Category:

Documents


0 download

DESCRIPTION

ff

TRANSCRIPT

  • UNIVERSIDAD NACIONAL AUTNOMA DE MXICOFACULTAD DE INGENIERIADIVISIN DE INGENIERA ELCTRICACOMPUTACIN PARA INGENIEROSNOTA IMPORTANTE: Para complementar este tema es necesario bajar e imprimir el artculo Herramientas de Programacin que se encuentra en el apartado Artculos

    PROF. ING. JAIME ALFONSO REYES CORTS

  • FUNDAMENTOS DE ALGORITMOS

    Computabilidad: Trmino matemtico para nombrar a los estudios sobre teora de la computacin. Consiste en encontrar la representacin adecuada para la descripcin de un problema o un fenmeno.Conocimiento transmisible: se da si se cierra el cicloDescripcinRepresentacin

  • FUNDAMENTOS DE ALGORITMOS

    Modelo: Especificacin, generalmente en trminos de un lenguaje matemtico, de los pasos necesarios para reproducir, aqu y ahora, un subconjunto determinado de la realidad descrito previamentePregunta:Todo aquello que es descriptible es representable?Habr una representacin que simule completamente lo descrito?Cuanto ms adecuada sea la descripcin del proceso, tanto mejor ser el resultado que emula lo real

  • FUNDAMENTOS DE ALGORITMOS

    Supongamos que se crea una mquina para producir descripciones en trminos de cadenas de smbolos.Dada una descripcin cualquiera, la analiza durante un tiempo finito y despus emite su dictmen (si o no) con respecto al problema

    Pregunta : existir una mquina as?DescripcinProcedimientoDedecisinSINOHAYSOLUCIN

  • FUNDAMENTOS DE ALGORITMOS

    Mquina de Turing: Es un modelo matemtico para especificar formalmente los pasos primitivos necesarios para representar una descripcin en trminos totalmente explcitos y claros, sin hacer la menor referencia a conceptos u operaciones ambiguos o sobreentendidos.Elementos:Una cinta de longitud infinita, dividida en celdas (cada celda puede contener un smboloUn diccionario de smbolos predefinido (De aqu se toman los smbolos para las celdas)Un control finito, que posee un cojunto de estados y que tiene la capacidad de examinar algn smbolo de alguna celda y tomar una decisin (La decisin depende del smbolo observado y del estado en el que se encuentre en ese momento)

  • FUNDAMENTOS DE ALGORITMOS

    Funcionamiento: Mediante un conjunto de funciones matemticas simples se indica el comportamiento completo del proceso que est siendo representado, mostrando detalladamente los estados por los que atraviesa para lograrlo. Se parte de un estado inicial y se recorre un conjunto de estados intermedios hasta llegar al estado final, que marca entonces el final de la computacinS10S0S7S14S4S2CONTROLFINITO

  • FUNDAMENTOS DE ALGORITMOS

    Teora de la computabilidad Encontrar formas de representar descripciones de procesos, de manera tal que siempre se pueda decir que la solucin de un problema existe o noUn problema se dice que es Computable si existe una mquina de decisin para lPregunta: Todos los procesos son computables?Un problema se dice que es No Computable si la mquina de decisin para l llega a un estado en donde no es capaz de decir que si o que no

  • FUNDAMENTOS DE ALGORITMOSDefinicin o anlisis del problema: Descripcin especfica y comprensible del problema a resolver Diseo del algoritmo: Planteamiento de los pasos a seguir para resolver el problemaTransformacin del algoritmo en un programa independientemente del lenguaje de programacin.Ejecucin y validacin del programaMejoras y correcciones al programa

  • FUNDAMENTOS DE ALGORITMOS

    Algoritmo: Conjunto ordenado y finito de pasos u operaciones que permite hallar la solucin de un problema. Es un mtodo formal y sistemtico de representar la descripcin de un proceso. CARACTERSTICAS:Definido: debe indicar el orden de la realizacin de cada paso y no debe tener ambigedadPreciso: Si se sigue dos veces o ms se obtendr e el mismo resultado cada vezFinito: Debe terminar en algn momento. Tiene un nmero determinado de pasos

  • FUNDAMENTOS DE ALGORITMOSCorrecto: Sin erroresDebe tener al menos una salidaSu solucin debe ser concretaDebe ser sencillo y legibleEficiente y efectivoSe ha de desarrollar en el menor tiempo posibleUn algoritmo debe describir tres partes:Entrada(s) : elementos o condiciones iniciales necesarios para resolver el problema.Proceso : elaboracin del procedimiento.Salida(s): Resultados que se desean obtener

  • FUNDAMENTOS DE ALGORITMOS

    Pseudocdigo: Representacin descriptiva de las operaciones de un algoritmo. Representa una secuencia lgica de actividades, que llevarn en conjunto a la solucin de un problema. Los elementos que debe llevar un algoritmo sonCabecera del algoritmo: Existen pasos o procedimientos que se realizan para comenzar un programa. Siempre que se haga debe ponerse un encabezado de programa, en donde debe expresarse el identificador o nombre correspondiente con la palabra reservada que seale el lenguaje, generalmente sta suele ser program que en algoritmia significa algoritmoDeclaracin de Variables: En este punto se describen todas las variables que son usadas en el algoritmo, haciendo una lista de sus nombres y especificando a qu tipo corresponde cada uno.

  • FUNDAMENTOS DE ALGORITMOSDeclaracin de Constantes: En este punto se declararn todas las constantes de carcter estndar; es decir, que tengan nombre y un valor ya conocido o valores que ya no pueden variar en el transcurso del algoritmoCuerpo del algoritmo: Una vez aadidas la cabecera y la declaracin de variables y constantes se procede a realizar los pasos del algoritmoA continuacin se muestra un ejemplo:

  • FUNDAMENTOS DE ALGORITMOSAlgoritmo rea_Crculo{Clculo del rea de un circulo pidiendo el radio al usuario}

    var r, A: realcte: p:real

    InicioMostrar Dame el radioLeer rA

  • FUNDAMENTOS DE ALGORITMOSDiagrama de flujo: Es la representacin grfica de las operaciones de un algoritmo. Contiene smbolos grficos que se encuentran estandarizados. Los smbolos ms comnes son:

  • Diagramas de flujo ms comnes

  • Diagramas de flujo ms comnes (cont.)

  • Iniciovar r, A: realcte: p:realDame el radio:rA
  • FUNDAMENTOS DE ALGORITMOSInstrucciones que se le dan a la ComputadoraUn algoritmo se compone de muchos pasos, todos diferentes, los que son interpretados como instrucciones (lenguaje de bajo nivel), sentencias o proposiciones (lenguaje de alto nivel). Entonces, en un programa, la secuencia de instrucciones especifica las operaciones que la computadora debe realizar.

  • FUNDAMENTOS DE ALGORITMOSLas instrucciones bsicas y comunes pueden dividirse en cuatro grupos:Instrucciones de Entrada /Salida: Transferencia de datos e informacin entre dispositivos perifricos (teclado, impresora, unidad de disco, etc.) y memoria central.Instrucciones Aritmtico-Lgicas: Tienen la funcin de ejecutar operaciones aritmticas (suma, resta, multiplicacin, divisin, potenciacin), lgicas (operaciones and, or, not, etc.).Instrucciones Selectivas: Estas permiten la eleccin de una tarea entre varias alternativas en funcin de los resultados de diferentes expresiones condicionales.Instrucciones Repetitivas: Permiten la repeticin de secuencias de instrucciones, un nmero determinado o indeterminado de veces.

  • FUNDAMENTOS DE ALGORITMOSCONSTANTES Y VARIABLESLas constantes son datos cuyos valores no cambian, pero existen datos cuyos valores s varan durante la ejecucin del programa, a stos los llamamos variables. En la mayora de los lenguajes de programacin se permiten diferentes tipos de constantes: enteras, reales, caracteres y boolean o lgicas, quienes representan datos de estos tipos. Entonces una variable se conoce como un objeto, o partida de datos cuyo valor puede cambiar durante la ejecucin del algoritmo o programa. A las variables y a las constantes se les conoce o identifica por los atributos siguientes: nombre o identificador que lo asigna y tipo que describe el uso de la variable.

  • FUNDAMENTOS DE ALGORITMOSIdentificadores:Deben empezar con letra, excepto o , o guin bajo y estar seguidos de cero o ms letras, nmeros o guiones bajosNo se permiten smbolos como$ ! ? | & - % # @ , . / \ o espacios en blanco y tabuladoresPalabras reservadas: Existe un conjunto palabras que se utilizan tanto en pseudocdigo como en los lenguajes de programacin no pueden ser utilizadas como nombres de identificadores ni de funciones.

  • FUNDAMENTOS DE ALGORITMOSOPERACION DE ASIGNACIONSe le otorgan valores a una variable. Esta operacin de asignacin se conoce como instruccin o sentencia de asignacin, si es que est en un lenguaje de programacinLa operacin de asignacin es representada por un smbolo u operador:La accin de asignar puede ser destructiva ya que puede perderse el valor que tuviera la variable antes, siendo reemplazado por el nuevo valor. Las acciones de asignacin se clasifican segn sea el tipo de expresiones en: Asignacin aritmticas, Asignacin lgica y Asignacin de caracteres

  • FUNDAMENTOS DE ALGORITMOSEXPRESIONESSon la combinacin de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales, idea que puede ser utilizada en notaciones de matemtica tradicional. Los valores de las variables nos permitirn determinar el valor de las expresiones, debido a que stos estn implicados en la ejecucin de las operaciones indicadas. Estas constan de operandos y operadores.Segn el tipo de objetos que manipulan, pueden clasificarse en:Aritmticas -> resultado tipo numrico.relacionales -> resultado tipo lgico.lgicas -> resultado tipo lgico.caracter -> resultado tipo caracter.

  • FUNDAMENTOS DE ALGORITMOSExpresiones AritmticasEstas expresiones son anlogas a las frmulas matemticas. Las variables y constantes son numricas (real o entera) y las operaciones son las aritmticasOperadores aritmticosPrecedencia- (operador monario)^ (exponenciacin), (radicacin)*, / (divisin real),+, -div o / (cociente de divisin entera) , mod o % (residuo de divisin entera)

  • FUNDAMENTOS DE ALGORITMOSExpresiones lgicas: Su valor es siempre verdadero o falso. Se forman combinando constantes lgicas , variables lgicas y otras expresiones lgicas, utilizando los operadores lgicos y los operadores relacionalesOperadores relacionalesPrecedencia>, =,
  • FUNDAMENTOS DE ALGORITMOSOperadores lgicosPrecedencia! o ~ o not (negado)and o && (conjuncin)or o || (disyuncin)Nota: En C un valor falso se toma como 0 y un valor verdadero se toma como cualquier valor diferente de cero

    ANOTFVVF

    ABANDORFFFFFVFVVFFVVVVV

  • FUNDAMENTOS DE ALGORITMOSENTRADA Y SALIDA DE INFORMACIONEl ingreso de datos es importante para que la computadora realice los clculos; esta operacin es la entrada, luego, estos datos se convertirn en resultados y sern la salida.A la entrada se le conoce como operacin de Lectura (read). La operacin de lectura se realiza a travs de los dispositivos de entrada que son (teclado, unidades de disco, CD-Rom, etc.). La operacin de salida se realiza por medio de dispositivos como (monitor, impresora, etc), a esta operacin se le conoce como escritura (write).

  • INTRODUCCION A LA PROGRAMACION ESTRUCTURADAEl entendimiento de los algoritmos y luego de los programas, exige que su diseo sea fcil de comprender y su flujo lgico un camino fcil de seguirLa descomposicin de programas en mdulos ms simples de programar se dar a travs de la programacin modular, y la programacin estructurada permitir la escritura de programas fciles de leer y modificar.

  • PROGRAMACION MODULAREste es uno de los mtodos para el diseo ms flexible y de mayor performance para la productividad de un programa. En este tipo de programacin el programa es dividido en mdulos, cada uno de las cuales realiza una tarea especfica, codificndose independientemente de otros mdulos. Cada uno de stos son analizados, codificados y puestos a punto por separado.Los programas contienen un mdulo denominado mdulo principal, el cual supervisa todo lo que sucede, transfiriendo el control a submdulos (los que son denominados subprogramas), para que puedan realizar sus funciones. Sin embargo, cada submdulo devolver el control al mdulo principal una vez completada su tarea. Si las tareas asignadas a cada submdulo son demasiado complejas, se proceder a una nueva subdivisin en otros mdulos ms pequeos an.

  • PROGRAMACION MODULAREste procedimiento se realiza hasta que cada uno de los mdulos realicen tareas especficas. Estas pueden ser entrada, salida, manipulacin de datos, control de otros mdulos o alguna combinacin de stos. Puede ser que un mdulo derive el control a otro mediante un proceso denominado bifurcacin, pero se debe tomar en cuenta que esta derivacin deber ser devuelta a su mdulo original.Los mdulos son independientes, de modo que ningn mdulo puede tener acceso directo a cualquier otro mdulo, excepto el mdulo al que llama y sus submdulos correspondientes. Sin embargo, los resultados producidos por un mdulo pueden ser utilizados por otro mdulo cuando se transfiera a ellos el control.

  • PROGRAMACION MODULAR

  • PROGRAMACION ESTRUCTURADACuando hablamos de Programacin Estructurada, nos referimos a un conjunto de tcnicas que con el transcurrir del tiempo han evolucionado. Gracias a stas, la productividad de un programa se ve incrementada de forma considerable y se reduce el tiempo de escritura, de depuracin y mantenimiento de los programas. Aqu se hace un nmero limitado de estructuras de control, se reduce la complejidad de los problemas y se minimiza los errores.Gracias a la programacin estructurada, es ms fcil la escritura de los programas, tambin lo es su verificacin, su lectura y mantenimiento. Esta programacin es un conjunto de tcnicas que incorpora:diseo descendente (top-down)recursos abstractosestructuras bsicas

  • PROGRAMACION ESTRUCTURADALos recursos abstractos son utilizados como un apoyo en la programacin estructurada, en vez de los recursos concretos de los que se dispone (lenguaje de programacin determinado).Para separar un programa en trminos de recursos abstractos debemos descomponer acciones complejas en acciones ms simples, las que son capaces de ejecutar o constituyen instrucciones de computadora disponible.

  • PROGRAMACION ESTRUCTURADADiseo descendente (Top-Down)Este es un proceso en el cual el problema se descompone en una serie de niveles o pasos sucesivos (stepwise). Esta metodologa consiste en crear una relacin entre las etapas de estructuracin, las que son sucesivas, de tal forma que se interrelacionen mediante entradas y salidas de informacin. Considerando los problemas desde dos puntos de vista: que hace? y cmo lo hace?

  • PROGRAMACION ESTRUCTURADA

  • FUNDAMENTOS DE ALGORITMOSEstructuras bsicas de controlEn un programa estructurado, el flujo lgico se gobierna por las estructuras de control bsicas:SecuencialesSelectivas o de seleccinRepetitivasTeorema de la Programacin Estructurada:Un programa propio puede ser escrito utilizando slo los tres tipos de estructuras de control antes mencionadas

  • PROGRAMACION ESTRUCTURADAESTRUCTURA SECUENCIALEs la estructura en donde una accin (instruccin) sigue a otra de manera secuencial.Las tareas se dan de tal forma que la salida de una es la entrada de la que sigue y as en lo sucesivo hasta cumplir con todo el proceso.

  • PROGRAMACION ESTRUCTURADAESTRUCTURA DE DECISINDecisin: Elegir una alternativa o camino en el flujo del algoritmo cuando se cumpla o no una determinada condicin.El resultado de la condicin se evala como falso o verdadero y se obtiene al comparar dos expresiones mediante operadores relacionales. De ser necesario realizar ms de una comparacin al mismo tiempo se asocian con operadores lgicos

  • Gua de referencia rpida de lenguaje CEstructuras de control

  • PROGRAMACION ESTRUCTURADAEstructuras de controlDecisiones (cont.)En algunas ocasiones para realizar las comparaciones tambin se hace uso de una variable booleana o bandera (flag). Una bandera es una variable que slo puede tener dos valores: falso o verdadero

  • PROGRAMACION ESTRUCTURADAEstructuras de controlCiclo, loop, lazo o bucle: Repetir un conjunto de instrucciones varias veces con base en que se cumpla o no una determinada condicin.A cada ejecucin del conjunto de instrucciones en un ciclo se le llama iteracin

  • PROGRAMACION ESTRUCTURADA

    Tipos de ciclos: Mientras (while): Se lleva a cabo mientras se cumpla una condicin. Primero evala la condicin y luego ejecuta el conjunto de instrucciones. De no cumplirse la condicin desde el inicio, no hace nada y sigue con el flujo normal del algoritmoHacer mientras (do while): Realiza un conjunto de instrucciones y continua mientras se cumpla una condicin. A diferencia del anterior, este ciclo se ejecuta por lo menos una vezDesde hasta (for): Se utiliza cuando se conoce el nmero de veces que se va a repetir un conjunto de instrucciones. Requiere de un valor inicial, un valor final y un contador

  • PROGRAMACION ESTRUCTURADAContador: variable que almacena el nmero de veces que se ha repetido un conjunto de instrucciones en un ciclo; en otras palabras, indica el nmero de veces que se ha ejecutado el cicloEn un ciclo, tambin hay otro tipo de que se hacer usa frecuentementeAcumulador: aquella variable que almacena el resultado de una operacin anterior y se utiliza para obtener el siguiente resultado

  • PROGRAMACION ESTRUCTURADADecisiones anidadasCuando se tiene una serie de estructuras de control de la forma

  • PROGRAMACION ESTRUCTURADAsi condicin1 entoncessi condicin2 entoncessi condicinN entoncessinofin_sisinofin_sisinofin_si

  • PROGRAMACION ESTRUCTURADADecisin mltiple o alternativa selectiva mltiple (segn_sea, caso de/case)Cuando una variable puede tomar varios valores, generalmente de tipo entero o caracter, se puede hacer uso de la decisin anidada para evaluar los distintos casos, sin embargo, se puede simplificar al poner una estructura del tipo

  • PROGRAMACION ESTRUCTURADA

  • PROGRAMACION ESTRUCTURADAArreglosUn arreglo es un conjunto ordenado de variables del mismo tipo que se encuentran reunidas bajo un mismo nombreLa forma de declarar un arreglo en trminos de algoritmos esvar arrNombre(7): arreglo de tipo var arrNombre(1..7):tipoLa forma de acceder a cada elemento del arreglo es por medio de un ndice, p. ej. var arrentero(1..7):enteroarrentero(4) 1810071442-10

    0

    1

    2

    3

    4

    5

    6

  • Funciones comunes a todos los lenguajes de programacin

    MatemticaAlgortmicaMatemticaAlgortmicaabs(x)sinh(x)sqrt(x)cosh(x)exp(x)tanh(x)log(x)asinh(x)log10(x)acosh(s)sin(x)atanh(x)cos(x)tan(x)asin(x)acos(s)atan(x)

  • Cadenas y sus operacionesRepresentacinDependiendo del lenguaje las cadenas se pueden representar entre comillas simples o doblesPor ejemplo:

    cadena con comillas simples

    cadena con comillas dobles

  • Cadenas y sus operacionesDeclaracin y asignacin de cadenasEn general, las cadenas son un tipo de variable, sin embargo, depende del lenguaje de programacin la forma en que se declaren y se asignenEn lenguaje algortmico simplemente podemos declararlas as:var nombre_cadena: cadenavar nombre_cadena: string

  • Cadenas y sus operacionesAl declararlas de esta forma podemos hacer uso de varias funciones y operaciones que permiten manipularlas y que son comunes en los lenguajes de programacin. La forma en como se asigna una cadena en lenguaje algortmico puede ser de la siguiente manera:var micadena: cadenamicadena
  • Cadenas y sus operacionesEn lenguaje algortmico las funciones que manipulan cadenas llevan un smbolo de $ al final de su nombre.Longitud de una cadena: Devuelve el nmero de caracteres que contiene la cadena

    var len:enterolen

  • Cadenas y sus operacionesLeer y mostrar cadenas: Para nicamente leer o mostrar cadenas se hace uso de las funciones read$ y print$, respectivamente. Por ejemplo:

    var micadena: cadenamicadena

  • Cadenas y sus operacionesConcatenacin de cadenasLa concatenacin es una operacin especial que consiste en la yuxtaposicin de 2 o ms cadenas. En lenguaje algortmico la podemos representar como:

    var cadena1, cadena2, cadena3: cadenacadena1

  • Cadenas y sus operaciones

    Observe que la concatenacin no es conmutativa

    cadena3

  • Cadenas y sus operacionesComparacin de cadenas y ordenamientoSe pueden comparar cadenas lexicogrficamente y determinar si son iguales o no lo son, si cadena2 = cadena1print$ Las cadenas son igualessinoprint$ Las cadenas no son iguales.

  • Cadenas y sus operacioneso si una de ellas se encuentra en orden alfabtico primero que otra

    si cadena2 > cadena1 print$ cadena2, va despus de print$ cadena1sinoprint$ cadena1, va despus de print$ cadena2{podra usarse < pero habra que cambiar el orden de las sentencias}

  • Cadenas y sus operacionesObtencin de una subcadenaOtra de las operaciones ms comunes con cadenas es la obtencin de una subcadena a partir de un caracter, por ejemplo:

    var cadena1, cadena2: cadenacadena1

  • Cadenas y sus operacionesDel ejemplo anterior se obtuvo una subcadena que empieza con el caracter indicado, sin embargo, si no existiera dicho caracter la funcin podra devolver el valor NULL (nil, null)NULL es un valor especial que, en este caso, indica que la cadena est vaca o que no existe la cadena solicitada y se debera de tratar como errorcadena2
  • Pueden existir tambin cadenas vacas y su longitud es de 0.Asignar una cadena vaca a una variable de tipo cadena podra servir para limpiar el contenido de esa variable.No todos los lenguajes permiten cadenas vacasCadenas y sus operaciones

  • Es posible obtener una subcadena a partir de que se le indique las posiciones inicial y final o solamente la posicin inicial

    Podra regresar NULL si las posiciones de la cadena exceden la longitud de la mismaCadenas y sus operacionescadena2

  • Cadenas y sus operacionesBsqueda de subcadenasUna operacin frecuente es tratar de localizar si una cadena forma parte de una cadena ms grande o buscar la posicin en que aparece determinado caracter o secuencia de caracteres de textovar cadena1: cadenavar posicion:enterocadena1
  • Cadenas y sus operacionesLa funcin instr$ devuelve el ndice de la posicin donde se encuentra el primer elemento de la subcadena deseadaSi la subcadena no existe en la cadena devuelve 0.

  • Cadenas y sus operacionesInsercin de una cadena dentro de otra.

    Se inserta una cadena dentro de otra en la posicin indicada. Si la posicin excede a la longitud de la cadena devuelve NULL

    var cadena1, cadena2, cadena3: cadenacadena1

  • Cadenas y sus operacionesBorrar una subcadena de una cadena. Para eliminar una subcadena que comienza en la posicin p y tiene una longitud l. var cadena1, cadena2, cadena3: cadenacadena1
  • Cadenas y sus operacionesSustitucin de una subcadena por otra. Para reemplazar una subcadena de una cadena por otra subcadena se tiene:var cadena1, cadena2, cadena3: cadenacadena1
  • Cadenas y sus operacionesObtencin de un caracter de una cadena

    La funcin chrstr$ obtiene un caracter de la posicin indicada. Si la posicin es mayor que la longitud de la cadena se devolvera NULL

    var cadena1: cadenavar car: caractercadena1

  • Cadenas y sus operacionesSustitucin de un caracter en una cadena

    var cadena1: cadenavar car: caractercadena1

  • Cadenas y sus operacionesLa funcin strchr$ reemplaza el caracter de la cadena en la posicin indicada por un nuevo caracter Si se excede de la longitud de la cadena devolvera el valor NULL.

  • Cadenas y sus operacionesInsercin de un caracter en una cadena. Para aadir un caracter a una cadena en una posicin dada tenemos.

    var cadena1: cadenavar car: caractercadena1

  • Conversin de cadenas a nmerosCadenas y sus operacionesvar cadena1: cadenavar num: enterocadena1
  • Conversin de nmeros a cadenasCadenas y sus operacionesvar cadena1: cadenavar num: enteronum