SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
Pontificia Universidad Católica de Valparaíso
                             Facultad de Ingeniería
                       Escuela de Ingeniería Informática




               “Introducción a los Algoritmos”


                                        Asignatura
                              INF 140 – Informática I
                                        Profesores
                         Pamela Hermosilla Monckton
                           Daniel Cabrera Paniagua

                                        Ayudantes



Profesores
PHM/DCP




                        Pontificia Universidad Católica de Valparaíso
                              Escuela de Ingeniería Informática



Definición de Algoritmo (RAE)
• Conjunto ordenado y finito de operaciones
  que permite hallar la solución de un
  problema.

• Método y notación en las distintas formas del
  cálculo.




Profesores
                                                                        INF 140 – Informática I
PHM/DCP




                        Pontificia Universidad Católica de Valparaíso
                              Escuela de Ingeniería Informática



             Algoritmo (Otras fuentes)
• Procedimiento para resolver un problema
  matemático en un número finito de pasos, lo
  que frecuentemente involucra repetición de una
  operación.

      Método detallado paso a paso para lograr una
      tarea.




Profesores
                                                                        INF 140 – Informática I
PHM/DCP




                                                                                                  1
Pontificia Universidad Católica de Valparaíso
                                 Escuela de Ingeniería Informática



                 Algoritmo (informalmente)

      Si a una persona se le entrega dicha lista, y ésta
      sigue las instrucciones cuidadosamente
      entonces al llegar al final se habrá resuelto la
      tarea en cuestión




Profesores
                                                                           INF 140 – Informática I
PHM/DCP




                           Pontificia Universidad Católica de Valparaíso
                                 Escuela de Ingeniería Informática


             Nuestra Definición de Algoritmo

Un algoritmo es un conjunto finito de instrucciones que especifican la
secuencia de operaciones a realizar, en orden, para resolver un problema
determinado.
En otras palabras es una fórmula para resolver un problema.

Generalmente es una lista de la siguiente forma:

Paso 1: “Hacer algo”
Paso 2: “Hacer algo”
Paso 3: “Hacer algo”
             .
             .
             .
Paso n: “Hacer algo”




Profesores
                                                                           INF 140 – Informática I
PHM/DCP




                           Pontificia Universidad Católica de Valparaíso
                                 Escuela de Ingeniería Informática



                           Algoritmos
Nivel de Abstracción

      Olvidar información y consecuentemente tratar
      cosas que son diferentes como si fueran las
      mismas. Esto con el fin de simplificar el análisis
      separando los atributos relevantes dentro de un
      contexto determinado.

Dividir & Vencer (divide & conquer)

Profesores
                                                                           INF 140 – Informática I
PHM/DCP




                                                                                                     2
Pontificia Universidad Católica de Valparaíso
                               Escuela de Ingeniería Informática




             Algoritmos Cotidianos (Narrativos)

Llamar por teléfono
Planchar
Cocinar panqueques
Inscribir una asignatura…
etc.




Profesores
                                                                         INF 140 – Informática I
PHM/DCP




                         Pontificia Universidad Católica de Valparaíso
                               Escuela de Ingeniería Informática



                   Otros Ejemplos
Un alumno solicita ser el ayudante de un ramo. El profesor examina en la
base de datos de la escuela el historial del alumno. Si el alumno está
capacitado el profesor lo acepta como ayudante, en caso contrario la solicitud
del alumno será rechazada.

Los pasos del algoritmo en descripción narrativa son los siguientes:

1. Inicio
2. Leer solicitud del alumno
3. Leer historial del alumno
4. Si, el alumno está capacitado, el profesor acepta la solicitud, en caso contrario
la solicitud es rechazada.
5. Fin




Profesores
                                                                         INF 140 – Informática I
PHM/DCP




                         Pontificia Universidad Católica de Valparaíso
                               Escuela de Ingeniería Informática




Calcular el promedio de 3 notas:

1. Inicio
2. Leer nota 1
3. Leer nota 2
3. Leer nota 3
4. Asignar a suma_de_notas el resultado de nota1+ nota2 + nota3
5. Asignar a promedio el resultado de suma_de_notas / 3
6. Escribir resultado
7. Fin

Realizar una venta con factura…




Profesores
                                                                         INF 140 – Informática I
PHM/DCP




                                                                                                   3
Pontificia Universidad Católica de Valparaíso
                              Escuela de Ingeniería Informática



                     Características
•     Correcto - Fiable
•     Eficiencia tiempo & recursos
•     Claro - Fácil de mantener
•     Interfaz apropiada
•     Preciso : orden en cada paso
•     Definido: siempre se obtiene el mismo resultado
•     Finito: número finito de pasos




Profesores
                                                                        INF 140 – Informática I
PHM/DCP




                        Pontificia Universidad Católica de Valparaíso
                              Escuela de Ingeniería Informática




 • Error – creer que:
        Aprender a programar significa aprender un
        lenguaje computacional hasta dominarlo
        completamente, y luego utilizarlo para
        expresar, en la forma que el computador
        entiende, el problema particular que se
        quiere resolver




Profesores
                                                                        INF 140 – Informática I
PHM/DCP




                        Pontificia Universidad Católica de Valparaíso
                              Escuela de Ingeniería Informática




       Realidad:
             La parte medular de la programación
             consiste en resolver el problema.
             Esto es independiente del lenguaje en el cual
             se expresará posteriormente esta solución




Profesores
                                                                        INF 140 – Informática I
PHM/DCP




                                                                                                  4
Pontificia Universidad Católica de Valparaíso
                          Escuela de Ingeniería Informática




• Programar NO es fácil, ya que no es fácil
  resolver problemas

• ... y enseñar a programar tampoco lo es
  porque en realidad lo que se debe
  enseñar son técnicas de solución de
  problemas.



Profesores
                                                                    INF 140 – Informática I
