TEMA 1 Algoritmos y Programas Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico Sistemas de Procesamiento de Información  Sistema: conjunto de cosas que ordenadamente.

Download Report

Transcript TEMA 1 Algoritmos y Programas Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico Sistemas de Procesamiento de Información  Sistema: conjunto de cosas que ordenadamente.

TEMA 1
Algoritmos y Programas
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Sistemas de Procesamiento
de Información
 Sistema: conjunto de cosas que
ordenadamente relacionadas entre sí
contribuyen a determinado objeto.
 Un sistema se compone a su vez de
otros sistemas.
 Los Componentes de un sistema
informático: hardware y software.
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Periféricos de entrada
Periféricos de salida
Teclado
Mouse
Scaner
Monitor
Impresora
Parlantes
Periféricos de
almacenamiento
Disco Duro
Disco Flexible
CDs – DVDs
Memoria Principal (RAM)
Unidad Central de Proceso (CPU)
Esquema Básico del Hardware del computador
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Lenguajes de Programación
 Un programa es un conjunto de órdenes para un
ordenador. Estas órdenes se le deben dar en un cierto
lenguaje, que el ordenador sea capaz de comprender.
 El problema es que los lenguajes que realmente
entienden los ordenadores resultan difíciles para
nosotros, porque son muy distintos de los que nosotros
empleamos habitualmente para hablar. Escribir
programas en el lenguaje que utiliza internamente el
ordenador (llamado “lenguaje máquina” o “código
máquina”) es un trabajo duro, tanto a la hora de crear el
programa como (especialmente) en el momento de
corregir algún fallo o mejorar lo que se hizo.
 Por eso, en la práctica se emplean lenguajes más
parecidos al lenguaje humano, llamados “lenguajes de
alto nivel”. Normalmente, estos son muy parecidos al
idioma inglés, aunque siguen unas reglas mucho más
estrictas.
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Lenguajes de alto nivel y de
bajo nivel.

Uno de los lenguajes de alto nivel más sencillos es el lenguaje BASIC.
En este lenguaje, escribir el texto Hola en pantalla, sería tan sencillo
como usar la orden

PRINT "Hola“

Otros lenguajes, como Pascal, nos obligan a ser algo más estrictos,
pero a cambio hacen más fácil descubrir errores:
program Saludo;
begin
write('Hola');
end.

El equivalente en lenguaje C resulta algo más difícil de leer
#include <stdio.h>
int main()
{
printf("Hola");
}
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Lenguajes de bajo nivel
 Los lenguajes de bajo nivel son más cercanos
al ordenador que a los lenguajes humanos. Eso
hace que sean más difíciles de aprender y
también que los fallos sean más difíciles de
descubrir y corregir, a cambio de que podemos
optimizar al máximo la velocidad (si sabemos
cómo), e incluso llegar a un nivel de control del
ordenador que a veces no se puede alcanzar
con otros lenguajes. Por ejemplo, escribir Hola
en lenguaje ensamblador de un ordenador
equipado con el sistema operativo MsDos y con
un procesador de la familia Intel x86 sería algo
como
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
dosseg
.model small
.stack 100h
.data
hello_message db 'Hola',0dh,0ah,'$'
.code
main proc
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset hello_message
int 21h
mov ax,4C00h
int 21h
main endp
end main
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
 Resulta bastante más difícil de seguir. Pero eso
todavía no es lo que el ordenador entiende,
aunque tiene una equivalencia casi directa. Lo
que el ordenador realmente es capaz de
comprender son secuencias de ceros y unos.
Por ejemplo, las órdenes “mov ds, ax” y “mov
ah, 9” (en cuyo significado no vamos a entrar)
se convertirían a lo siguiente:
1000 0011 1101 1000 1011 0100 0000 1001
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
LISP
Simula
SmallTalk
FORTRAN
COBOL
Schema
ML
C++
ADA
Java
Visual
Basic
BASIC
ALGOL
Funcional
C
APL
GPSS
ADA
Orientado
a Objetos
Imperativa
PASCAL
Prolog
Declarativa
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Ensambladores,
compiladores e intérpretes
 Está claro entonces que las órdenes que
nosotros hemos escrito (o “programa fuente”)
deben convertirse a lo que el ordenador
comprende (obteniendo el “programa
ejecutable”).
 Si elegimos un lenguaje de bajo nivel, como el
ensamblador (en inglés Assembly, abreviado
como Asm), la traducción es sencilla, y de
hacer esa traducción se encargan unas
herramientas llamadas ensambladores (en
inglés Assembler).
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
 Cuando el lenguaje que hemos empleado es de alto nivel, la
traducción es más complicada, y a veces implicará también
recopilar varios fuentes distintos o incluir posibilidades que se
encuentran en bibliotecas que no hemos preparado nosotros.
Las herramientas encargadas de todo esto son los
compiladores.
 Un intérprete es una herramienta parecida a un compilador,
con la diferencia de que en los intérpretes no se crea ningún
“programa ejecutable” capaz de funcionar “por sí solo”, de
modo que si queremos distribuir nuestro programa a alguien,
deberemos entregarle el programa fuente y también el
intérprete que es capaz de entenderlo, o no le servirá de nada.
Cuando ponemos el programa en funcionamiento, el intérprete
de encarga de convertir el programa en lenguaje de alto nivel a
código máquina, orden por orden, justo en el momento en que
hay que procesar cada una de las órdenes.
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Programa Fuente
Programa Fuente
Intérprete
Compilador
Traducción y Ejecución
Línea a Línea
Programa Objeto
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Definición de algoritmo
 La palabra algoritmo proviene del nombre del
