Anda di halaman 1dari 5

Problemas, algoritmos y programas

Programacin 1
Tema I. Conceptos y elementos bsicos de Programacin Problemas de tratamiento de informacin, algoritmos y programas

Problemas de tratamiento de informacin Herramienta para resolverlos: computadores (mquinas programables muy rpidas) Es preciso conocer un mtodo para resolver un problema y ser capaces de expresarlo Algoritmo: descripcin de un mtodo o procedimiento efectivo para la resolucin de un problema de tratamiento de informacin Programa: algoritmo descrito utilizando un lenguaje de programacin (en este curso Java)
1 Programacin I - Tema I Leccin 1 2

Programacin I - Tema I Leccin 1

Estructura de un programa Java


/** * Al construir un programa Java alrededor de esta clase se ejecuta * el mtodo [main] que escribe un mensaje de bienvenida a la * Universidad de Zaragoza */ public class Bienvenida { /** * Mtodo principal asociado a la clase */ public static void main (String[] argumentos) { /* * Post: Escribe por pantalla el mensaje "Bienvenidos a la * Universidad de Zaragoza" */ System.out.printf("Bienvenidos a la Universidad de Zaragoza\n"); }

Cmo ejecutar el programa anterior? 1. Compilar el cdigo fuente de la clase, almacenado en el fichero con Bienvenida.java. Resultado: el fichero Bienvenida.class (cdigo JVM) 2. Interpretar el cdigo JVM (Mquina Virtual Java) almacenado en el fichero Bienvenida.class
hendrix01:/ javac Bienvenida.java hendrix01:/ java Bienvenida Bienvenidos a la Universidad de Zaragoza hendrix01:/ ... hendrix01:/ java Bienvenida Bienvenidos a la Universidad de Zaragoza
3 Programacin I - Tema I Leccin 1 4

}
Programacin I - Tema I Leccin 1

Un programa Java puede constar de varias clases


Clase Alumno Atributos [de sus objetos]: suNip y suNombre Mtodo constructor Alumno(...) y mtodos nip() y nombre() Clase Profesor Atributos [de sus objetos]: suNombre y suDepartamento Mtodo constructor Profesor(...) y mtodos nombre() y departamento() Clase Asignatura Atributos [de sus objetos]: suCodigo, suNombre y suCuatrimestre Mtodo constructor Asignatura(...) y mtodos cdigo(), nombre() y cuatrimestre() Clase Saludo Atributos: ninguno Mtodo de clase (static) main(...)