PHM/DCP




                    Pontificia Universidad Católica de Valparaíso
                          Escuela de Ingeniería Informática




    • Resolver un problema usando un computador no es
      solamente conocer un lenguaje de programación.

    • Es disponer de la capacidad para analizar un
      problema, entenderlo y especificar el algoritmo que
      permite solucionarlo, usando un lenguaje de
      programación.

    • Para ello no basta con aprender un lenguaje de
      programación, además hay que disponer de una
      metodología que permita resolver problemas
      computacionalmente.




Profesores
                                                                    INF 140 – Informática I
PHM/DCP




                    Pontificia Universidad Católica de Valparaíso
                          Escuela de Ingeniería Informática



    • El medio para resolver un problema en forma
      computacional es un conjunto preciso de
      instrucciones expresadas en un cierto lenguaje, lo
      cual constituye lo que se denomina un programa.


    • Pero el programa puede ser visto simplemente como
      un algoritmo expresado en un lenguaje de
      programación.


    • Este algoritmo es independiente del lenguaje y
      constituye la forma en que se resuelve el problema.



Profesores
                                                                    INF 140 – Informática I
PHM/DCP




                                                                                              5
Pontificia Universidad Católica de Valparaíso
                              Escuela de Ingeniería Informática



             ¿Qué es un lenguaje? (1)
Def. RAE:

      “Conjunto de sonidos articulados con que el hombre
      manifiesta lo que piensa o siente.”

      “Estilo y modo de hablar y escribir de cada persona en
      particular.”

      “Conjunto de señales que dan a entender algo. (El lenguaje
      de los ojos, el de las flores).”


Profesores
                                                                        INF 140 – Informática I
PHM/DCP




                        Pontificia Universidad Católica de Valparaíso
                              Escuela de Ingeniería Informática



             ¿Qué es un lenguaje? (2)
• Un lenguaje es un medio de comunicación entre los
  seres humanos a través de signos orales y escritos que
  poseen un significado.




Profesores
                                                                        INF 140 – Informática I
PHM/DCP




                        Pontificia Universidad Católica de Valparaíso
                              Escuela de Ingeniería Informática


               ¿Qué es un lenguaje de
                  programación?
• Es un lenguaje utilizado es la escritura de programas para
  computadores, de tal modo que puedan ser entendidos por
  estos últimos.

• Se clasifican en tres grupos:

         – Máquina
         – Bajo Nivel
         – Alto Nivel




Profesores
                                                                        INF 140 – Informática I
PHM/DCP




                                                                                                  6
Pontificia Universidad Católica de Valparaíso
                           Escuela de Ingeniería Informática




               Lenguaje Máquina
• Es el lenguaje propio de los computadores, basado en la
  lógica binaria, de ceros y unos (00010111).

• Este lenguaje resulta difícil de utilizar para las personas, ya
  que el programador debe introducir todos y cada uno de los
  comandos y datos en forma binaria.

• La programación en lenguaje máquina es una tarea tan
  tediosa y consume tanto tiempo que raras veces lo que se
  ahorra en la ejecución del programa justifica los días o
  semanas que se han necesitado para escribir el mismo.




Profesores
                                                                     INF 140 – Informática I
PHM/DCP




                     Pontificia Universidad Católica de Valparaíso
                           Escuela de Ingeniería Informática




             Lenguaje de Bajo Nivel
• La programación en lenguaje máquina es difícil. Es por ello se
  necesitan lenguajes que faciliten este proceso. En base a esto
  se han sido diseñados los lenguajes de bajo nivel.

• Los lenguajes de bajo nivel permiten crear programas muy
  rápidos, pero que son a menudo difíciles de comprender.

• Se requiere que el programador piense a nivel de máquina.

• Un ejemplo de este tipo de lenguaje es el ensamblador.




Profesores
                                                                     INF 140 – Informática I
PHM/DCP




                     Pontificia Universidad Católica de Valparaíso
                           Escuela de Ingeniería Informática




             Lenguaje Ensamblador
• El lenguaje ensamblador es un lenguaje funcionalmente
  similar al lenguaje máquina, pero más sencillo de utilizar.

• En este lenguaje, los programadores utilizan códigos
  alfabéticos que se corresponden con instrucciones de tipo
  numérico de las máquinas.

• El “enlace” entre el programador y el computador, un
  programa llamado ensamblador, traduce cada instrucción de
  este lenguaje en la sentencia máquina que corresponda.




Profesores
                                                                     INF 140 – Informática I
PHM/DCP




                                                                                               7
Pontificia Universidad Católica de Valparaíso
                                Escuela de Ingeniería Informática




             Lenguaje de Alto Nivel (1)
• Los llamados lenguajes de alto nivel son los que se emplean
  con mayor frecuencia como lenguajes de programación,
  porque permiten expresar los algoritmos de una manera y con
  un estilo fácilmente reconocible por parte de diversos
  programadores.

• Son útiles para simplificar el proceso de programación.

• Algunos ejemplos de lenguaje de alto nivel son:
   – Java
   – C/C++
   – Visual Basic
   – HTML, XML, Prolog, Lisp, …y un gran etc…

Profesores
                                                                          INF 140 – Informática I
PHM/DCP




                          Pontificia Universidad Católica de Valparaíso
                                Escuela de Ingeniería Informática




             Lenguaje de Alto Nivel (2)
• Ventaja:
         – Son fácilmente transportables de una máquina a otra sin
           necesidad de realizar grandes cambios en ellos, por lo que se
           dice que son independientes de la máquina empleada.

• Tanto los lenguajes de alto nivel como de bajo nivel no son
  entendibles directamente por la máquina, sino que necesitan
  ser traducidos a instrucciones en lenguaje máquina.

• Para ello se emplean Compiladores, e Intérpretes.




Profesores
                                                                          INF 140 – Informática I
