93
1 1 Introducción 1.1 Conceptos Básicos Dato Representación simbólica (numérica, alfanumérica). Se puede procesar. Información Conjunto organizado de datos procesados. Constituye un mensaje válido para un receptor. Computador Máquina electrónica que procesa datos según programas previamente almacenados en memoria, de manera de obtener información Posee características de multipropósito. Computación Ciencia que estudia el proceso electrónico de datos y a las computadoras.

Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

Embed Size (px)

Citation preview

Page 1: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

1

1 Introducción

1.1 Conceptos Básicos

Dato

Representación simbólica (numérica, alfanumérica).

Se puede procesar.

Información

Conjunto organizado de datos procesados.

Constituye un mensaje válido para un receptor.

Computador

Máquina electrónica que procesa datos según programas previamente almacenados en memoria,

de manera de obtener información

Posee características de multipropósito.

Computación

Ciencia que estudia el proceso electrónico de datos y a las

computadoras.

Page 2: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

2

Informática

Ciencia que estudia el proceso de la información: captación, proceso,

generación y distribución; con el uso de tecnologías como la

computación y las telecomunicaciones.

Programa

Conjunto de instrucciones lógicamente ordenadas que realizan una

tarea específica en el computador por un periodo finito.

Computación Programación

Page 3: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

3

Bit (BInary digiT)

Unidad mínima de procesamiento de información en un computador.

Es un 0 ó un 1.

El computador internamente trabaja con bits, es decir, con ceros y unos.

Byte:

Conjunto de 8 bits.

Unidad mínima de almacenamiento en un computador.

Constituye una unidad de medida para la capacidad de almacenamiento de un computador, ya

sea para la memoria principal o la memoria secundaria.

Page 4: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

4

2 Lenguajes de programación

Un lenguaje de programación es el medio mediante el cual la máquina acepta y entiende

algoritmos, expresados en una forma compatible con los seres humanos.

Un algoritmo es un conjunto de instrucciones que lógicamente ordenadas y que requieren un

tiempo finito de desarrollo, ejecutan una tarea en el computador.

Programar o programación: Especificar mediante un lenguaje de programación lo que una

máquina debe hacer.

Programa: Conjunto de instrucciones y datos especificados mediante un lenguaje de

programación que pueden ser entendibles por una máquina o software de forma automática

A diferencia de la mayoría de los humanos, las máquinas no tienen sentido común, por lo que

harán “exacta y literalmente” lo que uno le indique.

Page 5: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

5

Ejemplo de algoritmo

Leer (N1, N2, N3)

R N1*0.3 + N2*0.3 + N3*0.4

Escribir (R)

Qué hace ?

Page 6: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

6

Otro ejemplo de Algoritmo

Read (N)

C 0

S 0

For I= 1 To N Do

Read (Nota)

S S + Nota

If (Nota >= 4.0) then

C C + 1

Endif

Endfor

R S/N

Write ('Promedio del curso',R)

