SlideShare una empresa de Scribd logo
Tema 6
Algoritmos y
Programas
Fundamentos de Informática.
I.T.I. Mecánica e I.T.I. Química.
Curso 2009/2010© Dpto. de Informática UVA
Tema 6: Algoritmos y Programas
2
Objetivos
 Al terminar este tema deberás ser capaz de:
– Definir qué es un algoritmo.
– Describir las características que debe cumplir un
algoritmo.
– Representar un algoritmo.
– Definir qué es un programa.
– Describir las propiedades del lenguaje C.
Tema 6: Algoritmos y Programas
3
Contenidos
1. Introducción
2. Concepto de algoritmo
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
Tema 6: Algoritmos y Programas
4
Introducción
 Un ordenador es un sistema para procesar
información
Procesador
Entrada =
Datos
Salida =
Resultados
Algoritm
o
Tema 6: Algoritmos y Programas
Introducción
 Ciclo de vida del software
5
análisis
diseño
IMPLEMENTACIÓN
PRUEBAS
mantenimiento
documentación
Tema 6: Algoritmos y Programas
6
Contenidos
1. Introducción
2. Concepto de algoritmo
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
Tema 6: Algoritmos y Programas
7
Concepto de algoritmo
 Algoritmo (según el DRAE):
(del árabe al-Khowârizmî) “Conjunto
ordenado y finito de operaciones que permite
hallar la solución de un problema”
– Ejemplos sencillos de algoritmos según esta
definición podrían ser una receta de cocina o las
instrucciones para armar una bicicleta.
Tema 6: Algoritmos y Programas
8
Concepto de algoritmo
 Breve reseña histórica:
– Los primeros algoritmos registrados datan de
Babilonia, originados en las matemáticas como
un método para resolver un problema usando
una secuencia de cálculos más simples.
– El primer algoritmo famoso es el cálculo del MCD
de dos números (Grecia, aproximadamente del s.
IV a. C.).
Tema 6: Algoritmos y Programas
9
Concepto de algoritmo
 En Informática:
– Un algoritmo es una secuencia de pasos a
seguir para resolver un problema usando un
computador u ordenador.
– La algoritmia o ciencia de los algoritmos, es uno
de los pilares de la informática.
Tema 6: Algoritmos y Programas
10
Concepto de algoritmo
 Definiciones básicas:
– Procesador: cualquier entidad capaz de resolver
un problema
– Entorno: conjunto de utensilios que el procesador
puede utilizar
– Estado: situación en la que se encuentra un
entorno en un momento dado.
Tema 6: Algoritmos y Programas
11
Concepto de algoritmo
 Definiciones básicas
– Acción:
Conjunto finito de operaciones que permiten
llegar de un estado inicial bien definido a otro
también bien definido.
– Tipos de acciones:
 Acción primitiva o elemental
– Puede ser realizada directamente por el procesador.
 Acción compuesta o abstracta
– Ha de descomponerse en acciones más elementales para
poder ser entendida por un procesador.
Tema 6: Algoritmos y Programas
12
Concepto de algoritmo
 Definición formal de algoritmo:
“Dado un procesador, un entorno, y un
problema bien definido, un algoritmo es la
secuencia finita de acciones primitivas que
llevan a la solución del problema”
Tema 6: Algoritmos y Programas
13
Concepto de algoritmo
 Características de un algoritmo:
– Preciso (no ambiguo): la instrucción a ejecutar
en cada paso queda determinada perfectamente.
– Determinista: debe comportarse del mismo
modo ante las mismas condiciones. Si se sigue
dos veces en el mismo entorno, el resultado
obtenido es el mismo.
– Finito: Tiene fin tras un número determinado de
pasos.
Tema 6: Algoritmos y Programas
14
Contenidos
1. Introducción
2. Definiciones básicas
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
Tema 6: Algoritmos y Programas
15
Lenguajes
de representación algorítmica
 ¿Cómo se escribe un algoritmo?
Representándolo mediante un lenguaje 
lenguaje de representación algorítmica
 Dos tipos de representación:
– Pseudocódigo
– Diagramas de flujo
Tema 6: Algoritmos y Programas
16
Representación algorítmica
 Pseudocódigo:
– Lenguaje similar al natural, pero al que se
añaden reglas para conseguir una definición
precisa del algoritmo
– Algunas reglas:
 Empieza por la palabra “Inicio” y termina con la palabra
“Fin”
 Se escribe una acción por línea
 Se subrayan las palabras clave
Tema 6: Algoritmos y Programas
17
Representación algorítmica
 Diagrama de Flujo (DF):
– Representación gráfica del flujo de control de un
algoritmo
– Elementos del (DF):
Terminal
Entrada/
Salida
Decisión Subprograma
Proceso
Conectores
si
no
Tema 6: Algoritmos y Programas
18
Inicio
Fin
SUMA <- 2
NUM <- 4
SUMA <- SUMA +
NUM
NUM <- NUM + 2
NUM <= 100
SI
escribir
SUMA
NO
Pseudocódigo Diagrama de flujo
Representación algorítmica
Entorno
suma, num
Inicio
// Iniciar variables
suma<- 2
num <- 4
// Suma de los números
repetir
suma <- suma + num
num <- num +2
mientras(num <= 100)
// Escribir resultado
escribir (suma)
Fin
Tema 6: Algoritmos y Programas
19
Contenidos
1. Introducción
2. Definiciones básicas
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
Tema 6: Algoritmos y Programas
20
 Hay que tener en cuenta que para resolver