PHM/DCP




                          Pontificia Universidad Católica de Valparaíso
                                Escuela de Ingeniería Informática




                    Compiladores (1)
• Un compilador es un traductor.

• El compilador traduce un código fuente íntegramente a
  lenguaje máquina antes de su ejecución, por lo que el
  resultado se ejecuta con tanta rapidez como si se hubiese
  escrito directamente en lenguaje máquina.

• El compilador es el más eficaz para la mayor parte de las
  máquinas, puesto que presenta la ventaja que cada una de las
  sentencias del programa es interpretada y traducida al
  lenguaje máquina sólo una vez.




Profesores
                                                                          INF 140 – Informática I
PHM/DCP




                                                                                                    8
Pontificia Universidad Católica de Valparaíso
                             Escuela de Ingeniería Informática




              Compiladores (2)
 • Un compilador crea una lista de instrucciones de código
   máquina, basándose en un código fuente.

 • El código objeto resultante es un programa rápido y listo para
   funcionar, pero que puede hacer que falle el ordenador si no
   está bien diseñado.




 Profesores
                                                                         INF 140 – Informática I
 PHM/DCP




                       Pontificia Universidad Católica de Valparaíso
                             Escuela de Ingeniería Informática




                       Intérpretes
 • Son programas que se traducen línea por línea el código
   fuente.

 • Son traductores más lentos que los compiladores, ya que no
   producen un código objeto, sino que recorren el código fuente
   una línea cada vez.

 • Cada línea se traduce a código máquina y se ejecuta.




 Profesores
                                                                         INF 140 – Informática I
 PHM/DCP




                       Pontificia Universidad Católica de Valparaíso
                             Escuela de Ingeniería Informática




Alto Nivel                          Bajo Nivel                                       Máquina



                                                                                    Ejecutable
  Código                               Código
  fuente                               Objeto
              Compilador /
                                                               Ensamblador
               Intérprete
                                        SUB                                           011010
                                                                                      100010
                                           …




                                                           Incorporación de
                                                             bibliotecas ya
                                                               existentes




 Profesores
                                                                         INF 140 – Informática I
 PHM/DCP




                                                                                                   9
Pontificia Universidad Católica de Valparaíso
                                   Escuela de Ingeniería Informática




             Resolución de Problemas
• Entender el problema -> Definir el problema con claridad !!!

• Idear un plan para resolver el problema
         – Identificar recursos, personas, información, etc.
         – Establecer el modo de utilizar los elementos identificados.

• Ejecutar el plan

• Evaluar la solución obtenida
         – ¿Se ha resuelto efectivamente el problema existente?
         – La solución alcanzada, ¿es útil para otros problemas?



Profesores
                                                                             INF 140 – Informática I
PHM/DCP




                             Pontificia Universidad Católica de Valparaíso
                                   Escuela de Ingeniería Informática




             Proceso de Programación
• La programación es una forma especializada del modelo de
  resolución de problemas…

• Sus fases son:

         –   Definición del problema.
         –   Creación, depuración y verificación del algoritmo.
         –   Escritura del programa.
         –   Verificación y depuración del programa.




Profesores
                                                                             INF 140 – Informática I
PHM/DCP




                             Pontificia Universidad Católica de Valparaíso
                                   Escuela de Ingeniería Informática




                         Alcances… (1)
• En general, los problemas a resolver son tan complejos, que no
  es posible resolverlos de una sola vez.

• Es por ello que usualmente se divide un problema mayor en un
  listado de sub-problemas más pequeños y abordables.

• Cada uno de estos sub-problemas son, a la vez, divisibles en
  otros sub-problemas de menor tamaño.

• Algunos autores llaman a esto Dividir y Conquistar, o
  Refinamiento por Pasos.



Profesores
                                                                             INF 140 – Informática I
PHM/DCP




                                                                                                       10
Pontificia Universidad Católica de Valparaíso
                            Escuela de Ingeniería Informática




                   Alcances… (2)
• Este tipo de proceso se asocia a un enfoque “de arriba abajo”
  (Top Down), ya que el problema se aborda desde lo más
  general (“desde arriba”), y progresivamente se introducen
  mayores detalles según se requiera (“hacia abajo)”.

• El resultado es un algoritmo, que corresponde a un conjunto
  de instrucciones paso a paso que, luego de ser ejecutadas,
  resuelven el problema original.




Profesores
                                                                      INF 140 – Informática I
PHM/DCP




                      Pontificia Universidad Católica de Valparaíso
                            Escuela de Ingeniería Informática




                   Alcances… (3)
• Este algoritmo suele estar escrito en un formato denominado
  Pseudocódigo, una mezcla entre lenguaje informático y
  lenguaje natural.

• Una vez que los detalles del algoritmo están correctos, el paso
  siguiente es traducir las instrucciones existentes en
  pseudocódigo a un lenguaje de programación de alto nivel.




Profesores
                                                                      INF 140 – Informática I
PHM/DCP




                      Pontificia Universidad Católica de Valparaíso
                            Escuela de Ingeniería Informática


             Forma Difícil de Resolver un
                     Problema
                                              Solución en forma de
                                                   programa

                                       ?
                  Problema




• Énfasis en dar una solución rápida al problema, pero…
     ¿Qué problema estoy resolviendo?
     ¿Abordé el problema de manera adecuada?

Profesores
                                                                      INF 140 – Informática I
PHM/DCP




                                                                                                11
Pontificia Universidad Católica de Valparaíso
                              Escuela de Ingeniería Informática


 Forma Adecuada de Resolver un
         Problema (1)

                                                                        Solución en forma de
                                                                             programa
                                  Solución en
                                     forma
    Problema                      algorítmica




               Comprensión                              Implementación
               del problema                              de la Solución




Profesores
                                                                             INF 140 – Informática I
PHM/DCP




                        Pontificia Universidad Católica de Valparaíso
                              Escuela de Ingeniería Informática


 Forma Adecuada de Resolver un
         Problema (2)
