L1. Problemas de tratamiento de información, algoritmos y programas

Anuncio
Programación 1
Tema I. Conceptos y elementos básicos de Programación
Lección 1. Problemas de tratamiento de información, algoritmos y programas
1
Problemas, algoritmos y programas
• Problemas de tratamiento de información
• Herramienta para resolverlos: computadores que
son máquinas programables muy rápidas
• Es preciso conocer algún método para resolver cada
problema y ser capaz de expresarlo. Sin un método
adecuado el computador no sirve de nada
• Algoritmo: descripción de un método o
procedimiento efectivo para la resolución de un
problema de tratamiento de información (por
ejemplo, en español o en inglés)
• Programa: algoritmo escrito utilizando un lenguaje
de programación (en este curso en C++)
2
El código del primer programa C++
#include <iostream>
Especificación
/* * Pre: ‐‐‐
* Post: Escribe por pantalla el mensaje * "Bienvenidos a la Universidad" */
int main() {
std::cout << "Bienvenidos a la Universidad" << std::endl; // 1ª instrucción
return 0; // 2ª instrucción
}
3
El código del primer programa C++ [2ª versión equivalente]
#include <iostream>
using namespace std;
/* * Pre: ‐‐‐
* Post: Escribe por pantalla el mensaje:
* "Bienvenidos a la Universidad" */
int main() {
cout << "Bienvenidos a la Universidad" << endl; return 0;
}
4
¿Cómo poner a punto un programa C++?
1. Editar el código fuente del programa en el fichero
bienvenida.cc ( o bienvenida.cpp)
2. Compilar
el
código
fuente
del
programa
[bienvenida.cc]. Resultado: el fichero objeto con código
binario bienvenida.o
3. Enlace con otros módulos y construcción del programa
ejecutable o programa de aplicación saludo
4. Ejecutar el programa de aplicación saludo
hendrix01:/ g++ ‐c bienvenida.cc [2]
hendrix01:/ g++ ‐o saludo bienvenida.o [3] hendrix01:/ ./saludo [4]
Bienvenidos a la Universidad
hendrix01:/ ./saludo [4]
Bienvenidos a la Universidad 5
Se puede editar, compilar y ejecutar desde la consola
del operador de un IDE (entorno integrado de
dasarrollo) como, por ejemplo, CodeLite:
Bienvenidos a la Universidad
 Nota: En la primera práctica aprenderemos a hacerlo haciendo uso del IDE Codelite
6
Un programa C++ suele constar de varias funciones
#include <iostream>
#include <iomanip>
Especificación
using namespace std;
/*
* Pre: r >= 0.0
* Post: Escribe por pantalla, en una misma línea, el valor del radio [r]
* y de la longitud de una circunferencia de radio [r]
*/
void circunferencia (double r) {
const double PI = 3.1416;
cout << fixed << setprecision(2) << setw(7) << r << setprecision(3) << setw(16) << 2.0*PI*r << endl;
}
. . .
7
Especificación
. . .
/*
* Pre: ‐‐‐
* Post: Escribe por pantalla el radio y la longitud de tres * circunferencias
*/
int main() {
/*
* Escribe por pantalla el radio y la longitud de tres circunferencias
*/
cout << setw(7) << "Radio" << setw(20) << "Circunferencia" << endl;
cout << setw(7) << "=====" << setw(20) << "==============" << endl;
circunferencia(1.234); circunferencia(5.0112);
circunferencia(11.5178);
/* El programa termina normalmente devolviendo un valor 0 */
return 0;
}
8
Consola del operador al ejecutar el programa circunferencia:
hendrix01:/ ./circunferencia
Radio Circunferencia
===== ==============
1.23 7.753
5.01 31.486
11.52 72.369
hendrix01:/ …
9
Un programa interactivo (dialoga con el operador)
#include <iostream>
#include <iomanip>
Especificación
using namespace std;
/*
* Pre: r >= 0.0 * Post: Escribe por pantalla en una línea el valor del radio * y del área de un círculo de radio [r]
*/
void circulo (double r) {
const double PI = 3.1416;
cout << "El area de un circulo de radio " << fixed << setprecision(2) << r << " es igual a " << PI*r*r << endl;
}
. . .
10
. . .
Especificación
/*
* Pre: ‐‐‐
* Post: Pregunta al operador por el [Radio del circulo: ] y le informa en
* la línea siguiente del valor del radio y del área del círculo
*/
int main() {
/*
* Pregunta al operador y almacena su respuesta en r
*/
double r;
cout << "Radio del circulo: " << flush;
cin >> r;
/*
* Presenta por pantalla los datos de un círculo de radio r
*/
circulo(r);
// Concluye normalmente y devuelve un 0 return 0;
}
11
Consola del operador al ejecutar el programa circulo:
hendrix01:/ ./circulo
Radio del circulo: 23.0754
El área de un círculo de radio 23.07 es igual a 1672.70
hendrix01:/ ./circulo
Radio del circulo: 2.6
El área de un círculo de radio 2.60 es igual a 21.40
hendrix01:/ …
12
Especificación de algoritmos
•
En C++ los algoritmos se describen mediante funciones. Elementos de su especificación:
– Precondición: Condiciones que han de satisfacer los datos de entrada (parámetros de la función y, en su caso, datos globales)
– Postcondición: Condiciones que han de satisfacer los resultados de la función (valor devuelto, valores finales de ciertos parámetros modificables y, en su caso, valores finales de datos globales)
/*
* Pre: ‐‐‐
* Post: Devuelve el valor del polinomio a*x^2 + b*x + c
*/
double calcular (double a, double b, double c, double x) {
return ((a*x + b)*x) + c;
}
13
/*
* Pre: ‐‐‐
* Post: Escribe por pantalla una línea con la fecha definida por dia,
* mes y anyo con el siguiente formato: dia/mes/anyo. Ej.:
* 12/1/2014
*/ void escribirFecha (int dia, int mes, int anyo) {
cout << dia << "/" << mes << "/" << anyo << endl;
}
/*
* Pre: ‐‐‐
* Post: Presenta por pantalla una línea con el texto
* "En esta asignatura se aprende a programar“
*/
void anunciar () {
cout << "En esta asignatura se aprende a programar" << endl;
}
14
/*
* Pre: n >= 0 * Post: Devuelve el valor de n! */ int factorial (int n) {
/* * Se omite, por el momento, el código de esta función
*/ . . . }
15
Propiedades de un algoritmo
•
•
Imprescindibles:
– Corrección: resuelve satisfactoriamente el problema; es decir, satisface sus especificaciones
– Legibilidad: para el propio programador y para otras personas que deban leerlo o mantenerlo
Deseables:
– Eficiencia: economía de recursos (especialmente tiempo de ejecución y memoria empleada)
– Reusabilidad: que pueda ser utilizado en otros proyectos
– Generalidad: amplia su reusabilidad y ahorra costos
– Independencia de la tecnología: independencia del lenguaje utilizado, de las bibliotecas disponibles, del sistema operativo y del computador en el que se ejecuta
16
17
Descargar