un determinado problema existe más de un
algoritmo
– Todos encuentran la solución correcta…
pero unos lo hacen mejor que otros.
Ejemplos de algoritmo
Tema 6: Algoritmos y Programas
21
Ejemplos de algoritmo
 Multiplicar 981 por 1234
– Varias formas (algoritmos) de hacerlo:
 Método clásico
 Multiplicación “à la russe”
 Divide y vencerás
– Con todas se alcanza la solución
 ¿Cuál es la mejor? ¿Por qué?
Tema 6: Algoritmos y Programas
22
Ejemplos de algoritmo
 Método tradicional
981
* 1234
3924
2943
1962
981
1210554
Tema 6: Algoritmos y Programas
23
Ejemplos de algoritmo
 Método tradicional
Pero en UK…
981 981
* 1234 * 1234
3924 981
2943 1962
1962 2943
981 3924
1210554 1210554
Tema 6: Algoritmos y Programas
24
Ejemplos de algoritmo
 Multiplicación “à la russe”
– Se escriben el multiplicando y el multiplicador iniciando dos
columnas.
– Se obtienen los siguientes elementos de las columnas,
hasta que quede un 1 en la columna de la izquierda:
 La columna de la izquierda se va dividiendo entre dos,
ignorando los restos.
 La columna de la derecha se va multiplicando por dos.
– El resultado se obtiene sumando los números de la
columna de la derecha cuyo número correspondiente de la
columna izquierda sea impar.
– Sólo es necesario saber sumar, multiplicar por 2 y dividir
entre 2. Se encuentra en el hardware de las ALU’s.
Tema 6: Algoritmos y Programas
25
Ejemplos de algoritmo
 Multiplicación “à la russe”
981 1234
490 2468
245 4936
122 9872
61 19744
30 39488
15 78976
7 157952
3 315904
1 631808
Tema 6: Algoritmos y Programas
26
Ejemplos de algoritmo
 Multiplicación “à la russe”
981 1234
490
245 4936
122
61 19744
30
15 78976
7 157952
3 315904
1 631808
SUMA = 1210554
Tema 6: Algoritmos y Programas
27
Ejemplos de algoritmo
 Divide y vencerás
– Números con precisión par
– Se dividen por la mitad ambos operandos
– Se realizan las 4 multiplicaciones cruzadas
– Se suman los resultados desplazando
previamente hacia la izquierda
– Algoritmo recursivo
Tema 6: Algoritmos y Programas
28
Ejemplos de algoritmo
 Divide y vencerás
0981
1234
Multiplicar Desplazar Resultado
09*12 4 108----
09*34 2 306--
81*12 2 972--
81*34 0 2754
Suma 1210554
Tema 6: Algoritmos y Programas
29
Ejemplos de algoritmo
 Ejercicio:
– ¿Cuál es mejor y por qué?
– ¿Qué criterios podemos utilizar para valorar un
algoritmo?
Tema 6: Algoritmos y Programas
30
Contenidos
1. Introducción
2. Definiciones básicas
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
Tema 6: Algoritmos y Programas
31
Programas
 Programa: Algoritmo codificado en un
lenguaje de programación.
 Programar: Fraccionar un problema en
forma de instrucciones adecuadamente
formuladas para que un ordenador pueda
llevarlas a la práctica.
Tema 6: Algoritmos y Programas
32
Programas
 Las instrucciones se forman con elementos o
símbolos tomados de un determinado
repertorio, y se construyen siguiendo unas
reglas precisas.
 Todo lo relativo a los símbolos y reglas para
construir o redactar con ellos un programa
se denomina lenguaje de programación.
Tema 6: Algoritmos y Programas
33
Contenidos
1. Introducción
2. Definiciones básicas
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
Tema 6: Algoritmos y Programas
34
Lenguajes de programación
Clasificación
 Lenguaje máquina:
– Es el que entienden los circuitos del computador (CPU)
– Inconvenientes:
 depende del modelo de computadora;
 el repertorio de instrucciones es muy reducido
 es muy laborioso
 Ensamblador (lenguaje de bajo nivel)
– Código nemotécnico para recordar mejor las instrucciones
máquina
– Se mantienen los otros inconvenientes del lenguaje máquina
 Lenguajes de alto nivel
– No dependen de la computadora, y facilitan la tarea de
programación
Tema 6: Algoritmos y Programas
35
Lenguajes de programación
Lenguajes de alto nivel
 FORTRAN (Formula Translation): Primer LAN(década de los 50).
Aplicaciones científico-técnicas (grandes computadores y
supercomputadores)
 COBOL (COmmon Busines Oriented Language): 1960. Aplicaciones
comerciales y de gestión.
 BASIC (Beginner’s All-purpose Symbolic Instruction Code).
Desarrollado a mediados de los 60 como lenguaje interactivo
paraprincipiantes de programación.
 Visual BASIC: es el lenguaje más popular. Versión de Microsoft del
BASIC. Permite crear programas en un ambiente visual (lenguaje de
4ª generación).
 C: Desarrollado en Bell Labs a comienzos de los 70. Es complejo,