• Lo importante radica en comprender efectivamente qué
  problema pretendemos resolver, y plantear una
  solución analítica que lo resuelva.

• Si fallamos en la comprensión del problema, sus
  consecuencias se arrastran hasta la solución final…




Profesores
                                                                             INF 140 – Informática I
PHM/DCP




                        Pontificia Universidad Católica de Valparaíso
                              Escuela de Ingeniería Informática


      Aspectos a tener en cuenta en
            un algoritmo (1)
• Como ya se ha mencionado, un algoritmo se desarrolla con
  el objetivo de resolver un problema.

• Por lo tanto, se espera que, luego de la ejecución del
  algoritmo, exista un resultado o salida.

• Pero para obtener esta salida, es necesario que exista un
  proceso que sea capaz de entregarlo.

• Ahora bien, un proceso requiere de entradas, elementos
  inicialmente externos al proceso, pero que se incorporan a
  él con el fin de obtener la salida esperada (solución).

Profesores
                                                                             INF 140 – Informática I
PHM/DCP




                                                                                                       12
Pontificia Universidad Católica de Valparaíso
                                  Escuela de Ingeniería Informática


      Aspectos a tener en cuenta en
            un algoritmo (2)
                                            PROCESO                             Salida 1
                Entrada 1

                                                                                 Salida 2
              Entrada 2
                                                                                   Salida 3
             Entrada 3
                                                                                   …
                …
                                                                               …
                     …

                  Entrada N                                                 Salida N




Profesores
                                                                                   INF 140 – Informática I
PHM/DCP




                            Pontificia Universidad Católica de Valparaíso
                                  Escuela de Ingeniería Informática


      Aspectos a tener en cuenta en
            un algoritmo (3)
• Entradas:
         – ¿Cuántas entradas son requeridas por el proceso establecido?
         – ¿Qué tipo de entradas son requeridas por el proceso
           establecido?

• Proceso:
         – ¿Cuál es el proceso más adecuado para resolver el problema
           planteado?

• Salidas:
         – ¿Cuál es el resultado final esperado?


Profesores
                                                                                   INF 140 – Informática I
PHM/DCP




                            Pontificia Universidad Católica de Valparaíso
                                  Escuela de Ingeniería Informática




                                            Fin




Profesores
                                                                                   INF 140 – Informática I
PHM/DCP




                                                                                                             13

Mais conteúdo relacionado

Destaque

New york city errand runners
New york city errand runnersNew york city errand runners
New york city errand runnersCHANELW2
 
Double page spread
Double page spreadDouble page spread
Double page spreadErosV
 
Lección 7 El Camino a la Fe
Lección 7 El Camino a la FeLección 7 El Camino a la Fe
Lección 7 El Camino a la FeCMN :PPT
 
police department public relations
police department public relationspolice department public relations
police department public relationsmeradv410
 
Vibe contents analysis
Vibe contents analysisVibe contents analysis
Vibe contents analysisErosV
 
Proyecto barro isabel sofia celis
Proyecto barro  isabel sofia celisProyecto barro  isabel sofia celis
Proyecto barro isabel sofia celisCristian López
 
[Inf 140] Estructuras Repetitivas Y Selectivas (1 X Hoja)
[Inf 140]   Estructuras Repetitivas Y Selectivas (1 X Hoja)[Inf 140]   Estructuras Repetitivas Y Selectivas (1 X Hoja)
[Inf 140] Estructuras Repetitivas Y Selectivas (1 X Hoja)Daniel Barraza
 
Shot list
Shot listShot list
Shot listBex96
 
Presentation1
Presentation1Presentation1
Presentation106rali
 
Besig 2014 Session A3 Let's Talk Basis for Business: Building Speaking Skills...
Besig 2014 Session A3 Let's Talk Basis for Business: Building Speaking Skills...Besig 2014 Session A3 Let's Talk Basis for Business: Building Speaking Skills...
Besig 2014 Session A3 Let's Talk Basis for Business: Building Speaking Skills...Anne Hodgson
 
Excel
ExcelExcel
Excelsmrg5
 
Audience Questionnaire
Audience QuestionnaireAudience Questionnaire
Audience QuestionnaireDaisyTarrant
 

Destaque (20)

New york city errand runners
New york city errand runnersNew york city errand runners
New york city errand runners
 
poema
poema poema
poema
 
Double page spread
Double page spreadDouble page spread
Double page spread
 
Judy.mates
Judy.matesJudy.mates
Judy.mates
 
Lección 7 El Camino a la Fe
Lección 7 El Camino a la FeLección 7 El Camino a la Fe
Lección 7 El Camino a la Fe
 
police department public relations
police department public relationspolice department public relations
police department public relations
 
Nme
NmeNme
Nme
 
Vibe contents analysis
Vibe contents analysisVibe contents analysis
Vibe contents analysis
 
Proyecto barro isabel sofia celis
Proyecto barro  isabel sofia celisProyecto barro  isabel sofia celis
Proyecto barro isabel sofia celis
 
Javiercollantes
JaviercollantesJaviercollantes
Javiercollantes
 
[Inf 140] Estructuras Repetitivas Y Selectivas (1 X Hoja)
[Inf 140]   Estructuras Repetitivas Y Selectivas (1 X Hoja)[Inf 140]   Estructuras Repetitivas Y Selectivas (1 X Hoja)
[Inf 140] Estructuras Repetitivas Y Selectivas (1 X Hoja)
 
Storyboard
StoryboardStoryboard
Storyboard
 
Shangai China
Shangai ChinaShangai China
Shangai China
 
Anemia
AnemiaAnemia
Anemia
 
Tema6 consultas ii
Tema6   consultas iiTema6   consultas ii
Tema6 consultas ii
 
Shot list
Shot listShot list
Shot list
 
Presentation1
Presentation1Presentation1
Presentation1
 