matemático persa del siglo IX Muhammad ibn
Musa al-Jwarizmi
 Un algoritmo es una secuencia ordenada de
pasos, exenta de ambigüedad, que permite la
resolución de un problema determinado
 Características de un algoritmo



Preciso: exento de ambigüedad
Finito: si se sigue el algoritmo, se debe terminar en
algún momento
Definido: si se sigue dos veces el algoritmo con los
mismo datos de entrada, la salida debe ser la
misma
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Tipos de datos
 Conjunto de valores junto con las
operaciones sobre esos valores
 Tipos elementales




Entero
Real
Carácter
Lógico
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Tipos de datos
 Tipo Entero
 Conjunto de los números enteros positivos y
negativos
 En la práctica están limitados por el
almacenamiento -> Overflow
 Operaciones básicas: aritméticas, relacionales
 Tipo Real
 Conjunto de los números reales positivos y
negativos (parte entera y parte decimal separada
por un punto)
 En la práctica están limitados por el
almacenamiento -> Overflow
 Operaciones básicas: aritméticas, relacionales
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Tipos de datos
 Tipo carácter
Conjunto de elementos de un conjunto de caracteres
predefinidos o alfabeto (normalmente se utiliza el conjunto
de caracteres ASCII)
 Generalmente se almacenan internamente como datos
enteros (código ASCII)
 Operaciones de conversión de enteros a caracteres y
viceversa y relacionales
 Lógicos
 Valores entre 2 posibles, es decir, valores binarios
(verdad/falso, si/no)
 En algunos lenguajes no se implementan sino que se
consideran como verdad cualquier valor distinto de 0
 Operaciones: operadores lógicos (AND, OR y NOT)
 Fundamentales para evaluar condiciones

Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Operadores lógicos
AND
OR
NOT
V
V
V
F
F
F
V
F
F
F
F
V
F
V
F
F
V
F
F
F
F
V
V
V
 (3<4) OR (3=4)
 (Respuesta=‘S’) AND (salir=‘N’)
 NOT ((3<4) OR (3=4))
 (caracter=‘A’) AND (caracter=‘B’) es siempre FALSO
 (N<=10) OR (N>10) es siempre VERDAD
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Elementos de un algoritmo
 Variables, constantes y expresiones
 Estructuras de control

Secuencial
 Operación
de asignación
 Operación de entrada
 Operación de salida


Condicional
Repetitiva
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Identificadores







Un identificador es una secuencia de caracteres que permite identificar
de forma única a cada elemento/objeto de un algoritmo
No todos los caracteres son válidos por lo que normalmente se usan
letras, dígitos y subrayado (_)
El primer carácter debe ser una letra o subrayado
Pueden tener cualquier longitud dentro del límite que imponga el
compilador
Las palabras reservadas del lenguaje no pueden utilizarse como
identificadores
Algunos lenguajes no distinguen entre caracteres en mayúsculas y
minúsculas (Pascal, Modula-2) y otros sí (C, Java)
Reglas para crear identificadores




Usar solo letras, dígitos y subrayado
Usar minúsculas para identificadores de variables
Usar mayúsculas para identificadores de constantes
Para identificadores de funciones con más de una palabra usar
subrayado para separar las palabras o mayúsculas para la primera
letra de cada palabra (Ej. CalcularFechaNacimiento)
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Variables
 Una variable es un objeto de datos que posee un valor
conocido por su nombre (identificador)
 Toda variable tiene un tipo asociado
 Su valor puede ser modificado pero en un instante dado
sólo contiene un valor determinado
 Es necesario declarar las variables al principio del
algoritmo


Elegir el nombre mediante un identificador
Determinar el tipo de datos que va a contener
 Ejemplos



Sueldo: real
Edad: entero
Letra_nif: caracter
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Constantes
 Objeto de datos que contiene un valor
invariable conocido por su Identificador
 Es necesario inicializar las constantes al
principio del algoritmo esto determina el tipo de
la constante
 Ejemplos




PI=3.14
SALUDO=“Hola mundo”
MAXIMO=200
RESPUESTA=‘S’
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Valores constantes
 También llamados valores literales
 Se trata de valores que aparecen
explícitamente en un algoritmo y que no tienen
identificador asociado (sólo pueden ser
referenciados por su propio valor)
 Ejemplos





0
“Introduzca el dato de entrada”
100
7.5
‘x’
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Expresiones
 Una expresión es la combinación de distintas variables,
constantes, valores constantes, operadores, paréntesis y
nombres de funciones
 Toda expresión tiene en todo momento un valor concreto
que es el resultado de evaluarla de izquierda a derecha,
siempre teniendo en cuenta la precedencia de los
operadores y los paréntesis que aparecen en la
expresión
 El valor devuelto tras la evaluación de una expresión
determina el tipo de la expresión (entera, lógica …)
 Ejemplos
 5+6-5*2
 (5+6-5)*2
 (A<0) OR B AND C
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Precedencia de los
operadores
Operadores
Lógicos
NOT
AND
OR
Operadores
Relacionales
Operadores Aritméticos
<, > , = , <= , >=, <>
Operadores de signo (+,-)
Multiplicación y división (* , /, %)
Suma y resta (+ , -)
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico
Ejemplos
7 * 3 – 5 ^ 2 / ( 2 + 3 ) * 8
 ( (2*3)< 8) AND ( (5*2) >= 14)
Ing. Roger Alarcón García - MSc. Jessie Bravo Jaico