pero es potente, flexible y eficiente (el más utilizado para PCs y
estaciones de trabajo).
Tema 6: Algoritmos y Programas
36
Lenguajes de programación
Lenguajes de alto nivel
 Pascal: Creado por Wirth en 1971. El mejor lenguaje para
aprender a programar y describir algoritmos.
 Ada: Es un lenguaje definido por el Ministerio de Defensa de
USA a finales de los 70. Esta basado en el Pascal y tiene unas
reglas muy estrictas.
 C++: Ideado a comienzos de los 80 en los BellLabs. Es una
variante del C que permite utilizar la moderna metodología de
la programación (“programación orientada a objetos”)
 Java: Desarrollado en 1991 por Sun, es similar a C++ pero
más sencillo de aprender y usar. Muy usado para programa
interactivos y dinámicos (“applets” de web). Se ha definido un
computador virtual Java compatible, cualquier computador con
un programa que lo emule puede ejecutar aplicaciones Java.
Tema 6: Algoritmos y Programas
37
Lenguajes de programación
Lenguajes de alto nivel
 Otros lenguajes (usados en Inteligencia artificial):
– LISP (LISt Processing): Finales de los 50. Procesamiento
de datos no numéricos (caracteres, palabras y otros
símbolos). Se usa en Inteligencia Artificial.
– PROLOG:(Programming Logic): Trabaja con relaciones
lógicas entre hechos. Muy usado en inteligencia artificial.
– LOGO: versión simplificada del LISP para niños.
Tema 6: Algoritmos y Programas
38
Lenguajes de programación
Traductores
 Traducción: Proceso por el cual se convierte el texto
del programa de entrada en el de salida.
– Lenguaje fuente: lenguaje en el que se escribe la entrada
– Lenguaje objeto: lenguaje en el que se escribe la salida.
En general, muy diferente del lenguaje fuente
 Compilador: Programa que acepta como entrada un
texto de programa escrito en un cierto lenguaje de
alto nivel y genera como salida texto de programa
en otro lenguaje, generalmente lenguaje máquina.
Tema 6: Algoritmos y Programas
39
Lenguajes de programación
Compiladores
 Compilar ≈ Convertir de un formato a otro
– El significado deberá permanecer inalterado en la conversión
– La entrada está escrita en un lenguaje  Tiene estructura
– Semántica asociada y descrita en términos de esa estructura
 El compilador “comprende” el programa y recolecta su
significado en una representación semántica
intermedia
 A la hora de generar la salida  se genera estructura
y significado
Tema 6: Algoritmos y Programas
40
Lenguajes de programación
Intérpretes
 Forma de trabajar cada vez más frecuente: Intérpretes
– En vez de traducir, realiza las acciones directamente
– Por ejemplo, la máquina virtual de Java
 Ventajas del uso de intérpretes
– Portabilidad: Un intérprete se escribe, habitualmente, en
lenguaje de alto nivel
– Sencillez: Escribir un intérprete es menos costoso que escribir
un compilador
– Señalización y manejo de errores: los compiladores cuidan
“demasiado” la eficiencia de código
– Seguridad: Funcionamiento más transparente al usuario
 Desventajas: Velocidad de los programas interpretados
y consumo de memoria.
Tema 6: Algoritmos y Programas
41
Lenguajes de programación
Compiladores vs. Intérpretes
 Compiladores:
– El procesamiento del programa es considerable
– El mecanismo de interpretación previsto es la CPU (hw)
– La ejecución del programa traducido es relativamente rápida
 Intérpretes:
– El procesamiento del programa es entre mínimo y moderado
– El mecanismo de interpretación es un programa (sw)
– La ejecución del programa es, en general, más lenta y más
segura
Tema 6: Algoritmos y Programas
42
Contenidos
1. Introducción
2. Definiciones básicas
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
Tema 6: Algoritmos y Programas
43
cc viA.out
Diseño
Error en tiempo
de los datos
Error en el tratamiento Error en tiempo
Analisis Traducción a código C
CompilaciónPruebas de ejecución
de compilación
de ejecución
al ordenador
Proceso de programación
Tema 6: Algoritmos y Programas
44
Contenidos
1. Introducción
2. Definiciones básicas
3. Lenguajes de representación algorítmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programación
7. El proceso de programación
8. Introducción al lenguaje C
Tema 6: Algoritmos y Programas
45
Lenguaje C
 Es un lenguaje estructurado de propósito general,
orientado a la programación de sistemas
– Origen:
 Evolución de BSPL y B
 “The C programming language”, B. Kernighan & D. Ritchie.
(1978)
– ANSI C:
 Versión estándar en 1983
 Nueva revisión en 1999
– Uno de los lenguajes más utilizados en la industria del
software actual y en el mundo Unix/Linux
Tema 6: Algoritmos y Programas
46
Lenguaje C
 Características de C
– Propósito general
 Válido para diversos objetivos
– Portable
 NOTA: Sin embargo, siempre hay que compilar y probar un
programa en el ordenador “destino”
– Eficiente
 Apropiado para la programación de sistemas
– Extendido.
 Gran cantidad de bibliotecas de funciones, compiladores, etc.
 Amplia difusión y uso.
Tema 6: Algoritmos y Programas
47
Bibliografía
 Joyanes Aguilar, L. “Fundamentos de
programación. Algoritmos y Estructura de
Datos”, McGrawHill. Capítulo 2.
 Llanos Ferraris, D. “Curso de C bajo UNIX”.