Besig 2014 Session A3 Let's Talk Basis for Business: Building Speaking Skills...
Besig 2014 Session A3 Let's Talk Basis for Business: Building Speaking Skills...Besig 2014 Session A3 Let's Talk Basis for Business: Building Speaking Skills...
Besig 2014 Session A3 Let's Talk Basis for Business: Building Speaking Skills...
 
Excel
ExcelExcel
Excel
 
Audience Questionnaire
Audience QuestionnaireAudience Questionnaire
Audience Questionnaire
 

Semelhante a Algoritmos introducción

[Inf 140] Procedimientos Y Funciones (1 X Hoja)
[Inf 140] Procedimientos Y Funciones (1 X Hoja)[Inf 140] Procedimientos Y Funciones (1 X Hoja)
[Inf 140] Procedimientos Y Funciones (1 X Hoja)Daniel Barraza
 
[Inf 140] Algoritmos Y Arreglos (1 X Hoja)
[Inf 140]  Algoritmos Y Arreglos (1 X Hoja)[Inf 140]  Algoritmos Y Arreglos (1 X Hoja)
[Inf 140] Algoritmos Y Arreglos (1 X Hoja)Daniel Barraza
 
[Inf 140] Estructuras Repetitivas Y Selectivas (6 X Hoja)
[Inf 140]   Estructuras Repetitivas Y Selectivas (6 X Hoja)[Inf 140]   Estructuras Repetitivas Y Selectivas (6 X Hoja)
[Inf 140] Estructuras Repetitivas Y Selectivas (6 X Hoja)Daniel Barraza
 
[Inf 140] Procedimientos Y Funciones (4 X Hoja)
[Inf 140] Procedimientos Y Funciones (4 X Hoja)[Inf 140] Procedimientos Y Funciones (4 X Hoja)
[Inf 140] Procedimientos Y Funciones (4 X Hoja)Daniel Barraza
 
Bachillerato en informatica
Bachillerato en informaticaBachillerato en informatica
Bachillerato en informaticamragstair
 

Semelhante a Algoritmos introducción (8)

[Inf 140] Procedimientos Y Funciones (1 X Hoja)
[Inf 140] Procedimientos Y Funciones (1 X Hoja)[Inf 140] Procedimientos Y Funciones (1 X Hoja)
[Inf 140] Procedimientos Y Funciones (1 X Hoja)
 
[Inf 140] Algoritmos Y Arreglos (1 X Hoja)
[Inf 140]  Algoritmos Y Arreglos (1 X Hoja)[Inf 140]  Algoritmos Y Arreglos (1 X Hoja)
[Inf 140] Algoritmos Y Arreglos (1 X Hoja)
 
[Inf 140] Estructuras Repetitivas Y Selectivas (6 X Hoja)
[Inf 140]   Estructuras Repetitivas Y Selectivas (6 X Hoja)[Inf 140]   Estructuras Repetitivas Y Selectivas (6 X Hoja)
[Inf 140] Estructuras Repetitivas Y Selectivas (6 X Hoja)
 
[Inf 140] Procedimientos Y Funciones (4 X Hoja)
[Inf 140] Procedimientos Y Funciones (4 X Hoja)[Inf 140] Procedimientos Y Funciones (4 X Hoja)
[Inf 140] Procedimientos Y Funciones (4 X Hoja)
 
Bachillerato en informatica
Bachillerato en informaticaBachillerato en informatica
Bachillerato en informatica
 
Silabo
SilaboSilabo
Silabo
 
Silabo
SilaboSilabo
Silabo
 
PROGRAMACIÓN DEL ROBOT LEGO EV3
PROGRAMACIÓN DEL ROBOT LEGO EV3PROGRAMACIÓN DEL ROBOT LEGO EV3
PROGRAMACIÓN DEL ROBOT LEGO EV3
 

Mais de Daniel Barraza

Mais de Daniel Barraza (20)

Lista
ListaLista
Lista
 
[Pauta] [Inf 140] Control Ii
[Pauta] [Inf 140]   Control Ii[Pauta] [Inf 140]   Control Ii
[Pauta] [Inf 140] Control Ii
 
Lista
ListaLista
Lista
 
[Pauta] [Inf 140] Control I
[Pauta] [Inf 140]   Control I[Pauta] [Inf 140]   Control I
[Pauta] [Inf 140] Control I
 
[Pauta] [Inf 140] Certamen Ii
[Pauta] [Inf 140]   Certamen Ii[Pauta] [Inf 140]   Certamen Ii
[Pauta] [Inf 140] Certamen Ii
 
[Pauta] [Inf 140] Certamen I
[Pauta] [Inf 140]   Certamen I[Pauta] [Inf 140]   Certamen I
[Pauta] [Inf 140] Certamen I
 
Pauta Control1
Pauta Control1Pauta Control1
Pauta Control1
 
Ayudantia 1
Ayudantia 1Ayudantia 1
Ayudantia 1
 
Pauta Guia 1(1) Bloc De Notas
Pauta Guia 1(1)   Bloc De NotasPauta Guia 1(1)   Bloc De Notas
Pauta Guia 1(1) Bloc De Notas
 
Suma Numeros
Suma NumerosSuma Numeros
Suma Numeros
 
Pauta Guia 3
Pauta Guia 3Pauta Guia 3
Pauta Guia 3
 
Inf 140 Programa
Inf 140   ProgramaInf 140   Programa
Inf 140 Programa
 
Inf 140 Guia3 2008 01
Inf 140   Guia3 2008 01Inf 140   Guia3 2008 01
Inf 140 Guia3 2008 01
 
Inf 140 Guia2 2008 01
Inf 140   Guia2 2008 01Inf 140   Guia2 2008 01
Inf 140 Guia2 2008 01
 
Ejercicio Extra 1
Ejercicio Extra 1Ejercicio Extra 1
Ejercicio Extra 1
 