package cap1; /** * Cada uno de los objetos de esta clase gestiona la informacin asociada a un * alumno de los estudios de grado en Ingeniera Informtica. La clase facilita * objetos mtodos para operar con sus datos. */ public class Alumno { /* * Atributos de la clase */ private int suNip; // nmero de identificacin personal (NIP) del alumno private String suNombre; // nombre y apellidos del alumno /** * Post: Crea un objeto Alumno, asigna los valores de los parmetros [unNip] y * [unNombre] a los atributos [suNip] y [suNombre], respectivamente, del objeto * creado y devuelve el valor de la referencia al objeto. */ public Alumno (int unNip, String unNombre) { suNip = unNip; suNombre = unNombre; } . . .
Programacin I - Tema I Leccin 1 6

Programacin I - Tema I Leccin 1

public class Alumno { /* * Atributos de la clase */ private int suNip; private String suNombre; . . .

package cap1; /** * Cada uno de los objetos de esta clase gestiona la informacin asociada a un * profesor de los estudios de grado en Ingeniera Informtica. La clase facilita * mtodos para operar con sus objetos. */ public class Profesor { /* * Atributos de la clase */ private String suNombre; // nombre y apellidos del profesor private String suDepartamento; // nombre de su departamento /** * Post: Mtodo constructor que asigna los valores de los parmetros [unNombre] y * [unDepartamento] a los atributos [suNombre] y [suDepartamento]. */ public Profesor (String unNombre, String unDepartamento) { suNombre = unNombre; suDepartamento = unDepartamento; } .
Programacin I - Tema I Leccin 1 7

// nmero de identificacin personal (NIP) del alumno // nombre y apellidos del alumno

/** * Post: Devuelve el valor de [suNip], el NIP del alumno */ public int nip () { return suNip; } /** * Post: Devuelve el valor de [suNombre], con nombre y apellidos del alumno */ public String nombre () { return suNombre; } }

.
Programacin I - Tema I Leccin 1 8

public class Profesor { /* * Atributos de la clase */ private String suNombre; private String suDepartamento; . . .

package cap1; /** * Los objetos de esta clase gestionan * los estudios de grado en Ingeniera */ public class Asignatura { /* * Atributos de la clase */ private int suCodigo; // private String suNombre; // private int suCuatrimestre; //

// nombre y apellidos del profesor // nombre de su departamento

la informacin asociada a una asignatura de Informtica.

/** * Post: Devuelve el valor de [suNombre], el nombre y apellidos del profesor. */ public String nombre () { return suNombre; } /** * Post: Devuelve el valor de [suDepartamento], el nombre del departamento. */ public String departamento () { return suDepartamento; } }

cdigo de la asignatura denominacin de la asignatura cuatrimestre de imparticin

/** * Post: Mtodo constructor que asigna los valores de los parmetros [unCodigo], * [unNombre] y [unCuatrimestre] a los atributos [suCodigo], [suNombre] y * [suCuatrimestre], respectivamente. */ public Asignatura (int unCodigo, String unNombre, int unCuatrimestre) { suCodigo = unCodigo; suNombre = unNombre; suCuatrimestre = unCuatrimestre; } . . .
9 Programacin I - Tema I Leccin 1 10

Programacin I - Tema I Leccin 1

public class Asignatura { private int suCodigo; private String suNombre; private int suCuatrimestre; . . . // cdigo de la asignatura // denominacin de la asignatura // cuatrimestre de imparticin

package cap1; /** * Facilita el mtodo [main] para escribir un mensaje dirigido a dos alumnos en el * que se les da la bienvenida a la Universidad */ public class Saludo { /** * Post: Escribe por pantalla un mensaje dando la bienvenida a la Universidad de * Zaragoza a dos alumnos determinados. */ public static void main (String[] argumentos) { String universidad = new String("Universidad de Zaragoza"); // Crea dos objetos [Alumno] que representan dos alumnos determinados Alumno alumno1 = new Alumno(604566, "Jos Gutirrez Andrs"), alumno2 = new Alumno(628699, "Ana Isabel Garca Snchez"); // Escribe un mensaje de bienvenida a los dos alumnos System.out.printf("Los alumnos %s y %s son bienvenidos\na la %s\n", alumno1.nombre(), alumno2.nombre(), universidad); } }
Programacin I - Tema I Leccin 1 11 Programacin I - Tema I Leccin 1 12

/** * Post: Devuelve el valor de [suCodigo], el cdigo de la asignatura */ public int codigo () { return suCodigo; } /** * Post: Devuelve el valor de [suNombre], el nombre de la asignatura */ public String nombre () { return suNombre; } /** * Post: Devuelve [suCuatrimestre], el cuatrimestre de la asignatura */ public int cuatrimestre () { return suCuatrimestre; } }

Cmo ejecutar el programa anterior?


hendrix02:/ javac Saludo.java hendrix02:/ java Saludo
Los alumnos Jos Gutirrez Andrs y Ana Isabel Garca Snchez son bienvenidos a la Universidad de Zaragoza

Especificacin de algoritmos
En Java los algoritmos se describen mediante mtodos. Elementos de su especificacin: Precondicin: Condiciones que han de satisfacer los datos de entrada (parmetros del mtodo y atributos del objeto o clase) Postcondicin: Condiciones que han de satisfacer los resultados del mtodo (valor devuelto, valores finales de los atributos del objeto o clase, otros resultados)
/** * Post: Devuelve el valor del polinomio a*x^2 + b*x + c */ public double calcular (double a, double b, double c, double x) { return ((a*x+b)*x)+c; }

hendrix02:/

Programacin I - Tema I Leccin 1

13

Programacin I - Tema I Leccin 1

14

/** * Post: Presenta por pantalla [mensaje] y concluye la lnea */ public void escribir (String mensaje) { System.out.printf("%s\n", mensaje); }

/** * Pre: n>=0 * Post: factorial(n) = n! */ public int factorial (int n) { /* Se omite por el momento el cdigo del mtodo }

*/

/** * Post: Presenta por pantalla una lnea con el texto * "Trabajando la asignatura se aprende a programar" */ public void anunciar () { System.out.printf("Trabajando la asignatura se aprende a " + "programar\n"); }

Programacin I - Tema I Leccin 1

15

Programacin I - Tema I Leccin 1

16

Propiedades de un algoritmo
Imprescindibles: Correccin: resuelve satisfactoriamente el problema; es decir, satisface especificaciones Legibilidad: para el propio programador y para otras personas Deseables: Eficiencia: economa de recursos (especialmente tiempo de ejecucin) Reusabilidad: que pueda ser utilizado en otros proyectos Generalidad: amplia su reusabilidad y ahorra costos Independencia de la tecnologa: independencia del lenguaje utilizado, del sistema operativo y del computador en el que se ejecuta

Programacin I - Tema I Leccin 1

17

Programacin I - Tema I Leccin 1

18

Anda mungkin juga menyukai