Capítulo 1.

Más contenido relacionado

La actualidad más candente

ETAPAS DESARROLLO DEL SISTEMA DE INFORMACION
ETAPAS DESARROLLO DEL SISTEMA DE INFORMACIONETAPAS DESARROLLO DEL SISTEMA DE INFORMACION
ETAPAS DESARROLLO DEL SISTEMA DE INFORMACIONYolimar Campos
 
Protocolos, estandares y tipos de modem
Protocolos, estandares y tipos de modemProtocolos, estandares y tipos de modem
Protocolos, estandares y tipos de modemMirna L. Torres Garcia
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasYESENIA CETINA
 
Estructuras Selectivas Simples, Dobles y Múltiples
Estructuras Selectivas Simples, Dobles y MúltiplesEstructuras Selectivas Simples, Dobles y Múltiples
Estructuras Selectivas Simples, Dobles y Múltiplesgladysurea2
 
Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)
Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)
Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)Juan Lopez
 
Introduccion a Personal Software Process
Introduccion a Personal Software ProcessIntroduccion a Personal Software Process
Introduccion a Personal Software ProcessTonymx
 
PARADIGMA FUNCIONAL
PARADIGMA FUNCIONALPARADIGMA FUNCIONAL
PARADIGMA FUNCIONALFredy Olaya
 
Sincronización entre procesos
Sincronización entre procesosSincronización entre procesos
Sincronización entre procesosIchinose 11
 
Desarrollo estructurado
Desarrollo estructuradoDesarrollo estructurado
Desarrollo estructuradowaralivt
 
Estructuras Selectivas y Repetitivas en C++
Estructuras Selectivas y Repetitivas en C++Estructuras Selectivas y Repetitivas en C++
Estructuras Selectivas y Repetitivas en C++ncrmax
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Administracion y manejo de memoria
Administracion y manejo de memoriaAdministracion y manejo de memoria
Administracion y manejo de memoriagiovatovar
 
Estructura+del+sistema+mac+os+x
Estructura+del+sistema+mac+os+xEstructura+del+sistema+mac+os+x
Estructura+del+sistema+mac+os+xSophia Galarraga
 

La actualidad más candente (20)

ETAPAS DESARROLLO DEL SISTEMA DE INFORMACION
ETAPAS DESARROLLO DEL SISTEMA DE INFORMACIONETAPAS DESARROLLO DEL SISTEMA DE INFORMACION
ETAPAS DESARROLLO DEL SISTEMA DE INFORMACION
 
Protocolos, estandares y tipos de modem
Protocolos, estandares y tipos de modemProtocolos, estandares y tipos de modem
Protocolos, estandares y tipos de modem
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
Estructuras Selectivas Simples, Dobles y Múltiples
Estructuras Selectivas Simples, Dobles y MúltiplesEstructuras Selectivas Simples, Dobles y Múltiples
Estructuras Selectivas Simples, Dobles y Múltiples
 
Unidad1 Lenguajes y automatas
Unidad1 Lenguajes y automatasUnidad1 Lenguajes y automatas
Unidad1 Lenguajes y automatas
 
Int. programacion
Int. programacionInt. programacion
Int. programacion
 
Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)
Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)
Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)
 
Introduccion a Personal Software Process
Introduccion a Personal Software ProcessIntroduccion a Personal Software Process
Introduccion a Personal Software Process
 
emergencia y jerarquia
emergencia y jerarquiaemergencia y jerarquia
emergencia y jerarquia
 
Clases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programaciónClases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programación
 
PARADIGMA FUNCIONAL
PARADIGMA FUNCIONALPARADIGMA FUNCIONAL
PARADIGMA FUNCIONAL
 
Sincronización entre procesos
Sincronización entre procesosSincronización entre procesos
Sincronización entre procesos
 
Desarrollo estructurado
Desarrollo estructuradoDesarrollo estructurado
Desarrollo estructurado
 
Traductor y su estructura
Traductor y su estructuraTraductor y su estructura
Traductor y su estructura
 
Estructuras Selectivas y Repetitivas en C++
Estructuras Selectivas y Repetitivas en C++Estructuras Selectivas y Repetitivas en C++
Estructuras Selectivas y Repetitivas en C++
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
 
Administracion y manejo de memoria
Administracion y manejo de memoriaAdministracion y manejo de memoria
Administracion y manejo de memoria
 
Estructura+del+sistema+mac+os+x
Estructura+del+sistema+mac+os+xEstructura+del+sistema+mac+os+x
Estructura+del+sistema+mac+os+x
 
Expresiones lógicas programación
Expresiones lógicas programaciónExpresiones lógicas programación
Expresiones lógicas programación
 

Similar a Fundamentos de agoritmos

tema7-algoritmos-2010.pptx
tema7-algoritmos-2010.pptxtema7-algoritmos-2010.pptx
tema7-algoritmos-2010.pptxGuilleWm
 
DEFINICIÓN DE LENGUAJES ALGORÍTMICOS
DEFINICIÓN DE LENGUAJES ALGORÍTMICOSDEFINICIÓN DE LENGUAJES ALGORÍTMICOS
DEFINICIÓN DE LENGUAJES ALGORÍTMICOSadark
 
Teoria Algoritmia
Teoria AlgoritmiaTeoria Algoritmia
Teoria Algoritmiadarioc77
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoLincoln School
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujocasdilacol
 