[Pauta] Trabajo Grupal
[Pauta] Trabajo Grupal[Pauta] Trabajo Grupal
[Pauta] Trabajo Grupal
 
[Inf 140] Representacion Interna De Datos (1 X Hoja)
[Inf 140] Representacion Interna De Datos (1 X Hoja)[Inf 140] Representacion Interna De Datos (1 X Hoja)
[Inf 140] Representacion Interna De Datos (1 X Hoja)
 
[Inf 140] Programacion De Presentaciones
[Inf 140] Programacion De Presentaciones[Inf 140] Programacion De Presentaciones
[Inf 140] Programacion De Presentaciones
 
[Inf 140] Guia4 2008 01
[Inf 140]   Guia4 2008 01[Inf 140]   Guia4 2008 01
[Inf 140] Guia4 2008 01
 
[Inf 140] Guia1 2008 01
[Inf 140]   Guia1 2008 01[Inf 140]   Guia1 2008 01
[Inf 140] Guia1 2008 01
 

Último

pdf-padres-obedientes-hijos-tiranos_compress.pdf
pdf-padres-obedientes-hijos-tiranos_compress.pdfpdf-padres-obedientes-hijos-tiranos_compress.pdf
pdf-padres-obedientes-hijos-tiranos_compress.pdfVictorGarzaRodarte1
 
Catalogo-Virtual-Especias-Ibi_castellano
Catalogo-Virtual-Especias-Ibi_castellanoCatalogo-Virtual-Especias-Ibi_castellano
Catalogo-Virtual-Especias-Ibi_castellanovictorhugoerguetamal3
 
libro-manos-que-curamn-pdf.pdf manos que curan
libro-manos-que-curamn-pdf.pdf manos que curanlibro-manos-que-curamn-pdf.pdf manos que curan
libro-manos-que-curamn-pdf.pdf manos que curansanzmar360
 
CUIDADOS DE ENFERMERIA EN LA ALIMENTACION.pptx
CUIDADOS DE ENFERMERIA EN LA ALIMENTACION.pptxCUIDADOS DE ENFERMERIA EN LA ALIMENTACION.pptx
CUIDADOS DE ENFERMERIA EN LA ALIMENTACION.pptxangelicacardales1
 
El Ego - Ramiro Nicolás Nordmann Castañeda
El Ego - Ramiro Nicolás Nordmann CastañedaEl Ego - Ramiro Nicolás Nordmann Castañeda
El Ego - Ramiro Nicolás Nordmann CastañedaCynthiaSaid2
 
Cómo superar la ansiedad - Créditos a su autor
Cómo superar la ansiedad - Créditos a su autorCómo superar la ansiedad - Créditos a su autor
Cómo superar la ansiedad - Créditos a su autorlesliecarrion06
 
3. Marzo Mandato DNC_2024_Comunicado para ver
3. Marzo Mandato DNC_2024_Comunicado para ver3. Marzo Mandato DNC_2024_Comunicado para ver
3. Marzo Mandato DNC_2024_Comunicado para verjersoneduardocc
 

Último (7)

pdf-padres-obedientes-hijos-tiranos_compress.pdf
pdf-padres-obedientes-hijos-tiranos_compress.pdfpdf-padres-obedientes-hijos-tiranos_compress.pdf
pdf-padres-obedientes-hijos-tiranos_compress.pdf
 
Catalogo-Virtual-Especias-Ibi_castellano
Catalogo-Virtual-Especias-Ibi_castellanoCatalogo-Virtual-Especias-Ibi_castellano
Catalogo-Virtual-Especias-Ibi_castellano
 
libro-manos-que-curamn-pdf.pdf manos que curan
libro-manos-que-curamn-pdf.pdf manos que curanlibro-manos-que-curamn-pdf.pdf manos que curan
libro-manos-que-curamn-pdf.pdf manos que curan
 
CUIDADOS DE ENFERMERIA EN LA ALIMENTACION.pptx
CUIDADOS DE ENFERMERIA EN LA ALIMENTACION.pptxCUIDADOS DE ENFERMERIA EN LA ALIMENTACION.pptx
CUIDADOS DE ENFERMERIA EN LA ALIMENTACION.pptx
 
El Ego - Ramiro Nicolás Nordmann Castañeda
El Ego - Ramiro Nicolás Nordmann CastañedaEl Ego - Ramiro Nicolás Nordmann Castañeda
El Ego - Ramiro Nicolás Nordmann Castañeda
 
Cómo superar la ansiedad - Créditos a su autor
Cómo superar la ansiedad - Créditos a su autorCómo superar la ansiedad - Créditos a su autor
Cómo superar la ansiedad - Créditos a su autor
 
3. Marzo Mandato DNC_2024_Comunicado para ver
3. Marzo Mandato DNC_2024_Comunicado para ver3. Marzo Mandato DNC_2024_Comunicado para ver
3. Marzo Mandato DNC_2024_Comunicado para ver
 

