Conceptos generales de algorítmica

Anuncio
Informática y Programación
Escuela de Ingenierías Industriales y Civiles
Curso 2010/2011
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Módulo 2.
Fundamentos de
Programación
1
•
•
•
•
•
Tema 1. Conceptos generales de algorítmica
Tema 2. Sentencias de control
Tema 3. Conjuntos dimensionados
Tema 4. Programación estructurada
Tema 5. Cadenas y ficheros
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
CONTENIDO
2
Para que un ordenador realice una tarea o trabajo un programador
previamente debe analizar y diseñar los pasos que permiten resolver dicha
tarea.
El programador aporta la inteligencia para describir en forma entendible por
el ordenador los pasos que permitan resolver el problema.
Esta secuencia de pasos o acciones que puedan ser ejecutadas por el
ordenador es lo que denominamos algoritmo.
Un algoritmo es un conjunto definido y ordenado de acciones, expresiones y
procedimientos que permiten hallar la solución de una tarea o proyecto en un
tiempo finito.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Conceptos básicos
3
La etimología del término algoritmo tiene su
origen en el matemático árabe Mohamed Ibn
Moussa Al Kow Rizmi, que durante el siglo IX
describe en sus obras el sistema de
numeración arábiga. Posteriormente su obra
es traducida al latín por el matemático
italiano Fibonacci, comenzando con las
palabras: “Algoritmi dicit”.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Conceptos básicos. Etimología
de Algoritmo
4
Fases en la resolución de problemas:
Análisis
Formalizar el entorno del problema
Definir lo que debe hacer el programa
Estudio de posibilidades y casos
Determinar los actores que intervienen
Diseño
Definir los elementos que intervienen
Identificación de los datos de entrada y salida
Identificación de recursos a utilizar
Definición de las acciones para resolver el problema.
Se utilizan técnicas de diseño descendente (top-down) Programación Modular y
estructurada
Implementación
Transformar los elementos y acciones en una secuencia ordenada de
instrucciones y sentencias que definen el algoritmo.
A las que siguen las fases de Compilación y Ejecución, Depuración y Mantenimiento
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Conceptos básicos. Fases
5
Lenguaje algorítmico o pseudocódigo
Lenguaje que permite expresar el algoritmo
Próximo al lenguaje natural
Permite describir la resolución del problema sin ambigüedades
Es universal e independiente del ordenador.
El lenguaje informático
Próximo a la máquina, es aquel por medio del cual un algoritmo se codifica
a un programa comprensible por el ordenador. C, PHP, JAVA, ADA,...
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Conceptos básicos. Lenguajes
6
Vamos a definir la estructura, la gramática y la sintaxis de las sentencias del
lenguaje algorítmico o pseudocódigo, para poder describir de forma precisa la
resolución de un problema.
Vamos a utilizar un ejemplo cotidiano, y nos planteamos:
Realizar un algoritmo para hacer una ensalada mixta.
1)
2)
3)
4)
5)
6)
7)
8)
9)
Ingredientes: 1 lechuga, 2 tomates, 2 cebollas.
Ingredientes: 1 lata de atún, aceite, vinagre, sal.
Recursos: ensaladera, cuchillo, plato.
Lavar tomates, lechuga, pelar cebolla.
Cortar tomates, lechuga, cebolla.
Mezclar tomate, cebolla y lechuga en la ensaladera.
Poner el atún sobre la ensalada.
Aliñar con el aceite, vinagre y sal.
Servir plato con la ensalada.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Conceptos básicos.
7
Entorno del algoritmo
Conjunto de recursos necesarios para la realizar la tarea, en el ejemplo son los ingredientes y
los utensilios de cocina,... etc.).
Acción
Suceso de duración finita que, a partir de un estado particular inicial del entorno, tiene como
consecuencia un nuevo estado bien definido. Cada línea del algoritmo.
Repertorio de acciones
Conjunto de instrucciones u operaciones que puede llevar a cabo el hardware del ordenador.
•
Acciones de lectura o escritura.
•
Operaciones aritméticas (suma, resta, multiplicación, división)
•
Operaciones lógicas (and, or, negación).
•
Decisiones basadas en comparaciones condicionales.
•
Acciones repetitivas.
Procesador
Entidad capaz de ejecutar las instrucciones de forma precisa para realizar la tarea. (Ejemplo anterior, la
persona que prepara la ensalada)
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Conceptos básicos.
8
Cabecera
Nombre del algoritmo.
Declaración de constantes y variables
Se definen los datos y variables a utilizar.
Cuerpo del algoritmo
Se encuentran las sentencias que indican los pasos a realizar por el algoritmo.
Desde él, se controla las entradas a los procedimientos y funciones principales
(aunque estos pueden llamar a otros procedimientos y funciones secundarias).
Cierre
Se indica el fin del algoritmo.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Estructura básica de un algoritmo
9
• Identificar los datos.
• Identificar las acciones a realizar.
Ejemplo de algoritmo para hacer una ensalada.
Fase de identificación de parámetros o datos
1 ensaladera , 1 cuchillo, 1 plato
1 lechuga , 2 tomates , 2 cebollas
1 lata de atún , aceite , vinagre, sal
Fase de identificación de acciones
Lavar tomates , lechuga, pelar cebolla
Cortar tomates, lechuga, cebolla
Mezclar tomate , lechuga , cebolla en ensaladera
Poner el atún sobre la ensalada
Rociar con aceite, vinagre y sal
Servir plato con la ensalada
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Fases de diseño
10
Ejemplo de algoritmo para hacer una ensalada.
Cabecera
Algoritmo Ensalada
Declaración de
variables
1 ensaladera , 1 cuchillo, 1 plato
1 lechuga , 2 tomates , 2 cebollas
1 lata de atún , aceite , vinagre, sal
Cuerpo
Lavar tomates , lechuga, pelar cebolla
Cortar tomates, lechuga, cebolla
Mezclar tomate , lechuga , cebolla en ensaladera
Poner el atún sobre la ensalada
Rociar con aceite, vinagre y sal
Servir plato con la ensalada
Cierre
fin Algoritmo
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Estructura básica de un algoritmo
11
Ejemplo de algoritmo para calcular longitud de una circunferencia.
longitud = 2 π r
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Estructura básica de un algoritmo
12
• Identificar los datos.
• Identificar las acciones a realizar.
Ejemplo de algoritmo para calcular la longitud de una circunferencia.
Fase de identificación de parámetros o datos
(1) π es un parámetro constante y conocemos su valor.
(2) radio es un parámetro de entrada y necesitamos su valor.
(3) longitud es el parámetro de salida que contendrá el resultado.
Fase de identificación de acciones
(4) Leer radio.
(5) Realizar la operación: 2 π r
(6) Mostrar por pantalla el resultado obtenido.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Fases de diseño
13
Algoritmo para calcular la longitud de la circunferencia.
Cabecera
Algoritmo Circunferencia
Declaración de
variables
Entrada
datos
Cuerpo Calculo
Salida
datos
Cierre
constante real Pi=3.14159
variable real radio, longitud
Escribir(“Introduzca el radio de la circunferencia. “)
Leer(radio)
Longitud=2*Pi*radio
Escribir(“Su longitud es: “, longitud)
fin Algoritmo
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Estructura básica de un algoritmo
14
• Cabecera: define el punto de comienzo del algoritmo.
Algoritmo Nombre {descripción algoritmo}
• Declaración de constantes y variables:
variable entera a, b, c
variable real x1, x2, z
variable cadena nombre, apellidos
variable lógica m, n, p
En una misma línea del algoritmo se puede definir más de una variable o
constante siempre del mismo tipo y separando por comas.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Estructura básica de un algoritmo
15
• Cuerpo del algoritmo: Contiene las acciones o sentencias a realizar que
indican los pasos que el ordenador debe ejecutar.
Contenido del cuerpo de un algoritmo
/* Asignación */
X = expresión
/* Instrucciones de entrada salida */
...
/*sentencias de control */
...
/* Llamadas a procedimientos, funciones */
...
/* Muestra de resultados */
...
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Estructura básica de un algoritmo
16
• Finalización o cierre: El cierre define el punto de finalización del algoritmo y se
identifica con las palabras :
fin Algoritmo
• Comentarios: Se pueden incluir comentarios en un algoritmo con objeto de
aclarar su contenido.
En lenguaje algorítmico se emplean los caracteres // al inicio para indicar que
esa línea es un comentario
o la pareja de símbolos /* y */ para delimitar un comentario que abarca
varias líneas.
Algoritmo Título algoritmo /* Comentario */
. . . / / otro comentario
f i n Algoritmo
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Estructura básica de un algoritmo
17
1.
Realizar un algoritmo que lea un número y escriba el triple.
2.
Realizar un algoritmo que calcule la suma de dos números.
3.
Realizar un algoritmo que calcule la media de tres números.
4.
Realizar un algoritmo que devuelva el área de un triángulo.
5.
Realizar un algoritmo que devuelva el área de un círculo leyendo el radio de
teclado.
r
A = π ⋅r
2
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Ejercicios propuestos
18
Se caracterizan por:
Nombre: por el cual la referenciamos dentro del algoritmo
Dirección: donde se almacena.
Tipo: la clase de valores que puede almacenar, implica un tamaño de memoria
y conjunto de operaciones sobre los valores.
Valor: el contenido en un momento dado.
La principal diferencia entre variables y constantes es que las primeras pueden
variar su valor (contenido) a lo largo de la ejecución del programa, mientras que las
segundas permanecen siempre constantes.
Las constantes se suelen declarar después de la cabecera y antes de las variables.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Variables y constantes
19
El tipo de una variable (o constante) define el contenido de ésta, es decir, el
tipo de los elementos de su dominio y sus operaciones.
Algunos tipos básicos de datos son:
entero:
Su contenido es un número entero (-10, 6, 291)
real: Su contenido es un número real (1.5, -0.63, 54.4E-10)
carácter: Su contenido es un carácter alfanumérico (‘a’, …‘z’, ‘A’, …’Z’, ‘0’,
…’9’,’+’,’-’,’*’)
cadena: Su contenido es un conjunto de caracteres (‘Sara’,’Pedro’)
lógico:Su valor indica un hecho cierto o falso (Verdadero / Falso)
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Variables y constantes. Tipos básicos
20
Ejemplo de una variable almacenada en memoria.
Ejemplo de declaración de variables
variable entera a,b,c
// declaración de variables enteras
variable real x,y,z
// declaración de variables reales entera
variable carácter s, c // declaración de variables carácter
variable cadena w
// declaración de variable cadena
variable lógica f
// declaración de variable lógica
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Variables
21
Pueden considerarse como variables que no cambian su contenido durante la
ejecución del programa.
Ejemplo de declaración de constantes
constante entera base = 10
constante real pi = 3.141592
constante cadena nom = “Salgado”
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Constantes
22
Expresión
Es una aplicación de operadores a operandos para obtener un valor. Los operandos
básicos son las variables y constantes, si bien también pueden ser funciones.
Operaciones relacionadas con los tipos de variables
Cada tipo de variable limita un conjunto de operaciones con los datos.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Operadores
23
Acción que permite asignar un valor a una variable.
Utilizamos el caracter = como operador de asignación V = E
V nombre de la variable a asignar
= acción de asignación
E valor a asignar (constante, variable o expresión)
Homogeneidad en la asignación.
Ejemplos de asignación:
a= b
a=4
Intercambio del contenido de variables a y b
c = a, a = b, b = c
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Operador de asignación
24
Para formar expresiones aritméticas se utilizan constantes, variables y operadores
(+, -, *, /, div), teniendo en cuenta las prioridades de estos.
+ suma
- resta
* producto
/ división
div división entera
mod resto división entera
funciones matemáticas: raíz_cuadrada, cos, sen, …
Algunas expresiones aritméticas en operaciones de asignación
a=5
b = a + 15
/* Suma */
c = (b+4)*7 / a
/ *Di v i s i ó n */
d=raíz_cuadrada(c)
/* f u n c i ó n r a í z cuadrada */
r = 7 mod 5
/* Re s t o división entera */
s=7div5
/* Di v i s i ó n entera */
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Operadores matemáticos
25
Operan sobre datos de tipo lógico. Las expresiones lógicas una vez evaluadas solo
pueden tomar el valor verdadero o falso.
Y es el y booleano
O es el o booleano
NO es la negación
Algunas expresiones lógicas en operaciones de asignación
l=8<5
m = l Y (7 <= 12)
n = NO m
/* la comparación da un resultado lógico */
/* Negación */
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Operadores lógicos
26
Operadores sobre cadenas. Son operadores que permiten operar con cadenas de
caracteres.
alfanuméricos: convertir caracter a número (Carácter)
número de caracteres dentro de una cadena(“santiago")
unir cadenas (“santiago"+“candela”)
encontrar cadena S dentro de cadena R: pos(R,S)
extracción subristra: sub(R,P,T)
Asignación x = “Me llamo Modesto”
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Operadores sobre cadenas
27
Consisten en una expresión lógica que permite evaluar si una condición se verifica o
no.
Permiten comparar entre variables o en general entre expresiones utilizando los
operadores relacioneles.
> mayor que
< menor que
>= mayor o igual que
<= menor o igual que
<> distinto que
== igual que
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Predicados. Expresiones elementales
28
Sean las variables inicializadas como:
a1=13
a2=57
a3=890
Sean las variables inicializadas como:
Predicado
Resultado
a1 < a2
verdadero
a2 ≥ 58
falso
a3 > a2
verdadero
a2 == a3 falso
a2 == a3*a1
falso
a2 <> a3 verdadero
Predicado
Resultado
n1 < n2
verdadero
n3 ≥ n1
verdadero
n3 == n1
falso
n3 <> n1 verdadero
n2 < n3
falso
La comparación de dos cadenas se realiza
carácter a carácter.
n1 = “Daniel”
n2 = “Sunil”
n3 = “Luis”
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Predicados. Expresiones elementales
29
Permiten construir expresiones lógicas más complejas mediante la combinación de
predicados simples con ayuda de operadores lógicos o booleanos.
Sean las variables inicializadas como:
a1=1, a2=2, a3= 3
Predicado
a1 < a2 Y a1 < a3
a1 < a2 Y a1 > a3
a1 < a2 O a1 > a3
NO(a2 ≤ 58)
NO(a1 < a2 O a1 > a3)
NO(a2 <> a3)
Resultado
verdadero
falso
verdadero
falso
falso
falso
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Predicados. Expresiones compuestas
30
Permiten construir expresiones lógicas más complejas mediante la combinación de
predicados simples con ayuda de operadores lógicos o booleanos.
(a==1 O b==2) Y c>3
a==1 O (b==2 Y c>3)
Resultado
Resultado
(a == 1 O b == 2) Y c > 3
V
V
F
V
F
F
falso
a == 1 O (b == 2 Y c > 3)
V
V
F
V
F
V
verdadero
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Predicados. Expresiones compuestas
31
Se debe considerar que a, b y c son variables enteras:
¿Son los valores que contienen las variables a y b menores que 17?
a < 17 Y b < 17
¿Contienen a, b y c valores iguales?
a == b Y b == c
¿Entre los valores que contienen a, b, y c hay al menos dos que sean iguales?
a == b O b == c O a == c
¿Entre los valores que contienen a, b, y c hay a lo sumo dos valores idénticos?
(a == b Y b <> c) O (a == c Y b <> c) O (b == c Y a <> c)
¿El valor que contiene a es par y el que contiene b es impar?
(a mod 2 == 0) Y (b mod 2 == 1)
¿El valor que contiene a es impar y está comprendido entre b y c?
(a mod 2 == 1) Y ((a > b Y a < c) O (a > c Y a < b))
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Construcción de predicados
32
De mayor a menor jerarquía:
Tipo operación
Paréntesis
Operadores relacionales
Producto, división
Suma, resta
operadores lógicos
Símbolo
()
<;>;<=;>=;==;<>
*;/; div;mod
+; NO, Y, O
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Jerarquía de operadores
33
Mecanismo por el cual el usuario interactúa con el programa para introducir y
sacar o visualizar datos.
Escribir
Operación de salida que permite mostrar o escribir en un dispositivo de salida:
pantalla, impresora, fichero.
Escribir(<idDispositivo>, <lista_variables>) //Notación de la escritura
Escribir("Cadena de texto") // Mostrar por pantalla un texto
Escribir(a,b,c) // Mostrar por pantalla el contenido de las variables a , b , c
Escribir( id Fichero,a ,b ,c) /* Escritura en fichero del contenido de las
variables a , b , c */
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Entrada y salida de datos
34
Leer
Operación que permite la entrada externa de datos hacia el ordenador. Dispositivo
de entrada: teclado, fichero.
Leer (<idDispositivo>, lista_variables) // Notación de la lectura
Leer (a, b, c) /*Lectura de teclado, los valores se almacenan en las variables
a, b, c */
Leer (idFichero, a, b, c) /*Lectura desde fichero */
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Entrada y salida de datos
35
Ejemplo: Escribir en la pantalla del ordenador ¡Hola mundo!
Algoritmo Hola mundo
Escribir(“¡Hola mundo!”)
fin Algoritmo
Ejemplo: Operación de entrada salida
Algoritmo Entrada Salida
variable entera a
Escribir(“Introduzca un valor entero”)
Leer(a)
fin Algoritmo
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Entrada y salida de datos
36
La traza de un Algoritmo se puede definir como la ejecución manual de forma
secuencial de las sentencias que lo componen.
Simula en papel la ejecución de un programa en un ordenador.
Visualiza la evolución temporal de las variables de un algoritmo.
Permite comprobar que el resultado de un algoritmo se corresponde con la salida
esperada.
No muestra el funcionamiento correcto de un algoritmo, sino la ausencia de error
para cada situación concreta.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Traza de un algoritmo
37
Definimos un entorno compuesto por una Tabla de análisis de las variables que
analiza las variables, y la Tabla de la traza que contiene propiamente la traza.
Tabla de análisis de las variables, contiene la información:
Variable: Nombre de la variable.
Función: Función de esta variable dentro del algoritmo.
Valor inicial: Valor de la variable al comienzo del algoritmo.
Valor final: Valor final de la variable cuando termina el algoritmo.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Traza de un algoritmo. Entorno
38
Tabla de la traza, contiene la información:
Algoritmo: Visualiza las acciones del algoritmo e indica mediante un número la
próxima acción a realizar.
Bloque de datos: Muestran la evolución del contenido de todas las variables y
constantes a medida que se ejecutan las acciones del algoritmo.
Terminal: En este bloque se simula el resultado de la operación de E/S,
mostrando los resultados por pantalla o esperando a que el usuario introduzca
unos valores por teclado.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Traza de un algoritmo. Entorno
39
Traza del algoritmo: cálculo de la longitud de una circunferencia.
Algoritmo Circunferencia
variable real Pi=3.14159265
variable real r, l
Escribir(“Introduzca el radio de la circunferencia: ”)
Leer(r)
l = 2*Pi*r
Escribir(“Su longitud es: “, l)
fin Algoritmo
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Traza de un algoritmo. Ejemplo
40
Tabla de análisis de las variables
Variable
Función
Valor inicial
Valor final
3,14159265
3,14159265
Valor
introducido
por el usuario
Pi
Constante que almacena el valor del
número Pi
r
Varaible que contiene el valor del
radio de la circunferencia
Valor
indeterminado
l
Variable que almacena el cálculo de
la longitud
de la circunferencia.
Valor
longitud = 2pir
indeterminado
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Traza del algoritmo Circunferencia
41
Tabla de la traza
Inicialmente
1. Escribir (“Introduzca
el radio de
la circunferencia:”)
2. Leer(r) (Suponemos
que el usuario
introduce un 2)
3. l=2*Pi*
4. Escribir(“Su longitud
es:”, l)
fin de ejecución
Terminal
Bloque de datos
Algoritmo
Pi
r
l
3.14...
-
-
-
3.14...
-
-
Introduzca el radio de
la circunferencia:
3.14...
2
-
El usuario introduce el
radio por el teclado
3.14...
2
12.56...
3.14...
2
3.14...
2
Su longitud es:
12.56...
12.5663
12.56...
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Traza del algoritmo Circunferencia
42
1.
Realizar un algoritmo para calcular el volumen de un cilindro leyendo el radio
y altura de teclado.
r
V = π ⋅r2 ⋅h
h
2.
Realizar un algoritmo para calcular la siguiente función:
4 x 2 − 3xy + 2 y 2
5( x 2 + y 2 )
3.
Realizar un algoritmo que calcule unas previsiones de ventas para una
empresa X, de acuerdo a un incremento del 25% en las ventas del año
anterior.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Ejercicios propuestos
43
• Fundamentos de Informática y Programación para Ingeniería. Ejercicios
Resueltos para C y Matlab. Modesto Castrillón et al, Paraninfo, 2011.
• Introducción a la informática, A. Prieto Espinosa, A. Lloris Ruiz, J.C. Torres
Cantero, McGraw-Hill, Madrid, 1989.
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Bibliografía
44
Descargar