1. Algoritmos y Programas
1. Algoritmos y Programas1. Algoritmos y Programas
1. Algoritmos y Programas1101
 
ALGORITMO
ALGORITMOALGORITMO
ALGORITMOvasebas
 
La mama de issa
La mama de issaLa mama de issa
La mama de issavasebas
 
Desarrollo de lógica algorítmica_PARTE 1.PPTX
Desarrollo de lógica algorítmica_PARTE 1.PPTXDesarrollo de lógica algorítmica_PARTE 1.PPTX
Desarrollo de lógica algorítmica_PARTE 1.PPTXReyna FalcÓn
 
Algoritmo
Algoritmo Algoritmo
Algoritmo jhohamn
 
Clase 8 algoritmos_y_programas
Clase 8 algoritmos_y_programasClase 8 algoritmos_y_programas
Clase 8 algoritmos_y_programasDr.Ing. Uriel
 
resolucion de problemas: Algoritmos y programas
resolucion de problemas: Algoritmos y programas resolucion de problemas: Algoritmos y programas
resolucion de problemas: Algoritmos y programas panchofronteras
 
Algoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigoAlgoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigoAdolfoReyes24
 

Similar a Fundamentos de agoritmos (20)

tema7-algoritmos-2010.pptx
tema7-algoritmos-2010.pptxtema7-algoritmos-2010.pptx
tema7-algoritmos-2010.pptx
 
tema6-algoritmos-2010.pptx
tema6-algoritmos-2010.pptxtema6-algoritmos-2010.pptx
tema6-algoritmos-2010.pptx
 
DEFINICIÓN DE LENGUAJES ALGORÍTMICOS
DEFINICIÓN DE LENGUAJES ALGORÍTMICOSDEFINICIÓN DE LENGUAJES ALGORÍTMICOS
DEFINICIÓN DE LENGUAJES ALGORÍTMICOS
 
Introduccion.ppt
Introduccion.pptIntroduccion.ppt
Introduccion.ppt
 
_Algoritmos.ppt
_Algoritmos.ppt_Algoritmos.ppt
_Algoritmos.ppt
 
Teoria Algoritmia
Teoria AlgoritmiaTeoria Algoritmia
Teoria Algoritmia
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmico
 
Algoritmos y programacion
Algoritmos y programacionAlgoritmos y programacion
Algoritmos y programacion
 
Curso MATLAB
Curso MATLABCurso MATLAB
Curso MATLAB
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
1. Algoritmos y Programas
1. Algoritmos y Programas1. Algoritmos y Programas
1. Algoritmos y Programas
 
Algoritmos primero
Algoritmos primeroAlgoritmos primero
Algoritmos primero
 
Resolucion de problemas
Resolucion de problemasResolucion de problemas
Resolucion de problemas
 
ALGORITMO
ALGORITMOALGORITMO
ALGORITMO
 
La mama de issa
La mama de issaLa mama de issa
La mama de issa
 
Desarrollo de lógica algorítmica_PARTE 1.PPTX
Desarrollo de lógica algorítmica_PARTE 1.PPTXDesarrollo de lógica algorítmica_PARTE 1.PPTX
Desarrollo de lógica algorítmica_PARTE 1.PPTX
 
Algoritmo
Algoritmo Algoritmo
Algoritmo
 
Clase 8 algoritmos_y_programas
Clase 8 algoritmos_y_programasClase 8 algoritmos_y_programas
Clase 8 algoritmos_y_programas
 
resolucion de problemas: Algoritmos y programas
resolucion de problemas: Algoritmos y programas resolucion de problemas: Algoritmos y programas
resolucion de problemas: Algoritmos y programas
 
Algoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigoAlgoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigo
 

Último

Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónJuanPrez962115
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respetocdraco
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiegoCampos433849
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesPABLOCESARGARZONBENI
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.AlejandraCasallas7
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024DanielErazoMedina
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfAlejandraCasallas7
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestrerafaelsalazar0615
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx44652726
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfManuelCampos464987
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareAndres Avila
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfcj3806354
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docxwerito139410
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometriasofiasonder
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdfIsabelHuairaGarma
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusraquelariza02
 

Último (20)

Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 