Algoritmos introducción

  • 1. Pontificia Universidad Católica de Valparaíso Facultad de Ingeniería Escuela de Ingeniería Informática “Introducción a los Algoritmos” Asignatura INF 140 – Informática I Profesores Pamela Hermosilla Monckton Daniel Cabrera Paniagua Ayudantes Profesores PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Definición de Algoritmo (RAE) • Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. • Método y notación en las distintas formas del cálculo. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Algoritmo (Otras fuentes) • Procedimiento para resolver un problema matemático en un número finito de pasos, lo que frecuentemente involucra repetición de una operación. Método detallado paso a paso para lograr una tarea. Profesores INF 140 – Informática I PHM/DCP 1
  • 2. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Algoritmo (informalmente) Si a una persona se le entrega dicha lista, y ésta sigue las instrucciones cuidadosamente entonces al llegar al final se habrá resuelto la tarea en cuestión Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Nuestra Definición de Algoritmo Un algoritmo es un conjunto finito de instrucciones que especifican la secuencia de operaciones a realizar, en orden, para resolver un problema determinado. En otras palabras es una fórmula para resolver un problema. Generalmente es una lista de la siguiente forma: Paso 1: “Hacer algo” Paso 2: “Hacer algo” Paso 3: “Hacer algo” . . . Paso n: “Hacer algo” Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Algoritmos Nivel de Abstracción Olvidar información y consecuentemente tratar cosas que son diferentes como si fueran las mismas. Esto con el fin de simplificar el análisis separando los atributos relevantes dentro de un contexto determinado. Dividir & Vencer (divide & conquer) Profesores INF 140 – Informática I PHM/DCP 2
  • 3. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Algoritmos Cotidianos (Narrativos) Llamar por teléfono Planchar Cocinar panqueques Inscribir una asignatura… etc. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Otros Ejemplos Un alumno solicita ser el ayudante de un ramo. El profesor examina en la base de datos de la escuela el historial del alumno. Si el alumno está capacitado el profesor lo acepta como ayudante, en caso contrario la solicitud del alumno será rechazada. Los pasos del algoritmo en descripción narrativa son los siguientes: 1. Inicio 2. Leer solicitud del alumno 3. Leer historial del alumno 4. Si, el alumno está capacitado, el profesor acepta la solicitud, en caso contrario la solicitud es rechazada. 5. Fin Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Calcular el promedio de 3 notas: 1. Inicio 2. Leer nota 1 3. Leer nota 2 3. Leer nota 3 4. Asignar a suma_de_notas el resultado de nota1+ nota2 + nota3 5. Asignar a promedio el resultado de suma_de_notas / 3 6. Escribir resultado 7. Fin Realizar una venta con factura… Profesores INF 140 – Informática I PHM/DCP 3
  • 4. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Características • Correcto - Fiable • Eficiencia tiempo & recursos • Claro - Fácil de mantener • Interfaz apropiada • Preciso : orden en cada paso • Definido: siempre se obtiene el mismo resultado • Finito: número finito de pasos Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática • Error – creer que: Aprender a programar significa aprender un lenguaje computacional hasta dominarlo completamente, y luego utilizarlo para expresar, en la forma que el computador entiende, el problema particular que se quiere resolver Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Realidad: La parte medular de la programación consiste en resolver el problema. Esto es independiente del lenguaje en el cual se expresará posteriormente esta solución Profesores INF 140 – Informática I PHM/DCP 4
  • 5. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática • Programar NO es fácil, ya que no es fácil resolver problemas • ... y enseñar a programar tampoco lo es porque en realidad lo que se debe enseñar son técnicas de solución de problemas. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática • Resolver un problema usando un computador no es solamente conocer un lenguaje de programación. • Es disponer de la capacidad para analizar un problema, entenderlo y especificar el algoritmo que permite solucionarlo, usando un lenguaje de programación. • Para ello no basta con aprender un lenguaje de programación, además hay que disponer de una metodología que permita resolver problemas computacionalmente. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática • El medio para resolver un problema en forma computacional es un conjunto preciso de instrucciones expresadas en un cierto lenguaje, lo cual constituye lo que se denomina un programa. • Pero el programa puede ser visto simplemente como un algoritmo expresado en un lenguaje de programación. • Este algoritmo es independiente del lenguaje y constituye la forma en que se resuelve el problema. Profesores INF 140 – Informática I PHM/DCP 5
  • 6. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática ¿Qué es un lenguaje? (1) Def. RAE: “Conjunto de sonidos articulados con que el hombre manifiesta lo que piensa o siente.” “Estilo y modo de hablar y escribir de cada persona en particular.” “Conjunto de señales que dan a entender algo. (El lenguaje de los ojos, el de las flores).” Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática ¿Qué es un lenguaje? (2) • Un lenguaje es un medio de comunicación entre los seres humanos a través de signos orales y escritos que poseen un significado. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática ¿Qué es un lenguaje de programación? • Es un lenguaje utilizado es la escritura de programas para computadores, de tal modo que puedan ser entendidos por estos últimos. • Se clasifican en tres grupos: – Máquina – Bajo Nivel – Alto Nivel Profesores INF 140 – Informática I PHM/DCP 6
  • 7. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Lenguaje Máquina • Es el lenguaje propio de los computadores, basado en la lógica binaria, de ceros y unos (00010111). • Este lenguaje resulta difícil de utilizar para las personas, ya que el programador debe introducir todos y cada uno de los comandos y datos en forma binaria. • La programación en lenguaje máquina es una tarea tan tediosa y consume tanto tiempo que raras veces lo que se ahorra en la ejecución del programa justifica los días o semanas que se han necesitado para escribir el mismo. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Lenguaje de Bajo Nivel • La programación en lenguaje máquina es difícil. Es por ello se necesitan lenguajes que faciliten este proceso. En base a esto se han sido diseñados los lenguajes de bajo nivel. • Los lenguajes de bajo nivel permiten crear programas muy rápidos, pero que son a menudo difíciles de comprender. • Se requiere que el programador piense a nivel de máquina. • Un ejemplo de este tipo de lenguaje es el ensamblador. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Lenguaje Ensamblador • El lenguaje ensamblador es un lenguaje funcionalmente similar al lenguaje máquina, pero más sencillo de utilizar. • En este lenguaje, los programadores utilizan códigos alfabéticos que se corresponden con instrucciones de tipo numérico de las máquinas. • El “enlace” entre el programador y el computador, un programa llamado ensamblador, traduce cada instrucción de este lenguaje en la sentencia máquina que corresponda. Profesores INF 140 – Informática I PHM/DCP 7
  • 8. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Lenguaje de Alto Nivel (1) • Los llamados lenguajes de alto nivel son los que se emplean con mayor frecuencia como lenguajes de programación, porque permiten expresar los algoritmos de una manera y con un estilo fácilmente reconocible por parte de diversos programadores. • Son útiles para simplificar el proceso de programación. • Algunos ejemplos de lenguaje de alto nivel son: – Java – C/C++ – Visual Basic – HTML, XML, Prolog, Lisp, …y un gran etc… Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Lenguaje de Alto Nivel (2) • Ventaja: – Son fácilmente transportables de una máquina a otra sin necesidad de realizar grandes cambios en ellos, por lo que se dice que son independientes de la máquina empleada. • Tanto los lenguajes de alto nivel como de bajo nivel no son entendibles directamente por la máquina, sino que necesitan ser traducidos a instrucciones en lenguaje máquina. • Para ello se emplean Compiladores, e Intérpretes. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Compiladores (1) • Un compilador es un traductor. • El compilador traduce un código fuente íntegramente a lenguaje máquina antes de su ejecución, por lo que el resultado se ejecuta con tanta rapidez como si se hubiese escrito directamente en lenguaje máquina. • El compilador es el más eficaz para la mayor parte de las máquinas, puesto que presenta la ventaja que cada una de las sentencias del programa es interpretada y traducida al lenguaje máquina sólo una vez. Profesores INF 140 – Informática I PHM/DCP 8
  • 9. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Compiladores (2) • Un compilador crea una lista de instrucciones de código máquina, basándose en un código fuente. • El código objeto resultante es un programa rápido y listo para funcionar, pero que puede hacer que falle el ordenador si no está bien diseñado. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Intérpretes • Son programas que se traducen línea por línea el código fuente. • Son traductores más lentos que los compiladores, ya que no producen un código objeto, sino que recorren el código fuente una línea cada vez. • Cada línea se traduce a código máquina y se ejecuta. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Alto Nivel Bajo Nivel Máquina Ejecutable Código Código fuente Objeto Compilador / Ensamblador Intérprete SUB 011010 100010 … Incorporación de bibliotecas ya existentes Profesores INF 140 – Informática I PHM/DCP 9
  • 10. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Resolución de Problemas • Entender el problema -> Definir el problema con claridad !!! • Idear un plan para resolver el problema – Identificar recursos, personas, información, etc. – Establecer el modo de utilizar los elementos identificados. • Ejecutar el plan • Evaluar la solución obtenida – ¿Se ha resuelto efectivamente el problema existente? – La solución alcanzada, ¿es útil para otros problemas? Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Proceso de Programación • La programación es una forma especializada del modelo de resolución de problemas… • Sus fases son: – Definición del problema. – Creación, depuración y verificación del algoritmo. – Escritura del programa. – Verificación y depuración del programa. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Alcances… (1) • En general, los problemas a resolver son tan complejos, que no es posible resolverlos de una sola vez. • Es por ello que usualmente se divide un problema mayor en un listado de sub-problemas más pequeños y abordables. • Cada uno de estos sub-problemas son, a la vez, divisibles en otros sub-problemas de menor tamaño. • Algunos autores llaman a esto Dividir y Conquistar, o Refinamiento por Pasos. Profesores INF 140 – Informática I PHM/DCP 10
  • 11. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Alcances… (2) • Este tipo de proceso se asocia a un enfoque “de arriba abajo” (Top Down), ya que el problema se aborda desde lo más general (“desde arriba”), y progresivamente se introducen mayores detalles según se requiera (“hacia abajo)”. • El resultado es un algoritmo, que corresponde a un conjunto de instrucciones paso a paso que, luego de ser ejecutadas, resuelven el problema original. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Alcances… (3) • Este algoritmo suele estar escrito en un formato denominado Pseudocódigo, una mezcla entre lenguaje informático y lenguaje natural. • Una vez que los detalles del algoritmo están correctos, el paso siguiente es traducir las instrucciones existentes en pseudocódigo a un lenguaje de programación de alto nivel. Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Forma Difícil de Resolver un Problema Solución en forma de programa ? Problema • Énfasis en dar una solución rápida al problema, pero… ¿Qué problema estoy resolviendo? ¿Abordé el problema de manera adecuada? Profesores INF 140 – Informática I PHM/DCP 11
  • 12. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Forma Adecuada de Resolver un Problema (1) Solución en forma de programa Solución en forma Problema algorítmica Comprensión Implementación del problema de la Solución Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Forma Adecuada de Resolver un Problema (2) • Lo importante radica en comprender efectivamente qué problema pretendemos resolver, y plantear una solución analítica que lo resuelva. • Si fallamos en la comprensión del problema, sus consecuencias se arrastran hasta la solución final… Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Aspectos a tener en cuenta en un algoritmo (1) • Como ya se ha mencionado, un algoritmo se desarrolla con el objetivo de resolver un problema. • Por lo tanto, se espera que, luego de la ejecución del algoritmo, exista un resultado o salida. • Pero para obtener esta salida, es necesario que exista un proceso que sea capaz de entregarlo. • Ahora bien, un proceso requiere de entradas, elementos inicialmente externos al proceso, pero que se incorporan a él con el fin de obtener la salida esperada (solución). Profesores INF 140 – Informática I PHM/DCP 12
  • 13. Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Aspectos a tener en cuenta en un algoritmo (2) PROCESO Salida 1 Entrada 1 Salida 2 Entrada 2 Salida 3 Entrada 3 … … … … Entrada N Salida N Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Aspectos a tener en cuenta en un algoritmo (3) • Entradas: – ¿Cuántas entradas son requeridas por el proceso establecido? – ¿Qué tipo de entradas son requeridas por el proceso establecido? • Proceso: – ¿Cuál es el proceso más adecuado para resolver el problema planteado? • Salidas: – ¿Cuál es el resultado final esperado? Profesores INF 140 – Informática I PHM/DCP Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Informática Fin Profesores INF 140 – Informática I PHM/DCP 13