04_lenguajes_de_programacion
TRANSCRIPT
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 1/57
BSI-03 Programación I
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 2/57
Semana 6!Primer parcial es la próxima semana!
Algoritmos, Diagramas de Flujo y Pseudocódigo.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 3/57
Quiz 1 – Errores comunes
● Entrada: Comparar ay b
● Entrada: Dosnúmeros, a y b
Comparar los números
es lo que hace nuestroalgoritmo.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 4/57
Quiz 1 – Errores comunes
si (a < b)
imprimir “a < b”
si_no (a > b)
imprimir “a > b”
si (a < b)
imprimir “a < b”
si_no
si (a > b)imprimir “a > b”
fin_si
fin_si
“si_no” se ejecuta sí y sólo sí la condiciónresulta falsa. Esopcional.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 5/57
Quiz 1 – Errores comunes
si (a < b)
imprimir “a < b”
si_no (a > b)
imprimir “a > b”
si (a < b)
imprimir “a < b”
si_no si (a > b)
imprimir “a > b”fin_si
Método alternativo.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 6/57
Quiz 1 - Solución
inicioleer a, b
si (a > b)
imprimir “a es mayor que b”
si_nosi (a < b)
imprimir “a es menor que b”
si_no
imprimir “a es igual a b”fin_sifin_sifin
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 7/57
Quiz 1 – Solución alternativa
inicioleer a, b
si (a > b)
imprimir “a es mayor que b”si_no si (a < b)
imprimir “a es menor que b”
si_no
imprimir “a es igual a b”fin_sifin
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 8/57
Quiz 1 – Diagrama de flujo
a > b
a < b
a, b
imprimir “a > b”
imprimir “a < b”imprimir “a = b”
inicio
fin
V
V
F
F
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 9/57
Tarea 1
Escriba un algoritmo que tome un año y devuelva“verdadero” cuando el año sea bisiesto. La regla paralos años bisiestos según el calendario gregoriano es:
Un año es bisiesto si es divisible por 4, excepto el último de cada siglo (aquel divisible por 100), salvoque este sea divisible por 400.
Es decir los años que sean divisibles por 4 serán
bisiestos; aunque no serán bisiestos si son divisiblesentre 100 (como los años 1700, 1800, 1900 y 2100) ano ser que sean divisibles por 400 (como los años1600, 2000 ó 2400).
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 10/57
Tarea 1 - Solucióninicio
leer añosi ((año % 4) == 0)
si ((año % 100) == 0)
si ((año % 400) == 0)
bisiesto = truesi_no
bisiesto = falsefin_si
si_nobisiesto = true
fin_sisi_no
bisiesto = falsefin_si
fin
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 11/57
Tarea 1 – Solución alternativa
inicioleer año
si ((año % 4) == 0)
si ((año % 100) == 0)
bisiesto = (año % 400) == 0si_no
bisiesto = truefin_si
si_nobisiesto = falsefin_si
fin
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 12/57
Tarea 1 – Diagrama de flujo
a % 4 == 0
a % 100 == 0
a
bisiesto = a % 400 == 0
inicio
fin
VF
bisiesto = truebisiesto = false
VF
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 13/57
Tarea 1
Escriba el algoritmo para calcular
∑i2
con valores de i que van desde 1 hasta n.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 14/57
Tarea 1 - Solución
leer n
s = 0
i = 1 mientras i <= n
hagas = s + i * i
i = i + 1fin_mientras
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 15/57
Práctica
La oficina de Censos recibe N boletas con lasiguiente información:●Sexo: M = masculino, F = femenino●
Estado Civil : 1 = Soltero, 2 = Casado, 3 =Divorciado, 4 = Viudo, 5 = Unión LibreRealice un diagrama de flujo que capture lainformación de las N boletas y al final despliegue
la cantidad de hombres y la cantidad de mujeresque participaron en la encuesta, además lacantidad de personas por tipo de estado civil.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 16/57
Práctica
En una tienda se están dando descuentos en la compra, alos clientes de acuerdo a su tipo de cliente. Se reciben comodatos de entrada tipo de cliente y monto total de la compra;imprima el descuento que se le aplica a la compra y el nuevomonto al aplicar el descuento. Para al tipo de cliente utilice lasiguiente información:
Tipo 1 → 5 %Tipo 2 → 7 %
Tipo 3 → 9 %
Al final el algoritmo debe desplegar el valor acupulado por tipo de cliente y el monto total recibido por la tienda.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 17/57
Práctica
Un determinado trabajo tiene una duraciónde 30 días y se pagan $10.00 diarios; otrotrabajo también dura 30 días, pero se paga$1.00 el primer día, $2.00 el segundo día, yasí sucesivamente. Calcule y despliegue un
mensaje, indicando cuál trabajo está mejor pagado.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 18/57
Temas
* Estructuras de control secuencial: Asignación
* Estructuras de control selectivas: Desición simple,desición doble, desición simple/doble anidada, desiciónmúltiple.
* Estructuras de control repetitivas: mientras, repetir,bucles anidados.
Otros conceptos:
* Promedios, porcentajes, factorial, sumatorias,productorias.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 19/57
Modulo 2:Introducción a la
ProgramaciónThe computer programmer is a creator of universes for which
he alone is responsible. Universes of virtually unlimited
complexity can be created in the form of computer programs.― Joseph Weizenbaum, Computer Power and Human Reason
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 20/57
Software
software.
(Voz inglesa).
1. m. Inform. Conjunto de programas, instrucciones yreglas informáticas para ejecutar ciertas tareas en unacomputadora.
http://www.rae.es
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 21/57
Software
http://www.dilbert.com/
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 22/57
Programación
● Un programa es una secuencia deinstrucciones: la computadora las ejecuta enel orden que aparecen, una después de la otra.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 23/57
Programación
● Hay dos aspectos básicos de la programación:datos e instrucciones.
● Para trabajar con datos, es necesario entender
las variables y los tipos.● Para trabajar con instrucciones, es necesario
entender las estructuras de control y lassubrutinas.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 24/57
Programación
● Una variable es sólo una posición en lamemoria a la que se le ha dado un nombre ypuede ser fácilmente referida y usada en unprograma.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 25/57
Programación
● Las estructuras de control son instruccionesespeciales que pueden cambiar el "flujo decontrol". Hay dos tipos: bucles, los cualespermiten ejecutar una serie de instruccionesuna y otra vez y bifurcaciones, que permitedecidir entre dos o más cursos de acción.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 26/57
Programación
● Una subrutina es una serie de instruccionesagrupadas a la cual se le ha dado un nombre.El nombre es usado como un sustituto delconjunto de instrucciones.
● Las subrutinas permiten organizar losprogramas.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 27/57
Programación
Primer programa:Imprimir “hola, mundo” en la
terminal.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 28/57
Lenguaje de Máquina
● La CPU es la encargadade ejecutar losprogramas.
● Un programa es una lista
de instrucciones seguidosmecánicamente por lacomputadora.
● La CPU ejecuta
instrucciones escritas enun lenguaje muy simpleconocido como “lenguajede máquina”.
http://math.hws.edu/javanotes6/c1/s1.html
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 29/57
Lenguaje de Máquina
“hola, mundo” en lenguaje de máquina (en octal)
0000000 042577 043114 000401 000001 000000 000000 000000 0000000000020 000002 000003 000001 000000 101230 004004 000064 0000000000040 003524 000000 000000 000000 000064 000040 000007 0000500000060 000033 000030 000006 000000 000064 000000 100064 0040040000100 100064 004004 000340 000000 000340 000000 000005 0000000000120 000004 000000 000003 000000 000424 000000 100424 0040040000140 100424 004004 000023 000000 000023 000000 000004 0000000000160 000001 000000 000001 000000 000000 000000 100000 0040040000200 100000 004004 002124 000000 002124 000000 000005 000000
0000220 010000 000000 000001 000000 002124 000000 112124 004004
..., etc. (el listado completo ocupa 291 lineas)
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 30/57
Lenguaje Ensamblador
● Representa simbólicamente los códigos demáquina (mnemónicos).
● El “ensamblador ” es el encargado de traducir las
sentencias del lenguaje ensamblador al códigode máquina (la correspondecia es uno a uno).
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 31/57
Lenguaje Ensamblador
Algunas instrucciones:● add, sub, mul, div, rem
● push, pop
● and, or, xor, beq, not
● bne, blt, ble, bgt, bge
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 32/57
Lenguaje Ensamblador
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 33/57
Lenguaje Ensamblador
.file "hola.c".section .rodata.LC0:
.string "hola, mundo\n"
.text.globl main
.type main, @functionmain:
pushl %ebpmovl %esp, %ebpsubl $8, %espandl $-16, %espmovl $0, %eaxsubl %eax, %espsubl $12, %esppushl $.LC0call printfaddl $16, %espleaveret.size main, .-main.section .note.GNU-stack,"",@progbits.ident "GCC: (GNU) 3.3.2 20031022 (Red Hat Linux 3.3.2-1)"
Lenguajes de Programación de Alto
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 34/57
Lenguajes de Programación de AltoNivel
● Idioma artificial diseñado para expresar computaciones (cálculos).
● Está formado por un conjunto de símbolos y
reglas sintácticas y semánticas que definensu estructura y el significado de sus elementosy expresiones.
● Algunos lenguajes de programación de alto
nivel: C, C++, Pascal, Ada, Lisp, Prolog, Perl,Python, Java, PHP, BASIC, Logo, .NET, etc.
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n
Lenguajes de Programación de Alto
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 35/57
Lenguajes de Programación de AltoNivel
“Hola mundo” (escrito en C):
#include <stdio.h>
/* di hola */
int main(){
printf("hola, mundo");
return 0;
}
Lenguajes de Programación de Alto
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 36/57
Lenguajes de Programación de AltoNivel
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 37/57
Java
I won't program in Java anymore. I'm not Marxist and don't believe in classes. — phluid.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 38/57
Java
●
Java es un lenguaje orientado a objetos.● La unidad básica en Java (y en POO en general) es la clase.
● La clase es la plantilla con la cuál se crean objetos.
● Las clases contienen tanto campos (datos) como métodos(subrutinas).
● Por convención, los nombres de las clases siempre empiezancon mayúscula, por ejemplo, Object, Integer, String, Vector yJFrame son clases de Java.
● Las clases puedes estar relacionadas – “heredan” datos ysubrutinas de una clase más general.
● En Java, todas las clases son subclases de la clase Object.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 39/57
Java
●
Java es un lenguaje interpretado.● Los programas escritos en Java son compilados en un
lenguaje de máquina, pero para una máquina que NO existe (de allí que se le llame “Máquina Virtual ”).
● El lenguaje de máquina para la Máquina Virtual de Java es llamado bytecode.
http://download.oracle.com/javase/tutorial/getStarted/intro/definition.html
Edited by Foxit ReaderCopyright(C) by Foxit Software Company,2005-2007For Evaluation Only.
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 40/57
Java
class Hola1{
// di hola public static void main(String[] args){
System.out.println("hola, mundo");}
}
J
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 41/57
Java
D d ódi J
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 42/57
De pseudocódigo a Java
Números naturalesNúmeros reales
Booleanos
Carácter
Cadenas
intdouble
boolean
char
String
D d ódi J
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 43/57
De pseudocódigo a Java
●
Declaración de variables: Java requiere que sedeclaren que variables antes de que se usen.Para tipo de datos primitivos (int, double,boolean, char), la manera de hacerlo es
especificando el tipo y el identificador.Opcionalmente, se pueden inicializar (asignar un valor) – se recomienda hacerlo.
D d ódi J
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 44/57
De pseudocódigo a Java
●
Ejemplo de declaración de tipos de variable.int a; // declara una variable de tipo entero
int i, j, k; // declara tres variables
int b = 0; /* declara una variable de tipo
entero y le asigna el valor 0 */
double unValor = 1.0;
boolean bandera = true;
char ch = 's';
String mensaje = “hola, mundo”;
D d ódi J
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 45/57
De pseudocódigo a Java
Vamos a usar el siguiente esqueleto paranuestros programas de hoy:
import java.io.*; // para usar BufferedReader
class NombreDeClase
{
public static void main(String [] args)
{
// instrucciones} // fin del método main
} // fin de la clase
De pseudocódigo a Java
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 46/57
De pseudocódigo a Java
●
Imprimir:System.out.println(“esto es unacadena”);
De pseudocódigo a Java
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 47/57
De pseudocódigo a Java
●
Leer cadenas:String s;
BufferedReader in = newBufferedReader(newInputStreamReader(System.in));
try {
s = in.readLine();
} catch (IOException e) { }
De pseudocódigo a Java
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 48/57
De pseudocódigo a Java
●
Leer enteros:int n;
BufferedReader in = newBufferedReader(newInputStreamReader(System.in));
try {
n = Integer.parseInt(in.readLine());
} catch (IOException e) { }
De pseudocódigo a Java
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 49/57
De pseudocódigo a Java
●
Leer números reales.double d;
BufferedReader in = newBufferedReader(newInputStreamReader(System.in));
try {
d = Double.parseDouble(in.readLine());
} catch (IOException e) { }
De pseudocódigo a Java
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 50/57
De pseudocódigo a Java
●
Se pueden leer varios valores en un solobloque “try – catch”:
String s; int n; double d;
BufferedReader in = new BufferedReader(newInputStreamReader(System.in));
try {
s = in.readLine();
n = Integer.parseInt(in.readLine());d = Double.parseDouble(in.readLine());
} catch (IOException e) { }
Laboratorio 1
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 51/57
Laboratorio 1
●
Escriba un programa que lea un número de 4 digitos eimprima los millares, centenas, decenas y unidadesseparadas por espacios. Use el algoritmo desarrollado enclase. Llame el archivo “Laboratorio1.java” y guardelo enla carpeta c:\clase07 (creela de ser necesario).
● Abra una terminal (“Símbolo del sistema” o “Commandprompt”) y ejecute el comando “cd \clase07” (sin comillas).
● Compile el programa. Ejecute “javac Laboratorio1.java”.
●
Corra el programa. En la terminal, escriba “javaLaboratorio1”.
● Pruebelo con 1234. El resultado debe ser “1 2 3 4” (sin lascomillas).
De pseudocódigo a Java
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 52/57
De pseudocódigo a Java
si <condición>entonces
Acciones
fin_si
if (expresión) {// sentencias
} // fin_si
De pseudocódigo a Java
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 53/57
De pseudocódigo a Java
si <condicion>entonces
Acciones
si_noAcciones
fin_si
if (expresión) {// sentencias
} else {
// sentencias} // fin_si
De pseudocódigo a Java
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 54/57
De pseudocódigo a Java
si <condicion>entonces
Acciones
si_no si <condicion>Acciones
si_no
Accionesfin_si
if (expresión) {// sentencias
} else if (expresión) {
// sentencias} else {
// sentencias
} // fin_si
Laboratorio 2
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 55/57
Laboratorio 2
●
Escriba un programa que lea un número eimprima si se trata de un número par o de unnúmero impar. Utilice el algoritmo desarrolladoen clase. Llame el archivo “Laboratorio2.java” y
guardelo en la carpeta c:\clase07. Compilelo yejecutelo.
Laboratorio 3
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 56/57
Laboratorio 3
Escriba un programa que lea dos números a yb e imprima:
● “a es mayor que b”
●
“a es menor que b”● “a es igual a b”
Según sea el caso. Use el algoritmo
desarrollado en el quiz 1. Llame el archivo“Laboratorio3.java” y guardelo en la carpetac:\clase07. Compilelo y ejecutelo.
Laboratorio 4
5/7/2018 04_lenguajes_de_programacion - slidepdf.com
http://slidepdf.com/reader/full/04lenguajesdeprogramacion 57/57
Laboratorio 4
Escriba un programa en Java que lee un año eimprima en la terminal si se trata de un añobisiesto (“es bisiesto”) o no (“no es bisiesto”).Use el algoritmo desarrollado en la tarea.
Llame el archivo “Laboratorio4.java” y guardeloen la carpeta c:\clase07. Compilelo y ejecutelo.