Fundamentos de agoritmos

  • 1. Tema 6 Algoritmos y Programas Fundamentos de Informática. I.T.I. Mecánica e I.T.I. Química. Curso 2009/2010© Dpto. de Informática UVA
  • 2. Tema 6: Algoritmos y Programas 2 Objetivos  Al terminar este tema deberás ser capaz de: – Definir qué es un algoritmo. – Describir las características que debe cumplir un algoritmo. – Representar un algoritmo. – Definir qué es un programa. – Describir las propiedades del lenguaje C.
  • 3. Tema 6: Algoritmos y Programas 3 Contenidos 1. Introducción 2. Concepto de algoritmo 3. Lenguajes de representación algorítmica 4. Ejemplos de algoritmo 5. Programas 6. Lenguajes de programación 7. El proceso de programación 8. Introducción al lenguaje C
  • 4. Tema 6: Algoritmos y Programas 4 Introducción  Un ordenador es un sistema para procesar información Procesador Entrada = Datos Salida = Resultados Algoritm o
  • 5. Tema 6: Algoritmos y Programas Introducción  Ciclo de vida del software 5 análisis diseño IMPLEMENTACIÓN PRUEBAS mantenimiento documentación
  • 6. Tema 6: Algoritmos y Programas 6 Contenidos 1. Introducción 2. Concepto de algoritmo 3. Lenguajes de representación algorítmica 4. Ejemplos de algoritmo 5. Programas 6. Lenguajes de programación 7. El proceso de programación 8. Introducción al lenguaje C
  • 7. Tema 6: Algoritmos y Programas 7 Concepto de algoritmo  Algoritmo (según el DRAE): (del árabe al-Khowârizmî) “Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema” – Ejemplos sencillos de algoritmos según esta definición podrían ser una receta de cocina o las instrucciones para armar una bicicleta.
  • 8. Tema 6: Algoritmos y Programas 8 Concepto de algoritmo  Breve reseña histórica: – Los primeros algoritmos registrados datan de Babilonia, originados en las matemáticas como un método para resolver un problema usando una secuencia de cálculos más simples. – El primer algoritmo famoso es el cálculo del MCD de dos números (Grecia, aproximadamente del s. IV a. C.).
  • 9. Tema 6: Algoritmos y Programas 9 Concepto de algoritmo  En Informática: – Un algoritmo es una secuencia de pasos a seguir para resolver un problema usando un computador u ordenador. – La algoritmia o ciencia de los algoritmos, es uno de los pilares de la informática.
  • 10. Tema 6: Algoritmos y Programas 10 Concepto de algoritmo  Definiciones básicas: – Procesador: cualquier entidad capaz de resolver un problema – Entorno: conjunto de utensilios que el procesador puede utilizar – Estado: situación en la que se encuentra un entorno en un momento dado.
  • 11. Tema 6: Algoritmos y Programas 11 Concepto de algoritmo  Definiciones básicas – Acción: Conjunto finito de operaciones que permiten llegar de un estado inicial bien definido a otro también bien definido. – Tipos de acciones:  Acción primitiva o elemental – Puede ser realizada directamente por el procesador.  Acción compuesta o abstracta – Ha de descomponerse en acciones más elementales para poder ser entendida por un procesador.
  • 12. Tema 6: Algoritmos y Programas 12 Concepto de algoritmo  Definición formal de algoritmo: “Dado un procesador, un entorno, y un problema bien definido, un algoritmo es la secuencia finita de acciones primitivas que llevan a la solución del problema”
  • 13. Tema 6: Algoritmos y Programas 13 Concepto de algoritmo  Características de un algoritmo: – Preciso (no ambiguo): la instrucción a ejecutar en cada paso queda determinada perfectamente. – Determinista: debe comportarse del mismo modo ante las mismas condiciones. Si se sigue dos veces en el mismo entorno, el resultado obtenido es el mismo. – Finito: Tiene fin tras un número determinado de pasos.
  • 14. Tema 6: Algoritmos y Programas 14 Contenidos 1. Introducción 2. Definiciones básicas 3. Lenguajes de representación algorítmica 4. Ejemplos de algoritmo 5. Programas 6. Lenguajes de programación 7. El proceso de programación 8. Introducción al lenguaje C
  • 15. Tema 6: Algoritmos y Programas 15 Lenguajes de representación algorítmica  ¿Cómo se escribe un algoritmo? Representándolo mediante un lenguaje  lenguaje de representación algorítmica  Dos tipos de representación: – Pseudocódigo – Diagramas de flujo
  • 16. Tema 6: Algoritmos y Programas 16 Representación algorítmica  Pseudocódigo: – Lenguaje similar al natural, pero al que se añaden reglas para conseguir una definición precisa del algoritmo – Algunas reglas:  Empieza por la palabra “Inicio” y termina con la palabra “Fin”  Se escribe una acción por línea  Se subrayan las palabras clave
  • 17. Tema 6: Algoritmos y Programas 17 Representación algorítmica  Diagrama de Flujo (DF): – Representación gráfica del flujo de control de un algoritmo – Elementos del (DF): Terminal Entrada/ Salida Decisión Subprograma Proceso Conectores si no
  • 18. Tema 6: Algoritmos y Programas 18 Inicio Fin SUMA <- 2 NUM <- 4 SUMA <- SUMA + NUM NUM <- NUM + 2 NUM <= 100 SI escribir SUMA NO Pseudocódigo Diagrama de flujo Representación algorítmica Entorno suma, num Inicio // Iniciar variables suma<- 2 num <- 4 // Suma de los números repetir suma <- suma + num num <- num +2 mientras(num <= 100) // Escribir resultado escribir (suma) Fin
  • 19. Tema 6: Algoritmos y Programas 19 Contenidos 1. Introducción 2. Definiciones básicas 3. Lenguajes de representación algorítmica 4. Ejemplos de algoritmo 5. Programas 6. Lenguajes de programación 7. El proceso de programación 8. Introducción al lenguaje C
  • 20. Tema 6: Algoritmos y Programas 20  Hay que tener en cuenta que para resolver un determinado problema existe más de un algoritmo – Todos encuentran la solución correcta… pero unos lo hacen mejor que otros. Ejemplos de algoritmo
  • 21. Tema 6: Algoritmos y Programas 21 Ejemplos de algoritmo  Multiplicar 981 por 1234 – Varias formas (algoritmos) de hacerlo:  Método clásico  Multiplicación “à la russe”  Divide y vencerás – Con todas se alcanza la solución  ¿Cuál es la mejor? ¿Por qué?
  • 22. Tema 6: Algoritmos y Programas 22 Ejemplos de algoritmo  Método tradicional 981 * 1234 3924 2943 1962 981 1210554
  • 23. Tema 6: Algoritmos y Programas 23 Ejemplos de algoritmo  Método tradicional Pero en UK… 981 981 * 1234 * 1234 3924 981 2943 1962 1962 2943 981 3924 1210554 1210554
  • 24. Tema 6: Algoritmos y Programas 24 Ejemplos de algoritmo  Multiplicación “à la russe” – Se escriben el multiplicando y el multiplicador iniciando dos columnas. – Se obtienen los siguientes elementos de las columnas, hasta que quede un 1 en la columna de la izquierda:  La columna de la izquierda se va dividiendo entre dos, ignorando los restos.  La columna de la derecha se va multiplicando por dos. – El resultado se obtiene sumando los números de la columna de la derecha cuyo número correspondiente de la columna izquierda sea impar. – Sólo es necesario saber sumar, multiplicar por 2 y dividir entre 2. Se encuentra en el hardware de las ALU’s.
  • 25. Tema 6: Algoritmos y Programas 25 Ejemplos de algoritmo  Multiplicación “à la russe” 981 1234 490 2468 245 4936 122 9872 61 19744 30 39488 15 78976 7 157952 3 315904 1 631808
  • 26. Tema 6: Algoritmos y Programas 26 Ejemplos de algoritmo  Multiplicación “à la russe” 981 1234 490 245 4936 122 61 19744 30 15 78976 7 157952 3 315904 1 631808 SUMA = 1210554
  • 27. Tema 6: Algoritmos y Programas 27 Ejemplos de algoritmo  Divide y vencerás – Números con precisión par – Se dividen por la mitad ambos operandos – Se realizan las 4 multiplicaciones cruzadas – Se suman los resultados desplazando previamente hacia la izquierda – Algoritmo recursivo
  • 28. Tema 6: Algoritmos y Programas 28 Ejemplos de algoritmo  Divide y vencerás 0981 1234 Multiplicar Desplazar Resultado 09*12 4 108---- 09*34 2 306-- 81*12 2 972-- 81*34 0 2754 Suma 1210554
  • 29. Tema 6: Algoritmos y Programas 29 Ejemplos de algoritmo  Ejercicio: – ¿Cuál es mejor y por qué? – ¿Qué criterios podemos utilizar para valorar un algoritmo?
  • 30. Tema 6: Algoritmos y Programas 30 Contenidos 1. Introducción 2. Definiciones básicas 3. Lenguajes de representación algorítmica 4. Ejemplos de algoritmo 5. Programas 6. Lenguajes de programación 7. El proceso de programación 8. Introducción al lenguaje C
  • 31. Tema 6: Algoritmos y Programas 31 Programas  Programa: Algoritmo codificado en un lenguaje de programación.  Programar: Fraccionar un problema en forma de instrucciones adecuadamente formuladas para que un ordenador pueda llevarlas a la práctica.
  • 32. Tema 6: Algoritmos y Programas 32 Programas  Las instrucciones se forman con elementos o símbolos tomados de un determinado repertorio, y se construyen siguiendo unas reglas precisas.  Todo lo relativo a los símbolos y reglas para construir o redactar con ellos un programa se denomina lenguaje de programación.
  • 33. Tema 6: Algoritmos y Programas 33 Contenidos 1. Introducción 2. Definiciones básicas 3. Lenguajes de representación algorítmica 4. Ejemplos de algoritmo 5. Programas 6. Lenguajes de programación 7. El proceso de programación 8. Introducción al lenguaje C
  • 34. Tema 6: Algoritmos y Programas 34 Lenguajes de programación Clasificación  Lenguaje máquina: – Es el que entienden los circuitos del computador (CPU) – Inconvenientes:  depende del modelo de computadora;  el repertorio de instrucciones es muy reducido  es muy laborioso  Ensamblador (lenguaje de bajo nivel) – Código nemotécnico para recordar mejor las instrucciones máquina – Se mantienen los otros inconvenientes del lenguaje máquina  Lenguajes de alto nivel – No dependen de la computadora, y facilitan la tarea de programación
  • 35. Tema 6: Algoritmos y Programas 35 Lenguajes de programación Lenguajes de alto nivel  FORTRAN (Formula Translation): Primer LAN(década de los 50). Aplicaciones científico-técnicas (grandes computadores y supercomputadores)  COBOL (COmmon Busines Oriented Language): 1960. Aplicaciones comerciales y de gestión.  BASIC (Beginner’s All-purpose Symbolic Instruction Code). Desarrollado a mediados de los 60 como lenguaje interactivo paraprincipiantes de programación.  Visual BASIC: es el lenguaje más popular. Versión de Microsoft del BASIC. Permite crear programas en un ambiente visual (lenguaje de 4ª generación).  C: Desarrollado en Bell Labs a comienzos de los 70. Es complejo, pero es potente, flexible y eficiente (el más utilizado para PCs y estaciones de trabajo).
  • 36. Tema 6: Algoritmos y Programas 36 Lenguajes de programación Lenguajes de alto nivel  Pascal: Creado por Wirth en 1971. El mejor lenguaje para aprender a programar y describir algoritmos.  Ada: Es un lenguaje definido por el Ministerio de Defensa de USA a finales de los 70. Esta basado en el Pascal y tiene unas reglas muy estrictas.  C++: Ideado a comienzos de los 80 en los BellLabs. Es una variante del C que permite utilizar la moderna metodología de la programación (“programación orientada a objetos”)  Java: Desarrollado en 1991 por Sun, es similar a C++ pero más sencillo de aprender y usar. Muy usado para programa interactivos y dinámicos (“applets” de web). Se ha definido un computador virtual Java compatible, cualquier computador con un programa que lo emule puede ejecutar aplicaciones Java.
  • 37. Tema 6: Algoritmos y Programas 37 Lenguajes de programación Lenguajes de alto nivel  Otros lenguajes (usados en Inteligencia artificial): – LISP (LISt Processing): Finales de los 50. Procesamiento de datos no numéricos (caracteres, palabras y otros símbolos). Se usa en Inteligencia Artificial. – PROLOG:(Programming Logic): Trabaja con relaciones lógicas entre hechos. Muy usado en inteligencia artificial. – LOGO: versión simplificada del LISP para niños.
  • 38. Tema 6: Algoritmos y Programas 38 Lenguajes de programación Traductores  Traducción: Proceso por el cual se convierte el texto del programa de entrada en el de salida. – Lenguaje fuente: lenguaje en el que se escribe la entrada – Lenguaje objeto: lenguaje en el que se escribe la salida. En general, muy diferente del lenguaje fuente  Compilador: Programa que acepta como entrada un texto de programa escrito en un cierto lenguaje de alto nivel y genera como salida texto de programa en otro lenguaje, generalmente lenguaje máquina.
  • 39. Tema 6: Algoritmos y Programas 39 Lenguajes de programación Compiladores  Compilar ≈ Convertir de un formato a otro – El significado deberá permanecer inalterado en la conversión – La entrada está escrita en un lenguaje  Tiene estructura – Semántica asociada y descrita en términos de esa estructura  El compilador “comprende” el programa y recolecta su significado en una representación semántica intermedia  A la hora de generar la salida  se genera estructura y significado
  • 40. Tema 6: Algoritmos y Programas 40 Lenguajes de programación Intérpretes  Forma de trabajar cada vez más frecuente: Intérpretes – En vez de traducir, realiza las acciones directamente – Por ejemplo, la máquina virtual de Java  Ventajas del uso de intérpretes – Portabilidad: Un intérprete se escribe, habitualmente, en lenguaje de alto nivel – Sencillez: Escribir un intérprete es menos costoso que escribir un compilador – Señalización y manejo de errores: los compiladores cuidan “demasiado” la eficiencia de código – Seguridad: Funcionamiento más transparente al usuario  Desventajas: Velocidad de los programas interpretados y consumo de memoria.
  • 41. Tema 6: Algoritmos y Programas 41 Lenguajes de programación Compiladores vs. Intérpretes  Compiladores: – El procesamiento del programa es considerable – El mecanismo de interpretación previsto es la CPU (hw) – La ejecución del programa traducido es relativamente rápida  Intérpretes: – El procesamiento del programa es entre mínimo y moderado – El mecanismo de interpretación es un programa (sw) – La ejecución del programa es, en general, más lenta y más segura
  • 42. Tema 6: Algoritmos y Programas 42 Contenidos 1. Introducción 2. Definiciones básicas 3. Lenguajes de representación algorítmica 4. Ejemplos de algoritmo 5. Programas 6. Lenguajes de programación 7. El proceso de programación 8. Introducción al lenguaje C
  • 43. Tema 6: Algoritmos y Programas 43 cc viA.out Diseño Error en tiempo de los datos Error en el tratamiento Error en tiempo Analisis Traducción a código C CompilaciónPruebas de ejecución de compilación de ejecución al ordenador Proceso de programación
  • 44. Tema 6: Algoritmos y Programas 44 Contenidos 1. Introducción 2. Definiciones básicas 3. Lenguajes de representación algorítmica 4. Ejemplos de algoritmo 5. Programas 6. Lenguajes de programación 7. El proceso de programación 8. Introducción al lenguaje C
  • 45. Tema 6: Algoritmos y Programas 45 Lenguaje C  Es un lenguaje estructurado de propósito general, orientado a la programación de sistemas – Origen:  Evolución de BSPL y B  “The C programming language”, B. Kernighan & D. Ritchie. (1978) – ANSI C:  Versión estándar en 1983  Nueva revisión en 1999 – Uno de los lenguajes más utilizados en la industria del software actual y en el mundo Unix/Linux
  • 46. Tema 6: Algoritmos y Programas 46 Lenguaje C  Características de C – Propósito general  Válido para diversos objetivos – Portable  NOTA: Sin embargo, siempre hay que compilar y probar un programa en el ordenador “destino” – Eficiente  Apropiado para la programación de sistemas – Extendido.  Gran cantidad de bibliotecas de funciones, compiladores, etc.  Amplia difusión y uso.
  • 47. Tema 6: Algoritmos y Programas 47 Bibliografía  Joyanes Aguilar, L. “Fundamentos de programación. Algoritmos y Estructura de Datos”, McGrawHill. Capítulo 2.  Llanos Ferraris, D. “Curso de C bajo UNIX”. Capítulo 1.