algoritmos y programas baltazar 2015

Upload: carlos

Post on 04-Feb-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/21/2019 Algoritmos y Programas Baltazar 2015

    1/195

    ALGORITMOS Y PROGRAMAS:

    TEMA 1:

    Sistemas de procesamiento de la informacin.

    Concepto de algoritmo.

    Lenguaje de programacin.

    Datos, tipos de datos y operaciones primitivas.

    Constantes y variables.

    Expresiones: tipos y operadores.

    unciones internas.

    La operacin de asignacin.

    Entrada y salida de la informacin.

    1. SISTEMAS DE PROCESAMIENTO DE LA INFORMACIN:

    Un ordenador es una mquina de procesamiento de informacin. Es una mquina porquetiene cables, chips,... , procesa porque es capaz de procesar cosas, e informacin porquemaneja conjuntos ordenados de datos).

    Para procesar la informacin est el hardware (microprocesador, !",...), # el software (quesir$e para manejar el hardware).

    2. CONCEPTO DE ALGORITMO:

    El al%oritmo trata de resol$er problemas mediante pro%ramas.

    &ases' Anlisis preliminar o evaluacin del problema: Estudiar el problema en

    general y ver !ue parte nos interesa.

    Defnicin o anlisis del problema: "er !ue es lo !ue entra y !ue es lo !ue sale,las posibles condiciones o restricciones, ...

    Diseo del algoritmo: Dise#ar la solucin.

    El programa: Codi$cacin del algoritmo en un lenguaje de programacin.

    Ejecucin del programa y las pruebas: "er si el programa %ace lo !ue!uer&amos.

    Qu es un alg!"#$%:

    Es una formula para resol$er un problema. Es un conjunto de acciones o secuencia deoperaciones que ejecutadas en un determinado orden resuel$en el problema. Eisten nal%oritmos, ha# que co%er el ms efecti$o.

    aracter*sticas'

  • 7/21/2019 Algoritmos y Programas Baltazar 2015

    2/195

    'iene !ue ser preciso.

    'iene !ue estar bien de$nido.

    'iene !ue ser $nito.

    +a pro%ramacin es adaptar el al%oritmo al ordenador.

    El al%oritmo es independiente se%n donde lo implemente.

    &. EL LENG'A(E DE PROGRAMACIN:

    Eisten diferentes tipos, de bajo ni$el # de alto ni$el.

    -nstrucciones en una computadora # sus tipos'

    Una instruccin es cada paso de un al%oritmo, pero que lo ejecuta el ordenador. Un pro%ramaes un conjunto de instrucciones que ejecutadas ordenadamente resuel$en un problema.

    T")s *e "ns#!u++"nes:

    E/S: (asar informacin del exterior al interior del ordenador y al rev)s. Aritmtico-lgicas: *ritm)ticas: +,,-,... Lgicas: or, and, /, 0, ...

    Selectivas: (ermiten la seleccin de una alternativa en funcin de una condicin.

    epetitivas: 1epeticin de un n2mero de instrucciones un n2mero $nito de veces.

    T")s *e lengua,es:

    !enguaje m"uina: 'odo se programa con 3 y 4, !ue es lo 2nico !ue entiende elordenador.

    entaja' /o necesita ser traducido.

    -ncon$eniente' +a dificultad, la confusin, para corre%ir errores, es propia de cada mquina.

    De bajo nivel o ensamblador: Se utili5an mnemot)cnicos 6abreviaturas7.

    entaja' /o es tan dif*cil como el len%uaje mquina.

    -ncon$enientes' ada mquina tiene su propio len%uaje, necesitamos un proceso detraduccin.

    El programa escrito en ensamblador se llama programa fuente y el programa !uese obtiene al ensamblarlo se llama programa objeto.

    !enguajes de alto nivel: Los m8s cercanos al lenguaje %umano.

    entaja' 0on independientes de cada maquina (los compiladores aceptan las instruccionesestndar, pero tambi1n tienen instrucciones propias).

    -ncon$eniente' El proceso de traduccin es mu# lar%o # ocupa ms recursos. !pro$echamenos los recursos internos.

    P!+es *e #!a*u++"-n e,e+u+"-n *e un )!g!a$a es+!"# en un lengua,e a al# n"/el:

  • 7/21/2019 Algoritmos y Programas Baltazar 2015

    3/195

    Usamos un editor # obtenemos el pro%rama fuente, # el compilador es el que traduce elpro%rama al len%uaje mquina. El compilador internamente ha sido dise2ado para traducir.

    El compilador obtiene el pro%rama o el fichero objeto. El compilador tiene que buscar loserrores.

    /ormalmente no sale un ejecutable, sino que necesita elementos, librer*as, ..."ediante un lin3ador juntamos el pro%rama objeto # las librer*as, # se forma un pro%ramaejecutable.

    uando se ejecuta el pro%rama, el car%ador lle$a al pro%rama a memoria para que 1ste puedaser ejecutable.

    4ebbu%er' 4epura el pro%rama ejecutndolo paso a paso, $iendo la memoria paso a pasopara encontrar el error.

    Pro%rama fuente (Editor)

    ompilador

    Error

    Pro%rama objeto +ibrerias

    +in3ador

    Ejecutables

    Para traducir puedo utilizar el compilador o un interprete, con el compilador cojo todo elpro%rama al completo # el interprete lee cada instruccin # lo $a ejecutando.

    El interprete es ms rpido, pero menos eficiente.

    5odos los len%uajes tienen compiladores, pero no todos tienen interpretes.+-0P (+en%uaje de inteli%encia artificial) ' 0lo tiene interpretes.

    0. DATOS TIPOS DE DATOS OPERACIONES PRIMITI3AS:

    4 Da#: Es un objeto o elemento que tratamos a lo lar%o de di$ersas operaciones.

    T"enen & +a!a+#e!"s#"+as'

    9n nombre !ue los diferencia del resto.

    9n tipo !ue nos determina las operaciones !ue podemos %acer con ese dato.

    9n valor !ue puede variar o no a lo largo de la operacin.

    Eisten diferentes tipos de datos.

    4 Ca!a+#e!"s#"+as *e ls #")s:

    Cada tipo se representa o almacena de forma diferente en la computadora.

    6it'789: 6#te;< bits.

    9n tipo agrupa a los valores !ue %acen las mismas operaciones.

  • 7/21/2019 Algoritmos y Programas Baltazar 2015

    4/195

    Si tiene de$nida una relacin de orden es un tipo escalar.

    Cardinalidad de un tipo: 2mero de valores distintos !ue puede tomar un tipo.

    Pueden ser finitos (caracteres), # si son infinitos el ordenador los toma como finitos porqueesta limitado por el tama2o de los b#tes en el que la cifra es almacenada.

    4 Ls *a#s )ue*en se!:

    Simples: 9n elemento.

    Compuestos: "arios elementos.

    4 Ls #")s )ue*en se!:

    Estandar: ;ue vienen en el sistema por defecto.

    o estandar: Son los !ue crea el usuario.

    4 Ls #")s s"$)les $5s "$)!#an#es sn:

    um)ricos. Lgicos.

    Caracteres.

    #umricos$

    Entero: Subconjunto $nito del conjunto matem8tico de los num)ros enteros. otiene parte decimal. El rango de los valores depende del tama#o !ue se les da enmemoria.

    1eal: Subconjunto $nito del conjunto matem8tico de los n2meros reales. Llevansigno y parte decimal. Se almacenan en < =ytes 6dependiendo de losmodi$cadores7. Si se utili5an n2meros reales muy grandes, se puede usar notacincient&$ca !ue se divide en mantisa, base y exponente tal !ue el valor se obtienemultiplicando la mantisa por la base elevada al exponente.

    !gicos o booleanos$

    *!uel !ue slo puede tomar uno de los dos valores, verdadero o falso 63>47.

    %arcter$

    *barca al conjunto $nito y ordenado de caracteres !ue reconoce la computadora6letras, digitos, caracteres especiales, *SC??7.

    5ipo de cadena o 0trin%' onjunto de caracteres, que $an a estar entre =>.El propio len%uaje puede a2adir ms tipos, o se pueden a2adir modificadores.

    Entero ' -nt +on% int

    En al%unos len%uajes se definen tipos especiales de fecha # hora, sobre todo en los msmodernos.

    6. CONSTANTES 3ARIA7LES:

  • 7/21/2019 Algoritmos y Programas Baltazar 2015

    5/195

    %onstantes$'ienen un valor $jo !ue se le da cuando se de$ne la constante y !ueya no puede ser modi$cado durante la ejecucin.

    &ariables$El valor puede cambiar durante la ejecucin del algoritmo, pero nuncavaria su nombre y su tipo.

    !ntes de usar una $ariable ha# que definirla o declararla, al hacerlo ha# que dar su nombre #su tipo. El nombre que le damos tiene que ser un nombre si%nificati$o, $a a ser un conjunto decaracteres que dependiendo del len%uaje ha# restricciones. 5iene que empezar por una letra,# el tama2o depende del len%uaje.

    -dentificador' Palabra que no es propia del len%uaje.

    El $alor de la $ariable si al declararla no se la inicializa, en al%unos len%uajes toma una pordefecto. En cualquier caso el $alor de la $ariable podemos darle uno incial o podemos ir$ariandolo a lo lar%o de la ejecucin.

    +as constantes pueden lle$ar asociados un nombre o no, si no lo lle$an, se llaman literales. 0u$alor ha# que darlo al definir la constante # #a no puede cambiar a lo lar%o de la ejecucin, #

    en cuanto al tipo, dependiendo de los len%uajes en al%unos ha# que ponerlo, # en otros nohace falta ponerlo porque toma el tipo del dato que se le asi%na. onst P-;?,7@7A.

    Ba# que inicializar todas las $ariables.

    C D Ba# que poner al%o obli%atoriamente.

    F Puede lle$ar al%o o no lle$arlo.

    +a $entaja de usar constantes con nombre es que en cualquier lu%ar donde quiera que $a#a laconstante, basta con poner su nombre # lue%o el compilador lo sustituira por su $alor.

    +as constantes sin nombres son de $alor constante' G, A, HaI, =hola>.

    uando una cadena es de tipo carcter, se encierra entre HI HaI.

    elacin entre $ariables # constantes en memoria'

    !l detectar una $ariable o una constante con nombre, automaticamente se reser$a enmemoria espacio para %uardar esa $ariable o constante. El espacio reser$ado depende deltipo de la $ariable.

    En esa zona de memoria es en la que se %uarda el $alor asociado a la $ariable o constante #cuando el pro%rama use esa $ariable, ira a esa zona de memoria a buscar su $alor.

    8. E9PRESIONES: TIPOS OPERADORES:

    Una epresin es una combinacin de constantes, $ariables, si%nos de operacin, par1ntesis# nombres especiales (nombres de funciones estandar), con un sentido un*$oco # definido #de cu#a e$aluacin resulta un nico $alor.

    5oda epresion tiene asociada un tipo que se corresponde con el tipo del $alor que de$uel$ela epresion cuando se e$alua, por lo que habr tantos tipos de epresiones como tipos dedatos. Babra epresiones num1ricas # l%icas.

    /um1ricas' Jperadores aritm1ticos.

  • 7/21/2019 Algoritmos y Programas Baltazar 2015

    6/195

    0on los que se utilizan en las epresiones num1ricas (una combinacin de $ariables #8oconstantes num1ricas con operadores aritm1ticos # que al e$aluarla de$uel$e un $alornum1rico.

    K, L, M, 8.

    O)e!a+"-n !es#' +o que de$uel$e es el resto de una di$isin entera."od' Pascal. G mod ? ; N

    O' .

    D"/"s"-n en#e!a' /os de$uel$e el cociente de una di$isin entera (en la que no se sacandecimales).

    4i$' Pascal. G di$ ? ; 7

    ' .

    Potencia' Q GQN.

    5odos estos operadores son binarios (el operador se situa en medio), el menos tambien puedeser unario (lle$a un nico operando) # si%nifica si%no ne%ati$o.

    e%las de precedencia'

    El problema es cuando una epresin entera se%n como la e$alue pueda dar diferentes$alores.

    RM?K@ NG

    @S

    +a solucin es aplicar prioridad entre los operadores, de modo que ante la posibilidad de usar

    $arios siempre aplicaremos primero el de ma#or prioridad.ada len%uaje puede establecer sus propias re%las de prioridad o precedencia de operadores.0i no nos acordamos, siempre podemos poner ( ).

    7T) Q

    NT) M 8 di$ mod

    ?T) K L

    Entre dos operaciones que tienen la misma precedencia para resol$er la ambi%edad, ha# queusar la re%la de la asociati$idad. +a ms normal es la de la asociati$idad a izquierdas (primerolo de la izquieda).

    E)!es"nes l-g"+as: O)e!a*!es !ela+"nales l-g"+s.

    Una epresin l%ica es aquella que slo puede de$ol$er dos $alores (erdadero o &also). +os$alores que pueden aparecer en una epresin l%ica son de N tipos' l%icos # relacionales.

    +a particularidad de las epresiones l%icas es que mientras en una epresin num1rica porde$ol$er un $alor num1rico los operandos solo pueden ser nmeros, en una epresin l%icalos operandos no tienen porque ser booleanos aunque se de$uel$a un $alor booleano. Esto es

  • 7/21/2019 Algoritmos y Programas Baltazar 2015

    7/195

    lo que ocurre cuando en la epresin l%ica utilizamos operadores relacionales con lo cual seobtienen $alores l%icos o booleanos a partir de otros que no lo son.

    En cambio cuando los operadores son l%icos los operandos obli%atoriamente tambien tienenque ser l%icos.

    Jperadores relacionales'C

    D

    ;

    CD en ' V;

    W

    W

    C Jperando7D operador C JperandoND

    G D ? erdadero

    Xmo se e$alua una epresin relacionalY'

    (rimero se evalua el primer operando y se sustituye por su valor.

    Luego se evalua el seguno operando y se sustituye por su valor.

    inalmente se aplica el operador relacional y se devuelve el valor booleanocorrespondiente.

    ((?MN)K7LGQN) C (NL7)

    L7< C 7 erdadero.El problema del tipo real'

    4esde la informtica, los numeros reales son finitos, #a que tenemos un mimo de cifrasdecimales. uando trabajamos con un ;, matematicamente da un $alor eacto, peroinformaticamente no es eacto.

    78G M G ;7

    7.98G.9 MG.9 CD7.9

    0oluciones'

    La !ue nos aporte el propio lenguaje de programacin. Se considera un valor deerror.

    'rabajar con n2meros enteros siempre !ue sea posible.

    9tili5ar las comparaciones /0 en ve5 de @ @ si es posible.

    Si %ay !ue preguntar por igual, cambiar la condicin utili5ando valores absolutos yun valor m&nimo de error.

  • 7/21/2019 Algoritmos y Programas Baltazar 2015

    8/195

    0i la diferencia C 9.99999997 # !60 (!L6)C min : son i%uales.

    Jperadores l%icos'

    El problema es que a $eces queremos pre%untar o e$aluar por ms de una condicin al mismotiempo # para esto estan los operadores l%icos.

    Z and [[

    J or VV

    /o not \V

    Z, J, son operadores binarios (necesitan N operandos de tipo lo%ico).

    Jperando 7 Jperador Jperando N

    El /o es unario # se coloca primero el /o, # despues el operando.

    El resultado es l%ico # depende de'

    Aperando 3 Aperando B *D A1

    " " " "

    " "

    " "

    El /o nie%a '

    A' 3>4

    "

    "

    Prioridades de los operadores'

    Lo m8s prioritario es el A'

    Luego el y el A.

    /, 0 ,...

    5abla de prioridades'

    Q /J

    8 di$ mod #

    K L J

  • 7/21/2019 Algoritmos y Programas Baltazar 2015

    9/195

    C, D, ;, CD,...

    ;. F'NCIONES INTERNAS:

    0on funciones matemticas diferentes de las operaciones bsicas pero que se incorporan allen%uaje # que se consideran estandar. 4ependen del len%uaje. /ormalmente se encuentran

    en la librer*a de matemticas del len%uaje de pro%ramacin.&rmulas'

    !bs ()

    !rctan ()

    os ()

    0en ()

    Ep ()

    +n ()

    +o% 79 ()

    edondeo ()

    5runc ()

    uadrado ()

    aiz ()

    a =ue #ene! en +uen#a%:

  • 7/21/2019 Algoritmos y Programas Baltazar 2015

    10/195

    En la parte i5!uierda slo puede %aber una variable.

    La variable a la !ue se le asigna el valor pierde su valor anterior.

    La variable !ue aparece en la derec%a ya !ue como se evalua primero la de laderec%a cuando se tenga !ue evaluar el valor de esa variable se tomara su valor

    antiguo. EL '?(A DEL "*LA1 ;9E SE A='?EE *L E"*L9*1 L* (*1'E DE1EC* '?EE ;9E

    SE1 EL F?SFA ;9E EL '?(A DE L* "*1?*=LE DE L* (*1'E ?G;9?E1D*, ES DEC?1 *9* "*1?*=LE SALA SE LE (9EDE D*1 "*LA1ES DE S9 F?SFA '?(A.

    L En Pascal da un error.

    L En , no da error porque el compilador trunca el numero.

    !' entero

    ! N

    ! ?M! K ! ;