departamento de computación instituto de matemáticas y física. universidad de valparaíso 1...
TRANSCRIPT
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
1
Introducción a la programación
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
2
Introducción a la programación
• Los programas son escritos por programadores, es decir, seres humanos que le dicen al computador, paso a paso, exáctamente qué es lo que quieren que haga.
• La programación tiene un poco de ciencia y poco de arte, de ahí que varios programadores pueden hacer la misma tarea de diferentes formas.
• A pesar de ello, hay un número claramente identificable de pasos que siempre están involucrados en el proceso de desarrollo de programas.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
3
Ciclo de vida del software
• Pasos involucrados en el desarrollo de programas:– Definir el problema– Planear la solución– Construir la solución
• Codificar• Depurar• Probar
– Mantener la solución
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
4
Definir el problema
• Identificar claramente– ¿Qué es lo que se quiere hacer?– ¿Cuáles son los objetivos a alcanzar?
• A esta actividad también se le conoce como análisis
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
5
Planear la solución
• Aquí ya se sabe lo que se quiere hacer, pero hay que planear cómo hacerlo.
• Se requiere un plan detallado, con todas las especificaciones que guiarán los pasos siguientes.
• También se le llama Etapa de Diseño, dividida en:– Diseño Global– Diseño Detallado
• El producto final es una descripción detallada de los pasos a llevar a cabo; este conjunto de pasos se conoce como algoritmo.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
6
Construir la solución
• Aquí se convierte el plan en un programa computacional, con los siguientes pasos:– Codificar: traducir los algoritmos a un lenguaje de
programación
– Depurar: consiste en localizar y remover los errores que pueda contener el programa codificado.
– Probar: Se pone a prueba el programa, para ver si realmente hace lo que se quiere. Es decir, se comparan los resultados que éste arroja con los que debiera arrojar.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
7
Mantener la solución
• Como todo producto, un programa (o sistema) debe ser mantenido, adaptándolo a cambios del medio ambiente o agregándole nuevas capacidades que antes no tenía.
• Este conjunto de pasos permite producir programas de manera más o menos eficiente. Puede requerirse volver a alguno de los pasos anteriores en caso de errores o cambios de diseño.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
8
Algoritmos
• Es un conjunto finito de pasos (instrucciones) bien definidos, dispuestos en una secuencia tal que lleve a la solución de un problema específico.
• Algunos ejemplos de algoritmos son: recetas de cocina, etiquetas de envases, direcciones de amigos, mapas de ruta, etc.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
9
Algoritmos
• Ejemplo: Instrucciones de uso del champú en la etiqueta.– Humedezca el cabello– Aplique el champú– Frote hasta obtener abundante espuma– Enjuague– Repita
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
10
Algoritmos
• El nivel en que presentamos un algoritmo depende de la audiencia.
• Las indicaciones de un algoritmo incluyen sentido común. Una interpretación literal del ejemplo anterior haría repetir el lavado de pelo continuamente hasta que se acabe la botella.
• Lo que en realidad quiere expresar es que “REPITA si es necesario”.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
11
• Los computadores interpretan sus instrucciones muy literalmente. Por esto se debe indicar los pasos en forma detallada, aún cuando un paso sea muy obvio.
• Un algoritmo es una idea abstracta, independiente de cualquier máquina que pueda ejecutarlo.
• Un programa de computador es una implementación de un algoritmo en un lenguaje de programación particular.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
12
Carcaterísticas de un algoritmo
• Debe realizar el proceso requerido• Ser completo, es decir, entregar los resultados en
todas las circunstancias• Ser preciso, no debe tener resultados ambiguos• Correcto• La solución debe entregarse en un número finito
de pasos• Simple y claro.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
13
Algoritmo del lavado de pelo
1. Humedezca el cabello
2. Aplique el champú
3. Frote hasta obtener espuma
4. Enjuague
5. Si es necesario, Ir al paso 2. Sino Ir al paso 6
6. Termine.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
14
• Problema:
• Tenemos datos de niños recién nacidos, entre ellos: sexo, peso, estatura y día de nacimiento. Se pide determinar el total de varones con un peso superior a 3900 kg; indicar el total de damas con una estatura mayor que 50 cm.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
15
• Solución:1. Tomar tarjeta2. ¿Es sexo masculino?
Si: ir a 3No: Ir a 6
3. ¿Es peso > 3900 gr.?Si: ir a 4No: ir a 8
4. Contabilizar hombre5. Ir a 86. ¿Es estatura > 50 cm?
Si: Ir a 7No: Ir a 8
7. Contabilizar mujer8. ¿Hay más fichas?
Si: Ir a 1No: Ir a 9
9. Resultados10. Fin.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
16
Algoritmos
• Ejercicio 1:
• Transformar una cantidad en pesos chilenos en su equivalente en dólares.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
17
• Ejercicio 2:
• La densidad del hombre en Kg. por litro es 0.97. El volumen de la persona se calcula con la fórmula
Volumen =peso/0.97
Haga un algoritmo que lea el peso de una persona y calcule su volumen.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
18
Algoritmos
• Ejemplo: Calcular las raíces de una ecuación de segundo grado ax2+bx+c=0
• Dados los valores de a,b y c => encuentre x1 y x2
• Para resolver este problema se debe seguir los siguientes pasos:
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
19
Algoritmos– Inicio– Leer los coeficientes a, b y c.– Si a=0 la ecuación lineal, entonces se debe
calcular y escribir un aviso.– Sino, es cuadrática por lo tanto se debe calcular
las raíces con los siguientes pasos:– Calcular el discriminante (b2 - 4ac)
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
20
Algoritmos
– Si el discriminante es negativo entonces las raíces son imaginarias, por lo tanto se debe escribir un mensaje indicándolo.
– Sino, si el discriminante es 0, entonces existe una única solución real, la cual se debe escribir.
– Sino (discriminante positivo), las raíces son reales, entonces calcular x1 y x2 según la fórmula.
– Escribir el valor de x1 y x2– Terminar.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
21
Diagramas de flujo
• Representación Gráfica de la lógica de un programa.
• Esta definido por un conjunto de símbolos, los cuales están conectados mediante flechas que indican el flujo de los datos.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
22
SIMBOLO NOMBRE SIGNIFICADO
PROCESOLleva a cabo una acción. Por ejemplo,sumar dos números y almacenar elresultado en otra variable.
DECISIONSe evalúa una condición, y, según elresultado (Verdadero o Falso), se tomauno de los caminos alternativos dados acontinuación.
ENTRADA/SALIDA
Ejecuta una operación de Entrada/Salida, entre el programa y undispositivo cualquiera.
INICIO/TERMINO
Indica el inicio o término del programa
CONECTORDE FLUJO
Permite conectar dos líneas de flujo enuna sola.
INVOCACIÓNA SUBRUTINA
Transfiere el control a una subrutina,esta es ejecutada, y luego el control esdevuelto al módulo que la invocó.
FLUJO Indica la dirección del flujo.
ACCION
CONDICIÓN
OPERACION
NOMBRESUBRUTINA
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
23
• Con estos elementos se puede identificar:
– Qué pasos se llevan a cabo (Símbolos)
– En qué orden se ejecutan (Líneas)
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
24
• La construcción de los diagramas se realiza utilizando los elementos antes descrito y dependerá de lo que se quiera implementar, la manera de dibujar dichos elementos, es decir se puede construir:
• secuencias• selección• iteración
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
25
Acción 2
Acción 1
Acción 3
SECUENCIA
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
26
Escribir ‘Ingrese un entero:’
Leer(num)
Escribe a la pantalla
Lee un valor desde el teclado
ENTRADA/SALIDA
num num+1
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
27
acción F
condic.
acción V
FALSO VERDADERO
...
Selector
acción nacción 1 acción 2
valor nvalor 1 valor 2
SELECCION
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
28
condic.
acción V
F
V
condic.
acción
V F
Iteración
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
29
Condiciones
a) SI condición ENTONCES acción
FIN_SI
b) SI condición ENTONCES acción1
SINO acción2
FIN_SI
acción F
condic.
acción V
FALSO VERDADERO
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
30
FALSO
edad>18
VERDADERO
‘Mayor’‘Menor’
SI edad>18 ENTONCES ESCRIBIR(‘Mayor’)SINO ESCRIBIR(‘Menor’)FIN_SI
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
31
condic.
acción
V F
a) REPITA-HASTA
HACER
acción1
acción2
...
acciónN
MIENTRSA condición
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
32
b) MIENTRAS-HACER
MIENTRAS condición HACER
acción1
acción2
...
acciónN
FIN_MIENTRAS
condic.
acción V
F
V
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
33
Diagramas de N-S• Diagramas de Nassi - Schneiderman• Compuesto no por líneas si no por cajones uno
sobre el otro, que indican la secuencia de acciones a realizar.
• Al igual que los diagramas de flujo, es posible representar 3 acciones:
• secuencia• selección• iteración
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
34
acción 1
acción 2
acción n
.
.
.
Secuencia
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
35
condiciónS N
acción 1 acción 2
...valor 1 valor 2 valor n
acc 1 acc 2 acc n ...
Selector
SELECCION
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
36
condición
acción
condición
acción
ITERACION
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
37
Pseudolenguaje
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
38
Pseudolenguaje
• Para escribir algoritmos de computador es conveniente usar pseudolenguaje o pseudocódigo, el cual posee sentencias precisas, tales como:– LEER
– ESCRIBIR
– SI-ENTONCES-SINO
– MIENTRAS-HACER
– REPITA-HASTA
– etc.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
39
Pseudolenguaje
1.- Estructura de un algoritmo en pseudolenguaje:
ALGORITMO nombre_algoritmoDECLARO
CONSTANTE nombre_const=valorVARIABLE nombre_valor: tipo_de_dato
INICIO <cuerpo del algoritmo>
FIN
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
40
Pseudolenguaje2.- Acciones en cuerpo del algoritmo
• De entradaLEER (variable)
LEER (var1, var2, var3)
Lee desde el teclado
Escribe en la pantalla
• De salidaESCRIBIR(variable)ESCRIBIR(var1,var2,var3)ESCRIBIR(‘El resultado es’, var)
• De asignación: asocia un valor a una variablevariable valor
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
41
Pseudolenguaje3.- Condiciones
a) SI condición ENTONCES acción
FIN_SI
b) SI condición ENTONCES acción1
SINO acción2
FIN_SI
c) SI condición ENTONCES INICIO
Acción1Acción2...AcciónN
FIN SINO INICIO
Acción1Acción2...AcciónN
FINFIN_SI
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
42
Pseudolenguaje
a) HACER-MIENTRAS
HACER
acción1
acción2
...
acciónN
MIENTRAS condición
b) MIENTRAS-HACER
MIENTRAS condición HACER
acción1
acción2
...
acciónN
FIN_MIENTRAS
4.- Iteraciones
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
43
Pseudolenguaje
INICIOESCRIBIR(‘Ingrese su edad:’)LEER(edad)SI edad>18 ENTONCES
ESCRIBIR(‘Es mayor de edad’)SINO
ESCRIBIR(‘Es menor de edad’)FIN_SI
FIN
Uso del SI-ENTONCES.Ejemplo 1: Hacer un algoritmo en pseudocódigo que indique si una persona es mayor o menor de edad.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
44
INICIOESCRIBIR(‘Ingrese un número:’)LEER(num)SI num>0 ENTOCES
ESCRIBIR(‘Es positivo’)SINO
SI num<0 ENTONCESESCRIBIR(‘Es negativo’)
SINOESCRIBIR(‘Es el neutro’)
FIN_SIFIN_SI
FIN
Ejemplo 2: Hacer un algoritmo que lea un número e indique si es positivo o negativo
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
45
INICIO
LEER (a,b,c)
SI a=0 ENTONCES
ESCRIBIR( “Ecuación lineal, el resultado es:”, -c/b)
SINO
discriminante (b2 - 4ac).
SI discriminante < 0 ENTONCESESCRIBIR( “Las raíces son imaginarias”)
SINOSI discriminante = 0 ENTONCES
ESCRIBIR( “existe única raíz:” -b/(2*a))
SINO x1 (-b +SQRT(discriminante))/(2*a))
x2 (-b – SQRT(discriminante))/(2*a))
ESCRIBIR(“las raices son:” x1, x2) FIN_SIFIN_SI
FIN_SIFIN
Ejemplo 3: cálculo de la ecuación de 2do. grado
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
46
PseudolenguajeUso de REPITA-HASTA
• Ejemplo 1: Haga un algoritmo que lea repetitivamente números enteros y termine cuando se ingrese el 0.
INICIOHACER
LEER(num)MIENTRAS (num<>0)
FIN
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
47
PseudolenguajeUso de un contadorEjemplo 2: Haga una algoritmo que lea 10 números enteros y escriba en
pantalla los positivos.
INICIOi0HACERii+1LEER(num)SI num>0 ENTONCESESCRIBIR (num)FIN_SI
MIENTRAS (i<10)FIN
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
48
Ejemplo 3: Haga un algoritmo que lea números enteros e indique cuántos positivos se ingresaron. El programa debe terminar cuando se haya ingresado 10 números positivos o cuando se haya ingresado el 0.
INICIOcont 0HACER
LEER(a)SI a>0 ENTONCEScont cont+1FIN_SI
MIENTRAS (a <> 0 AND cont <> 10)FIN
El y lógico en pseudolenguaje es
AND
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
49
Tipos de DatosAritméticos
ENTERO : conjunto de números enterosREAL : conjunto de números reales
LógicosBOOLEANO : puede tener dos valores:
Verdadero o FalsoTexto
CARACTER : Letras: A-Z, a-zdígito: 0-9signo:’+’,’-’,’_’, etc.
STRING : Secuencia de caracteres
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
50
• Ejemplo 1:
ALGORITMO define_edadDECLARO
edad: ENTEROINICIO
ESCRIBIR(‘Ingrese su edad:’)LEER(edad)SI edad>18 ENTONCES
ESCRIBIR(‘Es mayor de edad’)SINO
ESCRIBIR(‘Es menor de edad’)FIN_SI
FIN
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
51
Ejemplo 2: Cálculo del perímetro de una circunferencia
ALGORITMO perimetro_cincunfDECLARO
CONSTANTE pi=3.1415VARIABLE radio,perim: real
INICIOESCRIBIR(‘ingrese el radio de la circunferencia:’)LEER(radio)perim 2 * pi * radioESCRIBIR(‘El perímetro es:’, perim)
FIN
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
52
Ejemplo 3: Haga un algoritmo en pseudocódigo que lea nombre, edad y sexo de una persona. Si es hombre mayor de 45 años recibe un bono de $10000 pesos, si es mujer mayor de 35 recibe un bono de $20000.
ALGORITMO bonoDECLARO VARIABLES
nombre : STRINGedad : ENTEROsexo : CARACTERbono : REAL
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
53
INICIObono 0LEER(nombre, edad, sexo)SI edad>45 AND sexo=‘M’ ENTONCES
bono10000SINO
SI edad>35 AND sexo=‘F’ ENTONCESbono 20000FIN_SI
FIN_SIESCRIBIR(nombre, ‘recibe: $’, bono)
FIN
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
54
OperadoresAritméticos
Símbolo Significado Operandos Resultado
+ Adición enteros,reales Entero, real
- Sustracción Enteros, reales Entero, real
* multiplicación Enteros, reales Entero, real
/ división Enteros, reales Cuociente real
DIV división enteros Cuociente de la división entera
MOD división enteros Resto de la división entera
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
55
Operadores
Símbolo Significado Operandos Resultado
= Igualdad
aritmético lógico<> Desigualdad
< Menor que
<= Menor o igual que
> Mayor que
>= Mayor o igual que
Relacionales
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
56
Operadores
Símbolo Significado Operandos Resultado
AND ‘y’ lógico
lógicos lógicoOR ‘o’ lógico
NOT negación
Lógicos ( o booleanos)
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
57
Tablas de verdadV AND V V
V F F
F V F
F F F
V OR V V
V F V
F V V
F F F
NOT V F
F V
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
58
Precedencia
NOT 1 (mayor)
* / div mod AND 2
+ - OR 3
= <> > >= < <= 4
Ejemplo:1. 4+ 5*8 Primero se desarrolla el producto (5*8),
porque * tiene mayor precedencia que +.2. a/b/c Se interpreta como (a/b)/c. Cuando los
operadores tienen la misma precedencia se desarrolla de izquierda a derecha.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
59
Ejemplo: Un algoritmo tiene las siguientes declaraciones
DECLAROa, b, c : ENTEROx,y : REALs : STRINGletra : CARACTERsigo : BOOLEANO
Diga se las siguientes instrucciones son correctas o falsas:1.- c x*y FALSA2.- c a/b FALSA3.- sigo ‘FALSO’ FALSA4.- letra ’3’ VERDADERA5.- a x MOD b FALSA
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
60
EjercicosEvaluar las siguientes expresiones aritméticas:1. 2 * 3 + 4 * 52. 15 DIV 4 * 43. 15 DIV ( 4 * 4 )4. 8 MOD 3 DIV 25. 2 + 3 * 4 - 56. 80 / 5 / 37. 4 / 2 * 38. -x + y / z = (-x) + (y / z)9. (8 + 7 >= 15) AND (4 < 5) OR (3 < 2 + 4)10. x <= y OR y > x
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
61
Ejercicios
• Se tienen 3 variables booleanas a, b y ca Falsob Verdaderoc Verdadero
• Determine el valor de b para las siguientes asignaciones
1. b (a<>c) OR (a>=c)2. b a OR NOT b OR c3. b (a<b) AND (c OR a)
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
62
Programación
• Programación Modular– Existe complejidad en los problemas que se
manejan comúnmente, por lo tanto se usa la sentencia… “Dividir para Vencer”, es decir dividir el problemas en subproblemas mas simples de enfrentar, para hacer esto existe la programación modular.
– Exige uso de abstracción.
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
63
Programación
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
64
Sea un curso de 30 alumnos con 4 notas semestrales (25%c/u), de las cuales tres son certámenes y una tarea. Paratomar en cuenta las tareas, el alumno deberá tener a lomenos un 4.5 de promedio en los certámenes. Además, lanota de la tarea podrá exceder en, a lo más, 1.5 puntos alpromedio de los certámenes para ser considerada. Se pidecalcular el promedio semestral de cada alumno y del cursocompleto. Además, se quiere saber el nombre y elpromedio del alumno de mejor y peor rendimiento. Paracada alumno se tienen los siguientes datos:
EJEMPLO
Departamento de ComputaciónInstituto de Matemáticas y Física.
Universidad de Valparaíso
65
NombreCertamen 1Certamen 2Certamen 3Tarea
INICIALIZAR variablesPARA cada alumnoHACER
LEER datos alumnoCALCULAR promedio alumnoDETERMINAR situación académica del alumnoSUMAR promedio alumnoDETERMINAR si es el mejor o peor promedio
CALCULAR y ESCRIBIR resultados