Fp sesion 1 ppt

379 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
379
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Fp sesion 1 ppt

  1. 1. FACULTAD DE INGENIERIAEscuela Académica Profesional: Ingeniería de SistemasCURSO FUNDAMENTOS DE PROGRAMACIÓNConceptos Fundamentales de ProgramaciónyRepresentación de AlgoritmosIng. Percy Bravo Baldeón
  2. 2. Fundamentos de Programación¿Qué es un algoritmo?¿Qué es un programa?¿Qué es un lenguaje deprogramación?
  3. 3. Fundamentos de Programación¿Qué es un Algoritmo?
  4. 4. Fundamentos de Programación¿Características de un Algoritmo?
  5. 5. Fundamentos de Programación
  6. 6. Fundamentos de ProgramaciónAlgoritmo vs Lenguaje de Programación
  7. 7. Fundamentos de ProgramaciónPasos para resolverproblemas (Polya).Ciclo de programación.Etapas para Solucionar Problemas
  8. 8. Fundamentos de Programación
  9. 9. Fundamentos de ProgramaciónEtapas de la fase de análisis de problemas• Precisar los resultadosesperados– El estudiante debepreguntarse:• ¿Qué información mesolicitan?• ¿Qué formato debe tener estainformació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) parasimplificar el problema?• ¿Cuáles datos son variables?• ¿Cuáles datos debo calcular?• ¿Tengo los conocimientos para solucionar el problemaplanteado?• Establecer procesos(operaciones)– El estudiante debe preguntarse:• ¿Qué procesos necesito?• ¿Qué fórmulas debo emplear?• ¿Cómo afectan lascondiciones a los procesos?• ¿Qué debo hacer?• ¿Cuál es el orden de lo quedebo 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 pararesolver el problema? (datosdesconocidos)• ¿Puedo agrupar los datos encategorías?
  10. 10. Fundamentos de ProgramaciónConceptos básicos paradiseñ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, palabrareservada, contador, acumulador, tipos de datos, operadores yexpresiones).
  11. 11. Fundamentos de ProgramaciónDiseñar y traducir algoritmos:• Fundamentos de programación en el áreade procedimientos.• Establecer interactividad con el “usuario”del procedimiento• Abordar las tres estructuras de controlbásicas:• secuencial,• iterativa (repetición) y• condicional (decisión, selección).
  12. 12. Fundamentos de ProgramaciónDepurar procedimientos:• Dificultad para elaborarprocedimientos perfectos en losprimeros intentos.• La dificultad aumenta a medidaque los problemas se vuelven máscomplejos.• Los resultados se deben probar yvalidar (revisión).• El proceso promueve valores comoresponsabilidad, fortaleza, laboriosidad, paciencia y perseverancia.
  13. 13. Fundamentos de Programación
  14. 14. Fundamentos de Programación
  15. 15. Fundamentos de Programación
  16. 16. Fundamentos de Programación
  17. 17. Fundamentos de ProgramaciónSupongamos que un profesor quiere crear un programapara gestionar las notas de sus alumnos. Quiere quedicho programa le permita realizar tareas tales comoasignar notas, cambiar notas, ver las notas según distintascalificaciones, etc. A continuación tienes un esquema querepresenta una de las posibles divisiones del problema enmódulos.Ejemplo:
  18. 18. Fundamentos de Programación
  19. 19. Fundamentos de Programación
  20. 20. Fundamentos de Programación
  21. 21. Fundamentos de Programación
  22. 22. Fundamentos de Programación
  23. 23. Fundamentos de ProgramaciónHERRAMIENTAS PARA EL DISEÑO DE ALGORITMOSTanto en la fase de análisis del problema como duranteel diseño del algoritmo, se plantea la necesidad derepresentar claramente el flujo de operaciones que sehan de realizar para su resolución y el orden en queestas operaciones deber ser ejecutadas.Una vez que el algoritmo esté diseñado se debeproceder a representarlo mediante algún método deprogramación, siendo los más usuales: diagramas deflujo, pseudocódigo o diagramas N-S.
  24. 24. Fundamentos de ProgramaciónDiagramas de Flujo:Cada operación serepresenta medianteun símbolonormalizado elInstitutoNorteamericano deNormalización (ANSI -American NationalStandars Institute). Laslíneas de flujo indicanel orden de ejecución.Los diagramas de flujo suelen ser usados solo para representaralgoritmos pequeños, ya que abarcan mucho espacio.
  25. 25. Fundamentos de Programación
  26. 26. Fundamentos de Programación
  27. 27. Fundamentos de ProgramaciónDescriben un algoritmo de forma similar a un lenguaje deprogramación pero sin su rigidez, de forma más parecida allenguaje natural. Presentan la ventaja de ser más compactosque los diagramas de flujo, más fáciles de escribir para lasinstrucciones complejas y más fáciles de transferir a unlenguaje de programación. El pseudocódigo no está regidopor ningún estándar.•Algunas palabras usadas son LEER/IMPRIMIR pararepresentar 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 encentí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•FinPseudocódigos:
  28. 28. Fundamentos de ProgramaciónDIAGRAMAS Nassi-Shneiderman
  29. 29. Fundamentos de ProgramaciónTipos de Datos, Variables, Constantes,Expresiones, operándos y operadoresaritméticos y lógicos.
  30. 30. Fundamentos de ProgramaciónLa 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. 31. Fundamentos de ProgramaciónVariables• Almacenan el estado de los objetos• Pueden definirse en cualquier parte delcódigo, antes de su uso• Deben empezar con letra, guión bajo (_) odólar ($)• Sensible a mayúsculas/minúsculas
  32. 32. Fundamentos de ProgramaciónVariables• Dí que variables son válidasintanIntii11thing11thingONE-HUNDREDONE_HUNDREDsomething2do
  33. 33. Fundamentos de ProgramaciónVariables• Las variables tienen un tipo que define elrango de valores y las operaciones quepueden hacerse– Java es fuertemente tipado• Tipos primitivos• Tipos referencia
  34. 34. Fundamentos de ProgramaciónTipos 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. 35. Fundamentos de ProgramaciónTipos 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 esindependiente de la plataforma
  36. 36. Fundamentos de ProgramaciónTipos de datos referencia• Objetos– Instancias de clases• Arrays– Colección de elementos del mismo tipo,sean básicos o complejos• Se inicializan a null
  37. 37. Fundamentos de ProgramaciónInicialización• Las variables pueden inicializarse en ladefiniciónint a = 2;char b = a;double c = 123.13123;Bicicleta d = new Bicicleta();
  38. 38. Fundamentos de ProgramaciónConstantes• Variables que no pueden cambiar devalor una vez establecido• Modificador finalfinal int a;a = 12;final double b = 456.4546456;
  39. 39. Fundamentos de ProgramaciónÁmbito• Ámbito: parte de programa en el queuna variable está definida• Variable miembro (de una clase)• Parámetro (de un método)• Variable local (de un método)• Excepciones
  40. 40. Fundamentos de ProgramaciónÁmbitos
  41. 41. Variablespublic 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. 42. Variablespublic 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. 43. Variablespublic 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
  44. 44. Fundamentos de ProgramaciónOperadores• Unariosop1 operatoroperator op1• Binariosop1 operator op2• Ternariosop1 operator1 op2 operator2 op3
  45. 45. Fundamentos de ProgramaciónOperadores aritméticos• Binarios– Suma: op1 + op2– Resta: op1 – op2– Multiplicacion: op1 * op2– División: op1 / op2– Módulo: op1 % op2
  46. 46. Fundamentos de ProgramaciónOperadores 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. 47. Fundamentos de ProgramaciónOperadores aritméticos• Unarios– Número negativo (-2, -123)– Convierte byte y short en int (+2, +65)• Suma / resta unaria– ++op1– op1++– --op1– op1--
  48. 48. Fundamentos de ProgramaciónOperadores 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. 49. Fundamentos de ProgramaciónOperadores de comparación• Mucho cuidado con la igualdad• Cuando se comparan variablesreferencia, se compara si ambosobjetos son el mismo, no si son iguales(tienen el mismo estado)• Error típico
  50. 50. Fundamentos de ProgramaciónOperadores booleanos• Operan sobre booleanos y devuelvenbooleanos– AND: op1 && op2– OR: op1 || op2– NOT: !op1– XOR: op1 ^ op2
  51. 51. Fundamentos de ProgramaciónOperadores booleanos• Java sólo evalúa si es necesario• Si el primer operando de un AND esfalse, no evalúa el segundo y devuelvefalse– Lo mismo con OR• Para obligar a evaluar el segundooperando, usar & (AND) y | (OR)
  52. 52. Fundamentos de ProgramaciónOperadores dedesplazamiento• Opera sobre enteros y devuelve enteros– Desplazar a izquierda: op1 << num– Desplazar a derechaop1 >> num (extiende signo)op1 >>> num (no extiende signo)
  53. 53. Fundamentos de ProgramaciónOperadores lógicos• Operan sobre bits de los enteros– AND: op1 & op2– OR: op1 | op2– XOR: op1 ^ op2– Complemento: ~op1
  54. 54. Fundamentos de ProgramaciónOperadores 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 sehace una copia del objeto
  55. 55. Fundamentos de ProgramaciónOperadores de asignación• Asignación con operaciónop1 = op1 operador op2 (a = a + b)op1 operador= op2 (a += b)• +, -, *, /, %, &, |, ^, <<, >>, >>>
  56. 56. Fundamentos de ProgramaciónOtros 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 amétodos
  57. 57. Fundamentos de ProgramaciónExpresiones• Una expresión es un conjunto de variables,operadores e invocaciones a métodos que seevalúan como un único resultado– a– 1 + 2– 12 + a.getNumHoras() * 2
  58. 58. Fundamentos de ProgramaciónExpresiones• Las expresiones, además de un valor,tienen un tipo asociado, que dependede las subexpresiones dentro de laexpresión• Una expresión se puede conjuntar conotras para formar una expresión mayormediante el uso de operadores
  59. 59. Fundamentos de ProgramaciónExpresiones• Las expresiones se pueden emplear en– Asignaciones– Invocaciones a métodos– Operandos
  60. 60. Fundamentos de ProgramaciónOrden de evaluación• Las expresiones complejas puedenevaluarse de diferentes formasa + b – c * 4¿((a + b) – c) * 4?¿((a + b) – (c * 4))?
  61. 61. Fundamentos de ProgramaciónOrden de evaluación• Se pueden emplear paréntesis paraespecificar 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üedadmediante el uso de paréntesis a + b – (c * 4)
  62. 62. Fundamentos de ProgramaciónAsociatividad• En operadores binarios, ¿cómo se leenlos operadores?• Asociatividad a la izquierda: suma 1 + 2 + 3 + 4 => (((1 + 2) + 3) + 4)• Asociatividad a la derecha a = b = c => (a = (b = (c)))
  63. 63. Fundamentos de ProgramaciónProgramación en JAVA
  64. 64. Fundamentos de ProgramaciónObjetivos 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 deaplicaciones– Portabilidad del código
  65. 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. 66. Fundamentos de ProgramaciónArquitectura• Java no se compila– Se convierte a un pseudocódigo– Un intérprete lo ejecuta en el CPU66mi_prog.javaCompiladormi_prog.classIntérprete
  67. 67. 67Gramática de JavaComentarios 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áslíneas*/
  68. 68. Ejemplo de un programa en java68/** 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 variablesdouble 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. 69. Fundamentos de ProgramaciónMétodo main• Es un método especial• Punto de entrada del programa• public static void main(String args[])• args: vector de cadenas de texto querepresenta los parámetros pasados alprograma
  70. 70. Fundamentos de ProgramaciónPalabras claveLas siguientes son las palabras clave que están definidas en Javay que no se pueden utilizar como indentificadores:Palabras ReservadasAdemás, el lenguaje se reserva unas cuantas palabras más, peroque hasta ahora no tienen un cometido específico. Son:
  71. 71. Fundamentos de ProgramaciónPor 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ÚSCULAint contador_principal;char _lista_de_ficheros;float $cantidad_en_Ptas;Ejemplos:
  72. 72. Fundamentos de Programación
  73. 73. Fundamentos de ProgramaciónGracias.

×