Write (‘Numero de Alumnos aprobados', C)

Y este ejemplo, qué hace?

Page 7: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

7

Un algoritmo en sí es algo puramente conceptual, de modo que para comunicar un algoritmo, a

otra persona o a un computador, se debe hallar alguna forma de representarlo.

La colección de instrucciones, cada una con su estructura semántica bien definida y una sintaxis

no ambigua, para describir un algoritmo, se denomina lenguaje de programación.

La traducción de una idea (algoritmo) a un lenguaje, se llama "programar"

Para poder programar una máquina necesitamos un Lenguaje de programación, que de forma

similar al lenguaje natural que utilizamos los humanos, nos permitirá comunicarnos con las

máquinas e indicarles lo que deben hacer con detalle exacto.

Al hablar de un lenguaje, por sintaxis se entiende la forma en que se escribe una instrucción y por

semántica, su significado. Un programa sintácticamente correcto, no necesariamente es

semánticamente correcto.

El lenguaje de programación permite expresar algoritmos en forma de oraciones, las cuales

conducen las operaciones de las componentes de la computadora.

A partir de un algoritmo, se pueden crear varios programas que lo implementen:

o Por ejemplo en distintos lenguajes

o Con distintas tecnologías

o Pero aún así será la misma solución al mismo problema.

Page 8: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

8

Ejemplos de sentencias

Ada

C#

Algol

Fortran

Objective-C

C++

Python

Basic

C

Java

Page 9: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

9

Para que un computador realice una o un conjunto de tareas, es imprescindible que exista un

algoritmo puesto en la memoria principal, expresado en el lenguaje de la máquina (0 y 1).

Un programa de computador, es decir un algoritmo escrito en algún lenguaje de programación,

para ser ejecutado por la máquina debe ser convenientemente traducido al lenguaje que entiende el

procesador, es decir, a lenguaje de máquina.

Para convertir los programas escritos en algún lenguaje de programación a código de máquina, se

debe ejecutar un proceso de traducción, de alguna de estas formas:

Proceso de compilación, realizado por un programa llamado compilador.

Proceso de interpretación, realizado por un intérprete, o bien un enfoque híbrido (código

intermedio).

La diferencia entre un compilador y un intérprete, es que el compilador traduce todas las

sentencias del programa a ceros y unos, y luego lo ejecuta. En cambio, un intérprete traduce de a

una las sentencias y las va ejecutando inmediatamente.

Proceso de compilación

Compilador

Programa en

lenguaje de alto nivel

Programa Fuente

Programa

Objeto

Page 10: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

10

¿Qué es programar?

La programación moderna, al igual que la ciencia de la computación, es un área del conocimiento

que tiene poco más de medio siglo de existencia.

Prácticamente toda la tecnología actual incluye programación de una u otra forma, desde un

sencillo reloj, hasta los costosos equipos médicos o servicios de telecomunicaciones e información.

Programar o programación será para nosotros: especificar mediante un lenguaje de

programación lo que una máquina debe hacer.

Para poder programar necesitamos (definiciones generales e incompletas por ahora):

Problema: Un problema o tema a solucionar que requiere automatización.

Algoritmo: Una idea general de como resolver el problema

Lenguaje de Programación: Lenguaje que define una mecanismo, forma y significado de lo

que podemos indicarle a la máquina para implementar el algoritmo y resolver el problema

mediante un programa.

Un compilador/intérprete: Un software especializado que permite transformar o interpretar

los programas para una máquina específica

Máquina: La máquina para ingresar el problema y visualizar la solución

Page 11: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

11

2.1 Errores

Al momento de programar, se cometen errores. Éstos se pueden clasificar en varios tipos.

a. Errores en tiempo de compilación: El compilador de un lenguaje detecta los errores de sintaxis

en un programa fuente y otros errores básicos. Si existe este tipo de errores, no se genera el

programa ejecutable.

b. Errores en tiempo de ejecución: Son problemas que se presentan durante la ejecución de un

progama. Por ejemplo, tratar de realizar una división por cero, lo que causaría el término anormal

del programa.

c. Errores lógicos: Un programa puede correr, y parecer que funiona, pero produce resultados

erróneos. Por ejemplo, algún cálculo mal realizado ya que la forma de hacer el cálculo se escribió

en forma incorrecta. El computador no tiene forma de saber que lo que uno escribe en este caso

está incorrecto!

Page 12: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

12

2.1.1 Errores de Sintaxis Simples en Java

Mensaje de error Causa común

Error: ')' expected Falta un paréntesis

Error: variable X might not have been

initialized

Se debe asignar un valor por defecto a la

variable X indicada

Error: bad operand type java.lang.X for

unary operator 'Y'

No se puede aplicar el operador Y sobre la el

tipo de dato X

Error: not a statement Lo escrito no se entiende como una sentencia

válida del lenguaje

Error: class, interface, or enum expected Sobra una palabra clave, está mal escrita o sobra

una llave de cierre

Page 13: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

13

2.1.2 Errores de Sintaxis en Símbolos y Tipos de Datos

Mensaje de error Causa común

Error: incompatible types

required: X

found: Y

No se puede utilizar el tipo de dato Y,

se requiere el tipo X

Error: possible loss of precision

required: X

found: Y

El tipo de dato Y no es suficiente, se

requiere al menos el tipo de dato X o

realizar un casting

Error: cannot find symbol

symbol: X

location: Y

No se conoce la variable, instrucción

X en el lugar Y

Error: bad operand types for

binary operator ‘Z‘

first type: X

second type: Y

No se pueden operar los tipos de datos

X e Y mediante el operador Z

Page 14: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

14

3 Elementos Básicos de Programación

3.1 Resolución de problemas con el computador

Algoritmo de Computador

Conjunto de instrucciones ordenadas lógicamente que realizan una tarea

específica en un periodo finito.

Un ejemplo concreto es una receta de cocina o un mueble con la

modalidad “Armelo Ud. mismo”.

Por ejemplo: Algoritmo para cambiar la rueda a un auto

1. Tirar del freno de mano.

2. Sacar repuesto y la gata del portamaleta.

3. Colocar la gata y aflojar pernos de la rueda averiada.

4. Levantar auto con la gata.

5. Quitar las tuercas y la rueda.

6. Colocar la rueda buena y las tuercas.

7. Bajar automóvil y apretar tuercas.

8. Guardar la gata y la rueda averiada.

Los algoritmos son el medio por el cual se pueden especificar tareas, que

posteriormente podemos enseñar a los computadores a través de los

lenguajes de programación.

Page 15: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

15

Ejemplo: Calcular el área de un triángulo

1. Obtener la base del triángulo, variable b.

2. Obtener la altura del triángulo, variable h.

3. Multiplicar la base por la altura (b*h)

4. Dividir el resultado de la multiplicación en 2 y

guardar el resultado en la variable A, o sea,

A=(b*h)/2

5. Comunicar el resultado de la operación.

Page 16: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

16

Ejemplo: Calcular el promedio de las tres notas de un alumno y determinar si el alumno aprobó o

no el curso. (La condición de aprobación es promedio mayor o igual que 4)

1. Obtener la nota 1, N1.

2. Obtener la nota 2, N2.

3. Obtener la nota 3, N3.

4. Sumar las 3 notas y dividirlas por 3, P=(N1+N2+N3)/3

5. Si P >= 4.0, entonces comunicar “Aprobó”

Sino comunicar “Reprobó”

Page 17: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

17

Ejemplo: Conversión de decimal a binario

1. Obtener el número a convertir.

2. Guardar el número en la variable PE.

3. Dividir PE en 2.

4. Guardar la parte entera del resultado en la variable PE.

5. Guardar el resto de la división en la variable R.

6. Formar el binario.

mientras

PE > 0

Page 18: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

18

3.2 Conceptos Involucrados

Concepto Significado

Pseudocódigo Describe un algoritmo utilizando una mezcla de frases en

lenguaje común, instrucciones de lenguaje de programación y

palabras claves

Programa de computador Algoritmo escrito en un lenguaje de programación, que

ingresado a un computador y traducido al código binario,

permite que la máquina ejecute alguna función.

Instrucciones de computador Comandos imperativos que dirigen a la máquina a ejecutar

una acción específica: Leer, escribir, asignar, preguntar,

repetir.

Lenguaje de programación Conjunto de normas que determinan una forma específica de

escribir un algoritmo para computador.

Page 19: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

19

Programa

Computador

Algoritmo: Estructura Lógica

Lenguaje: Formato de escritura

Pensar en lo que haría Lo que la máquina debe hacer

Page 20: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

20

3.3 Estrategia iterativa (refino sucesivo)

Iterativamente se definen las tareas a realizar (se refinan las tareas)

El refino sucesivo es la búsqueda de la solución de un problema, detallando nivel a nivel la

solución, es decir, las tareas necesarias de realizar para llevar a cabo una función.

Un problema determinado es separado funcionalmente en distintas tareas que permiten su

solución.

Las tareas definidas, por su parte, pueden nuevamente ser detalladas en sub niveles, que

determinan un tercer nivel de solución.

Así, es posible continuar hasta alcanzar cierto nivel de detalle que permita claras y sencillas

instrucciones de programación que den cuenta de la solución.

Page 21: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

21

3.4 Ejemplos de refino

3.4.1 Se deben leer 2 datos desde pantalla y se debe imprimir el mayor.

Programa mayor

BEGIN

“Leer datos”

“Ver cuál es el mayor”

“Imprimir el mayor”

END

Page 22: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

22

3.4.2 Indicar si un alumno aprueba o reprueba un curso, a partir de tres notas.

Primer Nivel

Programa NotaFinal begin “Leer notas” “Calcular nota final” “¿Aprueba o no?”

end

Segundo nivel

“Leer notas” begin “Leer nota 1” “Leer nota 2” “Leer nota 3”

end

“¿Aprueba o no?” begin “Si la nota final es mayor o igual a 4”

imprimir ‘Aprobó’ “Sino, imprimir ‘Reprobó’ ”

end

Page 23: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

23

3.4.3 Ejemplo: Cálculo de promedio

La “idea”:

Esto nos lleva a …

begin Leer notas desde pantalla Calcular nota promedio Informar nota calculada

end

Page 24: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

24

“Seudocódigo”

Lo que finalmente se traduce en ….

Begin Read (nota1, nota2, nota3) NF nota1*0.3 + nota2 * 0.3 + nota3 * 0.4 Write(NF) end

Page 25: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

25

Código Java

import ucn.*; public class Promedio { public static void main(String args[]) { StdOut.print("Ingrese nota 1:"); double N1 = StdIn.readDouble(); StdOut.print("Ingrese nota 2:"); double N2 = StdIn.readDouble(); StdOut.print("Ingrese nota 3:"); double N3 = StdIn.readDouble(); double NF = (N1 + N2 + N3) / 3; StdOut.println("Nota final: " + NF); } // Fin main } // Fin class Promedio

Page 26: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

26

3.5 Aspectos básicos asociados a un programa

3.5.1 Concepto de Variable

Todo dato que el programa necesita lo representa a través de un símbolo.

Todo símbolo de un programa es una variable.

Toda variable ocupa un espacio en la memoria RAM.

El espacio utilizado por una variable en memoria puede ser:

Fijo, cuando el tamaño de la misma no variará a lo largo de la ejecución del programa.

Variable, cuando el tamaño de la misma puede variar a lo largo de la ejecución.

Cada variable posee un nombre y un contenido, repartido en la memoria RAM en celdas de

memoria

El nombre de una variable debe ser significativo.

Las variables son objetos cuyo valor puede ser modificado a lo largo de la ejecución de un

programa

Memoria RAM, dividida en celdas

NF (N1 + N2 + N3)/3

N1 N2

N3 NF

Page 27: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

27

Ejemplo: Celda de memoria correspondiente a la variable X

Si ejecutamos Qué pasa en la memoria?

“Declarar” X

X

X 0

0

X 3

3

Page 28: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

28

Todas las variables poseen una declaración de tipo que determina los valores que puede

almacenar y las operaciones en que puede participar.

Ejemplo: int, double, String, etc.

Page 29: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

29

3.5.2 Concepto de Constante

Las constantes son objetos cuyo valor permanece invariable a lo largo de la ejecución de un

programa.

Una constante es la denominación de un valor concreto, de tal forma que se utiliza su nombre

cada vez que se necesita referenciarlo.

Debe tener un tipo y nombre

Page 30: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

30

Ejemplo:

Celdas de memoria asociadas a las constantes PI y E

En algún lugar están definidos dos bloques de memoria, que contiene dichos valores:

3.141592 2.710281

Page 31: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

31

3.5.3 Tipos de Datos Básicos

3.5.3.1 Números Enteros

Page 32: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

32

3.5.3.2 Números Reales

Page 33: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

33

3.5.3.3 Booleano

3.5.3.4 Carácter

3.5.3.5 Cadena de caracteres

Page 34: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

34

3.5.4 Operadores

3.5.4.1 Operadores Aritméticos

Operador Uso Descripción

+ v1 + v2 Suma v1 y v2

- v1 - v2 Resta v2 de v1

* v1 * v2 Multiplica v1 por v2

/ v1 / v2 Divide v1 por v2

% v1 % v2 Calcula el resto de dividir v1 con v2

Nota: Aun cuando parezca extraño, los textos (o sea, los String) también se pueden "sumar". El

resultado de sumarle algo a un String es la concatenación del String con la otra cosa. Por ejemplo:

String a = "hola" + "mundo"; El String a adquiere el valor "holamundo"

String b = "hola" + 123; El String b adquiere el valor "hola123"

String a = "hola";

String b = "mundo";

String c = a + b;

El String c adquiere el valor "holamundo"

String a = "hola";

String b = "Mundo";

int c = 103;

String d = a + c + b;

El String d adquiere el valor ????

Page 35: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

35

3.5.4.2 Operadores Relacionales

Operador Uso Devuelve Verdadero Si:

> v1 > v2 v1 es mayor que v2

>= v1 >= v2 v1 es mayor o igual que v2

< v1 < v2 v1 es menor que v2

<= v1 <= v2 v1 es menor o igual que v2

== v1 == v2 v1 y v2 son iguales

!= v1 != v2 v1 y v2 son distintos

Page 36: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

36

3.5.4.3 Operadores Lógicos

Operador Uso Devuelve verdadero si...

&& (AND) v1 && v2 v1 y v2 son ambos verdaderos

|| (OR) v1 || v2 v1 o v2 son verdaderos

! (NOT) !v v es falso

Page 37: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

37

3.5.5 Instrucciones

3.5.5.1 Asignación de datos

Dar un valor a una variable de acuerdo a su tipo.

Ejemplo:

En pseudocódigo: var expresión

En Java: variable = expresión;

Se guarda el resultado de la expresión en la celda de memoria asociada a var.

Ejemplo:

n1 = 6.1;

edad = 21;

NF = (n1 + n2)/3;

Page 38: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

38

Ejemplos:

n1 = 10;

n2 = 20;

n1 = n2 + 6;

n1 = 10;

n1 = n1 + 6;

n2 = 10;

n1 = n2;

n1 n2

Page 39: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

39

3.5.5.1.1 Algunos usos de la sentencia de asignación:

3.5.5.1.1.1 Esquema contador

Uso de una variable para contar.

Sintaxis: i = i + 1; i ++;

Ejemplo:

…..

int i = 1; while (i <= 4) { …… i++; // i = i + 1; }

1

2

3

4

5

i

Page 40: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

40

3.5.5.1.1.2 Esquema sumador o acumulador

Variable que suma números de cualquier valor y su resultado lo guarda en la variable de asignación

involucrada.

Sintaxis: sumEdades = sumEdades + edad;

Ejemplo:

…..

int i = 1; int sum = 0; while (i <= 4) {

sum = sum + i; //sum es un acumulador

i++; // i = i + 1; }

0

1

3

6

10

sum

1

2

3

4

5

i

Page 41: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

41

3.5.5.2 Orden de Evaluación de los Operadores en una expresión

En toda expresión, al realizar operaciones de todo tipo (aritméticas, lógicas), la expresión siempre

se evalúa en un orden específico:

1. Paréntesis (comenzando por los más internos).

2. Signo.

3. Potencias.

4. Productos y divisiones.

5. Sumas y restas.

6. Concatenación.

7. Operadores Relacionales.

8. Operador de Negación.

9. Operador de Conjunción (AND, &&).

10. Operador de Disyunción (OR, ||).

La evaluación de operadores de igual orden se realiza siempre de izquierda a derecha.

Page 42: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

42

Ejemplo 1:

( (3+2) 2 - 15 ) /2 * 5

(Math.pow((23 ) , 2) - 15) / 2 * 5

( Math.pow(5, 2) - 15) / 2 * 5

( 25 - 15) / 2 * 5

10 / 2 * 5

5 * 5

25

Page 43: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

43

Ejemplo 2:

5 – 2 > 4 && ! 0.5 = 1 / 2

25 > 4 && ! 0.5 = 0.5

3 > 4 && ! 0.5 = 0.5

Falso && ! 0.5 0.5

Falso && ! Verdadero

Falso && Falso

Falso

Page 44: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

44

3.5.5.3 Lectura de datos

Adquirir datos de dispositivos como teclado, discos, etc.

READ (n1, n2, n3) (pseudocódigo)

En Java:

int n1 = StdIn.readInt(); double n2 = StdIn.readDouble(); String s1 = StdIn.readString();

Page 45: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

45

3.5.5.4 Salida de datos

Enviar datos y mensajes a dispositivos como pantalla, discos, impresora, etc.

WRITE (n1, n2, n3) (pseudocódigo)

En Java:

StdOut.print(n1); StdOut.println(n2);

Page 46: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

46

3.5.5.4.1 Ejemplo Lectura desde teclado y despliegue a pantalla

import ucn.*; public class AppLecturaDesplieguePantalla { public static void main(String[] args) { // Lectura de un entero StdOut.print("Ingrese numero entero: "); int num = StdIn.readInt(); StdOut.println("numero: " + num); // Lectura de un double StdOut.print("Ingrese numero double: "); double num5 = StdIn.readDouble(); StdOut.println("numero: " + num5); // Lectura de un String StdOut.print("Ingrese un string "); String s = StdIn.readString(); StdOut.println("string: " + s); } // Fin main }// Fin AppLecturaDesplieguePantalla

Page 47: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

47

3.5.5.5 Instrucciones condicionales

Permite definir distintos cursos de acción dentro de un algoritmo.

Alternativa Simple:

if (condición) { // instrucciones si se cumple la condición }

Page 48: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

48

Alternativa Completa:

Condición: Expresión booleana que puede resultar Verdarera o Falsa. Compara a través de

operadores y expresiones con conectores lógicos.

Las instrucciones pueden ser otros IF.

Si es una sola instrucción, no son necesarias las llaves

if (condición) {

// instrucciones si se cumple la condición } else{

// instrucciones si no se cumple la condición }

Page 49: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

49

Alternativa Múltiple:

nomVar: es el nombre de la variable.

valor1, valor2, valorN: son los valores que

puede tomar la variable nomVar. Ejemplo:

1, 2, 3, …

default: es la sección en donde se indican

las instrucciones que se ejecutarán en caso

de que la variable no tenga ninguno de los

valores especificados en los case.

switch (nomVar) { case valor1: // instrucciones break; case valor2: // instrucciones break; case valorN: // instrucciones break; default: // instrucciones }

Page 50: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

50

Ejemplos del uso del if:

i) Indicar si un alumno aprueba o reprueba un curso, a partir de tres notas.

import ucn.*; public class AppIf1 { public static void main(String args[]) { StdOut.print("Ingrese la primera nota: "); double nota1 = StdIn.readDouble(); StdOut.print("Ingrese la segunda nota: "); double nota2 = StdIn.readDouble(); StdOut.print("Ingrese la tercera nota: "); double nota3 = StdIn.readDouble(); double notaFinal = (nota1 + nota2 + nota3) / 3; if (notaFinal >= 3.95) { StdOut.println("Aprobo con nota = " + notaFinal); } else { StdOut.println("Reprobo con nota =" + notaFinal); } } // Fin main } // Fin AppIf1

Page 51: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

51

ii) Calcular nota final de un alumno (considere el promedio de las 3 notas parciales), bonificando

la nota final en 0.5 si todas las notas son mayores o iguales a cuatro.

import ucn.*; public class AppIf2 { public static void main(String args[]) { StdOut.print("Ingrese la primera nota: "); double nota1 = StdIn.readDouble(); StdOut.print("Ingrese la segunda nota: "); double nota2 = StdIn.readDouble(); StdOut.print("Ingrese la tercera nota: "); double nota3 = StdIn.readDouble(); double notaFinal = (nota1 + nota2 + nota3) / 3; if (nota1 >= 4.0 && nota2 >= 4.0 && nota3 >= 4.0) { if (notaFinal < 6.6) { notaFinal = notaFinal + 0.5; } else { notaFinal = 7.0; } } StdOut.println("nota final = " + notaFinal); }// fin main } // fin AppIf2

Page 52: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

52

3.5.5.5.1 Ejercicios

i) Leer notas para 2 alumnos distintos. Determinar cual posee el mejor promedio.

Programa MejorPromedio

begin

“Leer notas de los 2 alumnos”

“Calcular promedios para los 2 alumnos”

“Determinar cual promedio es mejor”

End

Programa MejorPromedio

begin

“Leer notas alumno 1”

“Leer notas alumno 2”

“Calcular promedio alumno1”

“Calcular promedio alumno2”

“Determinar cual promedio es mejor”

end

Page 53: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

53

ii) Indicar si un alumno repite aprueba o va a recuperativa, según las reglas de notas y taller

dadas en el curso.

Programa CalculoNF

begin

“Leer notas”

“Sacar Promedio”

“Imprimir nota final y mensaje”

end

Page 54: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

54

3.5.5.6 Instrucciones para ciclos

Posibilita la repetición de una o más instrucciones (ciclos)

3.5.5.6.1 for

Repite un conjunto de sentencias un número específico de veces

for (inicio; condicion_termino; incremento){ ……// Conjunto de Sentencias

}

Ejemplo: Leer las edades de 10 personas

int edad; for(int i=1; i<=10; i++){ PantallaSalida.print("“Ingrese edad: "); edad = StdIn.readInt();

}

Page 55: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

55

3.5.5.6.2 while

Repite la ejecución de un conjunto de sentencias, de tal forma que estas se ejecutan

mientras la condición sea verdadera. La condición, será evaluada siempre antes de cada

repetición.

while(condicion_termino){ ……// Conjunto de Sentencias

}

Ejemplo: Leer las edades de personas hasta que se ingrese una edad igual a -1

StdOut.print("Ingrese edad: "); int edad = StdIn.readInt(); while (edad != -1) { StdOut.print("Ingrese edad: "); edad = StdIn.readInt();

}

Page 56: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

56

3.5.5.6.3 do…while:

Repite un conjunto de sentencias de tal forma que estas se ejecutan mientras la condición

sea verdadera. La condición será evaluada siempre después de cada repetición. El conjunto

de instrucciones se ejecuta al menos una vez.

do { ……// Conjunto de Sentencias

} while (condicion_termino);

Ejemplo: Leer la edad de una persona, no se debe permitir el ingreso de una edad negativa.

int edad = 0; do { edad = StdIn.readInt();

} while (edad < 0);

Page 57: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

57

Ejemplos:

o int i = 1; while (i <= 100) { //Sentencias i = i + 1; //i++

}

o int i = 0; do { //Sentencias i++; } while(i<100);

o for (int i = 1; i <= 100; i++){ //Sentencias

}

Page 58: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

58

4 Algoritmos: Promedios, Búsqueda del mayor y menor

4.1 Calcular y desplegar por pantalla el promedio de notas de un curso de 100 alumnos. Se

debe leer desde pantalla la nota final de cada alumno.

Programa promedio

Begin

“Inicializar acumulador de notas”

For I = 1 to 100

“Leer nota final”

“Acumular nota final”

end for

“Calcular e imprimir promedio”

end

Refino

Page 59: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

59

En Java:

import ucn.*; public class Promedio100Alumnos { public static void main(String args[]) { double suma = 0; for (int i = 1; i <= 100; i++) { StdOut.print("Ingrese nota de un alumno: "); double notaFinal = StdIn.readDouble(); suma = suma + notaFinal; } double prom = suma / 100.0; StdOut.println("Promedio: " + prom); } }

Page 60: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

60

4.2 Determinar al mejor alumno (con la mejor nota), en 1000 estudiantes. Por cada alumno

se debe leer su matrícula y su promedio de notas. Se debe desplegar el número de

matrícula y la nota del mejor alumno.

import ucn.*; public class MejorAlumno { public static void main(String args[]) { double mayor = 0; String matrMayor = ""; for (int i = 1; i <= 1000; i++) { // Lectura de los datos StdOut.print("Ingrese matricula del alumno: "); String mat = StdIn.readString(); StdOut.print("Ingrese promedio del alumno: "); double prom = StdIn.readDouble(); if (prom > mayor) { mayor = prom; matrMayor = mat; } } StdOut.println("Mayor promedio es: " + mayor + " numero de matricula: " + matrMayor); } }

Page 61: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

61

4.3 El arancel de matrícula es calculado por la fórmula:

AM = SUELDO_PADRES * 10 – NHERMANOS * EDAD_ESTUDIANTE + IMPUESTO_POR_REGION_PROCEDENCIA

Dependiendo de la región, el impuesto es:

1. 5000

2. 1000

3. 4000

4. 10000

Cualquier otra región: 0

Construya un algoritmo que calcule e imprima el arancel a pagar por un estudiante. Se debe leer,

desde pantalla, el sueldo de los padres, Nº de hermanos, edad y la región.

Page 62: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

62

Programa Arancel

Begin

“Leer datos”

“Calcular arancel”

“Imprimir arancel”

End

Refino

Page 63: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

63

import ucn.*; public class Arancel { public static void main(String args[]) { // Lectura de los datos StdOut.print("Ingrese sueldo: "); int sueldo = StdIn.readInt(); StdOut.print("Ingrese cantidad de hermanos: "); int cant = StdIn.readInt(); StdOut.print("Ingrese edad: "); int edad = StdIn.readInt(); StdOut.print("Ingrese region: "); int region = StdIn.readInt(); int impuesto; switch (region) { case 1: impuesto = 5000; break; case 2: impuesto = 1000; break; case 3: impuesto = 4000; break; default: impuesto = 0; } int arancel = sueldo * 10 - cant * edad + impuesto; StdOut.println("Arancel: " + arancel); } }

Page 64: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

64

Nota: Hacer los cambios en el código para reemplazar el switch por if

Page 65: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

65

4.4 Leer datos de alumnos, matrícula, nota1, nota2, nota3 y desplegar el promedio de cada

uno. Son 500 estudiantes.

PROGRAMA Promedio

BEGIN

FOR I = 1 TO 500

“Leer datos”

“Calcular Promedio”

“Imprimir promedio”

END FOR

END

Refino

Page 66: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

66

import ucn.*; public class Promedio50 { public static void main(String args[]) { for (int i = 1; i <= 50; i++) { // Lectura de los datos de un alumno StdOut.print("Ingrese matricula: "); String matr = StdIn.readString(); double n1 = StdIn.readDouble(); double n2 = StdIn.readDouble(); double n3 = StdIn.readDouble(); // Calculo del promedio double prom = (n1 + n2 + n3) / 3; StdOut.println("Matricula " + matr + ", promedio: " + prom); } } }

Page 67: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

67

4.5 Leer e imprimir la edad de N alumnos. N es el primer dato!

import ucn.*; public class Leyendo_N_Edades { public static void main(String args[]) { int N = StdIn.readInt(); for (int i = 1; i <= N; i++) { // Leemos de la edad de un alumno int edad = StdIn.readInt(); StdOut.println(edad); } } }

Page 68: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

68

4.6 Leer varios números hasta encontrar un -1 y calcular su suma.

import ucn.*; public class SumaNumerosHastaMenosUno { public static void main(String args[]) { int suma = 0; StdOut.println("Ingrese numero: "); int num = StdIn.readInt(); while (num != -1) { suma = suma + num; StdOut.println("Ingrese numero: "); num = StdIn.readInt(); } StdOut.println("Suma: " + suma); } // Fin main }// Fin SumaNumeros

Page 69: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

69

4.7 Leer una secuencia de números hasta encontrar un -1, y determinar cuántas veces hubo

cambio entre signos positivos y negativos.

import ucn.*; public class DetectarCambiosDeSignoHastaLeerMenosUno { public static void main(String args[]) { int anterior = 0; int cant = 0; StdOut.println("Ingrese un numero: "); int numero = StdIn.readInt(); while (numero != -1) { if (numero * anterior < 0) { cant++; } anterior = numero; StdOut.println("Ingrese un numero: "); numero = StdIn.readInt(); } StdOut.println("Cambios de Signo:" + cant); } }

Page 70: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

70

4.8 Leer una secuencia de 100 números y determinar cuántos son divisibles por 2 y cuántos

por 3.

Page 71: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

71

Refino:

PROGRAMA Divisibles por 3 y por 2

BEGIN

“Inicializar 2 contadores”

FOR i = 1 TO 100

“Leer número”

“Ver si es divisible por 2”

“Ver si es divisible por 3”

IF (“es divisible por 2”) THEN

“Incrementar contador de los divisibles por 2”

ENDIF

IF (“es divisible por 3”) THEN

“Incrementar contador de los divisibles por 3”

ENDIF

ENDFOR

WRITE (“Total número divisible por 2”,

Contador de los divisibles por 2)

WRITE (“Total número divisible por 3”,

Contador de los divisibles por 3)

END

Page 72: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

72

En Java:

import ucn.*; public class Leer100NumerosYDecirDivisiblesPor2y3 { public static void main(String args[]) { int cantidadDivisiblePor2 = 0; int cantidadDivisiblePor3 = 0; for (int i = 1; i <= 100; i++) { StdOut.print("Ingrese el item " + i + ": "); int numero = StdIn.readInt(); // Vamos a ver si "numero" es divisible por 2 int aux2 = numero; while (aux2 > 0) { aux2 = aux2 - 2; } if (aux2 == 0) { cantidadDivisiblePor2++; } // Ahora, veamos si "numero" es divisible por 3 int aux3 = numero; while (aux3 > 0) { aux3 = aux3 - 3; } if (aux3 == 0) { cantidadDivisiblePor3++; } } StdOut.println("Cantidad de divisibles por 2:" + cantidadDivisiblePor2); StdOut.println("Cantidad de divisibles por 3:" + cantidadDivisiblePor3); } }

Page 73: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

73

Nota: Hacer los cambios en el código para usar la función resto de Java

Page 74: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

74

4.9 Leer un número y determinar si es primo o no. import ucn.*; public class DeterminarSiUnNumeroEsPrimo { public static void main(String args[]) { boolean ok = true; int numero = StdIn.readInt(); int i = 2; int mitad = numero / 2; while (i <= mitad && ok) { int auxiliar = numero; while (auxiliar > 0) { auxiliar = auxiliar - i; } if (auxiliar == 0) { ok = false; } i = i + 1; // o también "i++" } StdOut.println("El número " + numero); if (ok) { StdOut.println(" es primo"); } else { StdOut.println(" no es primo"); } } }

Page 75: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

75

Nota: Hacer los cambios en el código para usar la función resto de Java

Page 76: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

76

4.10 Calcular la integral entre A y B, con precisión de DX para la ecuación. A, B y DX deben

leerse desde pantalla.

f(x) = x4 - 3 x3 - 2x + 6

Page 77: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

77

PROGRAM Integral

BEGIN f(x)

“Leer datos”

FOR cada rectángulo

“Calcular el área”

“Acumular el área” f(x)

ENDFOR

“Imprimir el área resultante” a dx b x END

Page 78: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

78

import ucn.*; public class Integral { public static void main(String args[]) { StdOut.print("Ingrese A: "); double a = StdIn.readDouble(); StdOut.print("Ingrese B: "); double b = StdIn.readDouble(); StdOut.print("Ingrese DX: "); double dx = StdIn.readDouble(); double area = 0; for (double x = a; x <= b; x = x + dx) { double fx = Math.pow(x, 4) - 3 * Math.pow(x, 3) - 2 * x + 6; double r = dx * fx; area = area + r; } StdOut.print("El área bajo la curva es: "); StdOut.println(area); } }

Page 79: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

79

4.11 Leer registros de alumnos (matrícula, promedio) y determine los 2 números de

matrículas correspondientes a los alumnos de mejores promedios. Fin de datos: matrícula

= -1.

Refino:

PROGRAMA Los dos mejores

BEGIN

“Leer matricula”

WHILE (matrícula < > “-1”)

“Leer promedio”

“Determinar el primer mayor”

“Determinar el segundo mayor”

“Leer matrícula”

ENDWHILE

“Imprimir el primer mayor”

“Imprimir el segundo mayor”

END

Page 80: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

80

En Java:

import ucn.*; public class DosMejores { public static void main(String args[]) { double mayor1 = 0; String mat1 = " "; double mayor2 = 0; String mat2 = " "; StdOut.print("Ingrese matrícula: "); String mat = StdIn.readString(); double prom; while (!mat.equals("-1")) { StdOut.print("Ingrese promedio de notas: "); prom = StdIn.readDouble(); if (prom > mayor1) { mayor2 = mayor1; mat2 = mat1; mayor1 = prom; mat1 = mat; } else { if (prom > mayor2) { mayor2 = prom; mat2 = mat; } } StdOut.print("Ingrese matrícula: "); mat = StdIn.readString(); } // Fin del while StdOut.println("Mejor promedio: " + mayor1 + " matricula: " + mat1); StdOut.println("Segundo mejor promedio: " + mayor2 + " matricula: " + mat2); } // Fin main } // Fin DosMejores

Page 81: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

81

5 Algoritmos de sucesiones y series

5.1 Conceptos básicos

5.1.1 Sumatorias

Definición: tttt N

N

ii

.......21

1

Propiedades:

i.

N

iii

N

ii

N

ii vtvt

111

ii.

N

ii

N

ii tt cc

11 (c constante)

iii. Si ti = c i = 1,N (c constante)

cNcN

i

N

iit

11

Nota:

N

kii

k

ii

N

ii ttt

111

Page 82: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

82

5.1.2 Productos

Definición: tttt N

N

ii

.......21

1

Propiedades:

i.

N

iii

N

ii

N

ii vtvt

111

ii.

N

ii

NN

ii tctc

11 (c constante)

iii. Si ti = c i = 1,N (c constante)

ctN

N

i

N

ii

c 11

Nota:

N

kii

k

ii

N

ii ttt

111

Page 83: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

83

5.1.3 Función Recursiva

Es aquella que permite evaluar una infinidad de términos, cada uno de los cuales después de

un cierto punto, está definido en término de los elementos precedentes.

Ejemplos:

5.1.3.1 Secuencia de Fibonacci:

t1 = 1, t2 = 1

tn = t n-1 + t n-2 n 3

1, 1, 2, 3, 5, 8, 13, 21,........

5.1.3.2 Definición del N factorial

n! = 1 si n = 0

n! = n (n-1)! Si n 1

También: ti = t i-1 * i i > 0

t0 = 1

1, 1, 2, 6, 24, 120,......

Page 84: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

84

5.1.3.3 El primer término de una sucesión es igual a 1 y los siguientes a 3 veces el término anterior.

ti = 3t i-1 i 2

t1 = 1

1, 3, 9, 27,.......

Page 85: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

85

5.1.4 Función Posicional

Es aquella en que cada término es evaluado de acuerdo a su posición en la sucesión o serie, no

requiriéndose la evaluación de términos anteriores. Por ejemplo:

5.1.4.1 Sucesión de los números naturales: 1, 2, 3, 4, 5, ........

Función

Recursiva

Función

Posicional

t1 = 1

ti = t i-1 + 1 i > 1

ti = i i > 0

5.1.4.2 Sucesión de los números impares: 1, 3, 5, 7, 9, ........

Función

Recursiva

Función

Posicional

t1 = 1

ti = t i-1 + 2 i > 1

ti = 2i - 1 i > 0

Page 86: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

86

5.1.4.3 Sucesión de los números pares: 2, 4, 6, 8, ........

Función

Recursiva

Función

Posicional

t1 = 2

ti = t i-1 + 2 i > 1

ti = 2i i > 0

5.1.4.4 Progresión Aritmética, término inicial 5, diferencia 3:

5, 8, 11, 14 ........

Función

Recursiva

Función

Posicional

F1 = 5

Fi = F i-1 + 3 i > 1

Fi = 5 + 3(i-1)

i > 0

5.1.4.5 Progresión Aritmética en general, término inicial a, diferencia d:

a, a+d, a+2d, ........, a+(i-1)d

Función Recursiva Función Posicional

F1 = a

Fi = F i-1 + d i > 1

Fi = a + d(i-1) i > 0

Page 87: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

87

5.1.4.6 Progresión Geométrica, término inicial 5, razón 2:

5, 10, 20, 40, 80, ........

Función Recursiva Función Posicional

F1 = 5

Fi = F i-1 * 2 i > 1

Fi = 5 * 2(i-1) i > 0

5.1.4.7 Progresión Geométrica en general, término inicial a, razón r:

a, ar, ar2, ar3, ar4, .....,ar i-1

Función Recursiva Función Posicional

F1 = a

Fi = F i-1 * r i > 1

Fi = a * r(i-1) i > 0

Page 88: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

88

5.1.5 Ejercicios

5.1.5.1 Determinar la función posicional y recursiva de la sucesión:

12, 22, 32, 42, 52,......

5.1.5.2 Expresar S mediante notación recursiva

....141185 S

5.1.5.3 Expresar S mediante notación recursiva

.........8532

8532

xxxxxxS

5.1.5.4 Expresar S mediante notación recursiva y posicional

NS ...321.....321211

Page 89: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

89

5.1.5.5 Expresar S mediante notación recursiva

.......7531 ttttS

t1 = 1 ; t2 = 1 ; t3 = 2 ; t4 = 3; t5 = 5

5.1.5.6 Expresar S mediante notación recursiva

......!7!5!3!1

753

xxxxS

1

Page 90: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

90

5.1.5.7 Construir un algoritmo para calcular la serie 1/xi hasta que el término sea menor a 0.0000005 (no incluir ese término). El valor x debe ser leído.

Refino: PROGRAM Serie

BEGIN

“Leer x”

“Calcular término”

WHILE ( término >= 0.0000005) DO

“Acumular término”

“Obtener nuevo término”

END WHILE

WRITE (S)

END

Page 91: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

91

En Java:

import ucn.*; public class Serie1 { public static void main(String args[]) { StdOut.print("Ingrese X:"); double x = StdIn.readDouble(); double s = 0; double den = x; double term = 1 / den; while (term >= 0.0000005) { s = s + term; den = den * x; } StdOut.println(s); } }

Page 92: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

92

5.1.5.8 Genere el término M de la secuencia de Fibonacci.

S = 0, 1, 1, 2, 3, 5, 8, 13, … M > 3

Page 93: Introducción - tongoy.ucn.cltongoy.ucn.cl/ftello/ICI/Semestre 5/Introduccion a la Programacion... · La diferencia entre un compilador y un intérprete, es que el compilador traduce

93

import ucn.*; public class Fibo1 { public static void main(String args[]) { int anteriorUno = 0; int anteriorDos = 1; int nuevo = 0; StdOut.print("Ingrese M: "); int m = StdIn.readInt(); for (int i = 3; i <= m; i++) { nuevo = anteriorUno + anteriorDos; anteriorUno = anteriorDos; anteriorDos = nuevo; } StdOut.println("El Fibonacci de " + m + " es " + nuevo); } }