1. FACULTAD DE INGENIERIA
Escuela Académica Profesional: Ingeniería de Sistemas
CURSO FUNDAMENTOS DE PROGRAMACIÓN
Conceptos Fundamentales de Programación
y
Representación de Algoritmos
Ing. Percy Bravo Baldeón
9. Fundamentos de Programación
Etapas de la fase de análisis de problemas
• Precisar los resultados
esperados
– El estudiante debe
preguntarse:
• ¿Qué información me
solicitan?
• ¿Qué formato debe tener esta
información?
• Determinar las restricciones
– El estudiante debe preguntarse:
• ¿Qué condiciones me plantea el problema?
• ¿Qué está prohibido hacer y/o utilizar?
• ¿Qué está permitido hacer y/o utilizar?
• ¿Cuáles datos puedo considerar fijos (constantes) para
simplificar el problema?
• ¿Cuáles datos son variables?
• ¿Cuáles datos debo calcular?
• ¿Tengo los conocimientos para solucionar el problema
planteado?
• Establecer procesos
(operaciones)
– El estudiante debe preguntarse:
• ¿Qué procesos necesito?
• ¿Qué fórmulas debo emplear?
• ¿Cómo afectan las
condiciones a los procesos?
• ¿Qué debo hacer?
• ¿Cuál es el orden de lo que
debo hacer?
• Identificar datos disponibles
– El estudiante debe preguntarse:
• ¿Qué información es importante?
• ¿Qué información no es relevante?
• ¿Cuáles son los datos de entrada?
(conocidos)
• ¿Cuál es la incógnita?
• ¿Qué información me falta para
resolver el problema? (datos
desconocidos)
• ¿Puedo agrupar los datos en
categorías?
10. Fundamentos de Programación
Conceptos básicos para
diseñar algoritmos:
• ¿Qué es un algoritmo?
• Formas comunes de representarlos
(seudocódigo y diagrama de flujo)
• Conceptos básicos de programación
(variable, constante, identificador, pa
labra
reservada, contador, acumulador, tip
os de datos, operadores y
expresiones).
11. Fundamentos de Programación
Diseñar y traducir algoritmos:
• Fundamentos de programación en el área
de procedimientos.
• Establecer interactividad con el “usuario”
del procedimiento
• Abordar las tres estructuras de control
básicas:
• secuencial,
• iterativa (repetición) y
• condicional (decisión, selección).
12. Fundamentos de Programación
Depurar procedimientos:
• Dificultad para elaborar
procedimientos perfectos en los
primeros intentos.
• La dificultad aumenta a medida
que los problemas se vuelven más
complejos.
• Los resultados se deben probar y
validar (revisión).
• El proceso promueve valores como
responsabilidad, fortaleza, laborios
idad, paciencia y perseverancia.
17. Fundamentos de Programación
Supongamos que un profesor quiere crear un programa
para gestionar las notas de sus alumnos. Quiere que
dicho programa le permita realizar tareas tales como
asignar notas, cambiar notas, ver las notas según distintas
calificaciones, etc. A continuación tienes un esquema que
representa una de las posibles divisiones del problema en
módulos.
Ejemplo:
23. Fundamentos de Programación
HERRAMIENTAS PARA EL DISEÑO DE ALGORITMOS
Tanto en la fase de análisis del problema como durante
el diseño del algoritmo, se plantea la necesidad de
representar claramente el flujo de operaciones que se
han de realizar para su resolución y el orden en que
estas operaciones deber ser ejecutadas.
Una vez que el algoritmo esté diseñado se debe
proceder a representarlo mediante algún método de
programación, siendo los más usuales: diagramas de
flujo, pseudocódigo o diagramas N-S.
24. Fundamentos de Programación
Diagramas de Flujo:
Cada operación se
representa mediante
un símbolo
normalizado el
Instituto
Norteamericano de
Normalización (ANSI -
American National
Standars Institute). Las
líneas de flujo indican
el orden de ejecución.
Los diagramas de flujo suelen ser usados solo para representar
algoritmos pequeños, ya que abarcan mucho espacio.
27. Fundamentos de Programación
Describen un algoritmo de forma similar a un lenguaje de
programación pero sin su rigidez, de forma más parecida al
lenguaje natural. Presentan la ventaja de ser más compactos
que los diagramas de flujo, más fáciles de escribir para las
instrucciones complejas y más fáciles de transferir a un
lenguaje de programación. El pseudocódigo no está regido
por ningún estándar.
•Algunas palabras usadas son LEER/IMPRIMIR para
representar las acciones de lectura de datos y salida de datos.
•Calcular una altura en pulgadas (1 pulgada=2.54 cm) y pies (1 pie=12 pulgadas), a partir de la altura en
centímetros, que se introduce por el teclado.
•Inicio
•1- IMPRIMIR 'Introduce la altura en centímetros: '
•2- LEER: altura
•3- CALCULAR pulgadas=altura* 2:54
•4- CALCULAR pies=pulgadas * 12
•5- IMPRIMIR 'La altura en pulgadas es: ', pulgadas
•6- IMPRIMIR 'La altura en pies es : ', pies
•Fin
Pseudocódigos:
30. Fundamentos de Programación
La definición de la clase
• En Java, todo son clases
• Así que cada fichero define una clase
– public class MiClase
• La clase tiene atributos y métodos
• El método main es especial
– public static void main(String[] args) {...}
– Es el punto de arranque de una clase
31. Fundamentos de Programación
Variables
• Almacenan el estado de los objetos
• Pueden definirse en cualquier parte del
código, antes de su uso
• Deben empezar con letra, guión bajo (_) o
dólar ($)
• Sensible a mayúsculas/minúsculas
33. Fundamentos de Programación
Variables
• Las variables tienen un tipo que define el
rango de valores y las operaciones que
pueden hacerse
– Java es fuertemente tipado
• Tipos primitivos
• Tipos referencia
34. Fundamentos de Programación
Tipos de datos primitivos
• Enteros (se inicializan a 0)
– Byte: un byte con signo ((byte)12)
– Short: dos bytes con signo ((short)1231)
– Int: cuatros bytes con signo (1238921)
– Long: ocho bytes con signo (728478283L)
• Reales (se inicializan a 0.0)
– Float: punto flotante 32 bits (1.2342F)
– Double: punto flotante 64 bits (123.131)
35. Fundamentos de Programación
Tipos de datos primitivos
• Booleanos (se inicializa a false)
– true / false
• Carácter (se inicializa al carácter nulo)
– 'S', 'a'
• El tamaño de datos está definido y es
independiente de la plataforma
36. Fundamentos de Programación
Tipos de datos referencia
• Objetos
– Instancias de clases
• Arrays
– Colección de elementos del mismo tipo,
sean básicos o complejos
• Se inicializan a null
38. Fundamentos de Programación
Constantes
• Variables que no pueden cambiar de
valor una vez establecido
• Modificador final
final int a;
a = 12;
final double b = 456.4546456;
39. Fundamentos de Programación
Ámbito
• Ámbito: parte de programa en el que
una variable está definida
• Variable miembro (de una clase)
• Parámetro (de un método)
• Variable local (de un método)
• Excepciones
41. Variables
public class Basic {
public static void main(String[] args) {
int sum = 0;
for (int current = 1; current <= 10; current++) {
sum += current;
}
System.out.println("Sum = " + sum);
}
}
¿Cúal es? ¿Qué tipo tienen? Alcance
42. Variables
public class Basic {
public static void main(String[] args) {
int sum = 0;
for (int current = 1; current <= 10; current++) {
sum += current;
}
System.out.println("Sum = " + sum);
}
}
¿Cúal es? ¿Qué tipo tienen? Alcance
43. Variables
public class Basic {
public static void main(String[] args) {
int sum = 0;
for (int current = 1; current <= 10; current++) {
sum += current;
}
System.out.println("Sum = " + sum);
}
}
¿Cúal es? ¿Qué tipo tienen? Alcance
46. Fundamentos de Programación
Operadores aritméticos
• Operaciones con enteros y reales
• El resultado depende de los operadores
– Algún double -> double
– Algún float -> float
– Algún long -> long
– Si no, int
47. Fundamentos de Programación
Operadores aritméticos
• Unarios
– Número negativo (-2, -123)
– Convierte byte y short en int (+2, +65)
• Suma / resta unaria
– ++op1
– op1++
– --op1
– op1--
48. Fundamentos de Programación
Operadores de comparación
• Devuelven booleanos
– Igualdad: op1 == op2
– Desigualdad: op1 != op2
– Mayor que: op1 > op2
– Mayor o igual que: op1 >= op2
– Menor que: op1 < op2
– Menor o igual que: op1 <= op2
49. Fundamentos de Programación
Operadores de comparación
• Mucho cuidado con la igualdad
• Cuando se comparan variables
referencia, se compara si ambos
objetos son el mismo, no si son iguales
(tienen el mismo estado)
• Error típico
51. Fundamentos de Programación
Operadores booleanos
• Java sólo evalúa si es necesario
• Si el primer operando de un AND es
false, no evalúa el segundo y devuelve
false
– Lo mismo con OR
• Para obligar a evaluar el segundo
operando, usar & (AND) y | (OR)
52. Fundamentos de Programación
Operadores de
desplazamiento
• Opera sobre enteros y devuelve enteros
– Desplazar a izquierda: op1 << num
– Desplazar a derecha
op1 >> num (extiende signo)
op1 >>> num (no extiende signo)
54. Fundamentos de Programación
Operadores de asignación
• Asigna el valor de una variable a otra
– op1 = op2
• Deben ser compatibles en tipo
– Enteros, reales, carácter
– Misma clase o subclases
• Al asignar variables referencia, no se
hace una copia del objeto
55. Fundamentos de Programación
Operadores de asignación
• Asignación con operación
op1 = op1 operador op2 (a = a + b)
op1 operador= op2 (a += b)
• +, -, *, /, %, &, |, ^, <<, >>, >>>
56. Fundamentos de Programación
Otros operadores
• ?: (if-then-else)
if (a == b) then c else d;
a == b ? c : d
• [] - indexación de arrays
• . (punto): acceso a métodos y variables
• (): para especificar los argumentos a
métodos
57. Fundamentos de Programación
Expresiones
• Una expresión es un conjunto de variables,
operadores e invocaciones a métodos que se
evalúan como un único resultado
– a
– 1 + 2
– 12 + a.getNumHoras() * 2
58. Fundamentos de Programación
Expresiones
• Las expresiones, además de un valor,
tienen un tipo asociado, que depende
de las subexpresiones dentro de la
expresión
• Una expresión se puede conjuntar con
otras para formar una expresión mayor
mediante el uso de operadores
60. Fundamentos de Programación
Orden de evaluación
• Las expresiones complejas pueden
evaluarse de diferentes formas
a + b – c * 4
¿((a + b) – c) * 4?
¿((a + b) – (c * 4))?
61. Fundamentos de Programación
Orden de evaluación
• Se pueden emplear paréntesis para
especificar el orden de evaluación
((a + b) – c) * 4
• Existen las reglas de precedencia
* y / más precedencia que + y -
• Pero es mejor despejar la ambigüedad
mediante el uso de paréntesis
a + b – (c * 4)
62. Fundamentos de Programación
Asociatividad
• En operadores binarios, ¿cómo se leen
los operadores?
• Asociatividad a la izquierda: suma
1 + 2 + 3 + 4 => (((1 + 2) + 3) + 4)
• Asociatividad a la derecha
a = b = c => (a = (b = (c)))
64. Fundamentos de Programación
Objetivos de la tecnología Java
• Proveer un lenguaje estructurado
– Que facilite la programación y evite errores
– Orientado a Objetos
• Provee un ambiente para
– Incrementar la velocidad de desarrollo de
aplicaciones
– Portabilidad del código
65. Fundamentos de Programación
¿ Que puedo programar con Java ?
• Aplicaciones independientes
(Como cualquier otro lenguaje de propósito general)
• Applets
(Pequeñas aplicaciones que se ejecutan en un documento HTML)
• Aplicaciones para intraredes,
– Cliente/Servidor
– Aplicaciones distribuidas en redes locales
– Internet.
66. Fundamentos de Programación
Arquitectura
• Java no se compila
– Se convierte a un pseudocódigo
– Un intérprete lo ejecuta en el CPU
66
mi_prog.java
Compilador
mi_prog.class
Intérprete
67. 67
Gramática de Java
Comentarios En Java hay tres tipos de comentarios:
// comentarios para una sola línea
/* comentarios de una o más líneas
*/
/** comentario de documentación, de una o más
líneas
*/
68. Ejemplo de un programa en java
68
/** Clase para calcular el promedio de dos números enteros
*/
public class Promedio{
/**
*El metodo main es el metodo principal para ejecutar una clase
*/
public static void main(String arg[]){
int i =11, j =20; //definición y asignación variables
double a=(i+j)/2.0;
System.out.println("i es =" + i +"y j es =" + j);
System.out.println("El promedio es " + a);
}//fin método main
}//fin clase
69. Fundamentos de Programación
Método main
• Es un método especial
• Punto de entrada del programa
• public static void main(String args[])
• args: vector de cadenas de texto que
representa los parámetros pasados al
programa
70. Fundamentos de Programación
Palabras clave
Las siguientes son las palabras clave que están definidas en Java
y que no se pueden utilizar como indentificadores:
Palabras Reservadas
Además, el lenguaje se reserva unas cuantas palabras más, pero
que hasta ahora no tienen un cometido específico. Son:
71. Fundamentos de Programación
Por convención:
• Las clases deben comenzar con una letra Mayúscula
• Las variables y métodos deben ir con letra miníscula
• Las constantes en MAYÚSCULA
int contador_principal;
char _lista_de_ficheros;
float $cantidad_en_Ptas;
Ejemplos: