Documente Academic
Documente Profesional
Documente Cultură
Antes de empezar a programar computadores es necesario adquirir algunos conceptos
fundamentales para dicha tarea. Con el fin de no enfrentar al tiempo el aprendizaje de tantos
temas nuevos, primero se hace el trabajo en un lenguaje algorítmico que se va definiendo
poco a poco, de tal forma que el conocimiento se adquiera de forma gradual y firme. En este
libro sólo se trabaja con lenguaje algorítmico, es decir, sólo se hace uso de papel y lápiz; el
aprendiz está concentrado en un solo asunto. Sin embargo, continuamente se hace referencia
al computador (o máquina) porque el fin es prepararse para programarlo. El lenguaje
algorítmico no dependerá de ninguna máquina en especial.
Retirar dinero de un cajero automático es una tarea que los seres humanos realizan cada vez
con más frecuencia. Para llevarla a cabo, grosso modo se realizan las siguientes acciones:
Insertar la tarjeta
Seleccionar el idioma
Ingresar la clave
Seleccionar la operación por realizar
Ingresar los datos de acuerdo con la operación seleccionada
Obtener el resultado de la
l a operación
Este conjunto de acciones realizadas con un fin determinado, en dicho orden, es lo que se
llama algoritmo.
Un lenguaje algorítmico permite plasmar de manera clara, a través de sus herramientas, los
pasos o instrucciones contemplados en un algoritmo. En general, un lenguaje algorítmico es
bastante laxo con respecto a un lenguaje de computador porque lo que se quiere con él es
expresar las ideas de una forma parecida pero no tan formal a como lo hace un lenguaje que
entiende el computador. Sin embargo, en este libro el lenguaje algorítmico que se utiliza es
sencillo pero bastante formal con el fin de que constituya una verdadera preparación para
iniciar el aprendizaje de un lenguaje de computador. Las personas con algún grado de
ilustración en programación de computadores encontrarán que el lenguaje algorítmico
utilizado en este libro contempla muchos temas que en general se cubren sólo cuando se está
trabajando con un lenguaje de computador.
No existe un solo lenguaje algorítmico, sería como pensar que todos los seres humanos se
expresan igual. Lo que sí es importante en este primer curso de Programación de
Computadores es que el estudiante sea disciplinado en el uso del lenguaje que está trabajando
en su clase. Los frutos de esa disciplina se verán cuando haga sus prácticas con un lenguaje
de computador. La utilización del lenguaje algorítmico será un paso intermedio en la
verdadera comunicación del estudiante con el computador.
Los seres humanos ejecutan algoritmos permanentemente. Lo que pasa es que no son
conscientes de ello. Por ejemplo, hacer una carrera profesional es un algoritmo, ¿verdad?
Cada acción que se ejecuta para lograr la meta de obtener un título profesional se llamará
instrucción en el lenguaje algorítmico y tendrá una sintaxis determinada, esto es, habrá que
expresarla de una forma no ambigua, que el lenguaje algorítmico entienda.
Para empezar, todo algoritmo tendrá la siguiente estructura:
donde y son delimitadores del cuerpo del algoritmo. Ellos indican en
dónde empieza y en dónde termina pero no implican la ejecución de acción alguna. Sin
embargo su uso es obligatorio.
Un lenguaje algorítmico permite plasmar de manera clara, a través de sus herramientas, los
pasos o instrucciones contemplados en un algoritmo. En general, un lenguaje algorítmico es
bastante laxo con respecto a un lenguaje de computador porque lo que se quiere con él es
expresar las ideas de una forma parecida pero no tan formal a como lo hace un lenguaje que
entiende el computador. Sin embargo, en este libro el lenguaje algorítmico que se utiliza es
sencillo pero bastante formal con el fin de que constituya una verdadera preparación para
iniciar el aprendizaje de un lenguaje de computador. Las personas con algún grado de
ilustración en programación de computadores encontrarán que el lenguaje algorítmico
utilizado en este libro contempla muchos temas que en general se cubren sólo cuando se está
trabajando con un lenguaje de computador.
No existe un solo lenguaje algorítmico, sería como pensar que todos los seres humanos se
expresan igual. Lo que sí es importante en este primer curso de Programación de
Computadores es que el estudiante sea disciplinado en el uso del lenguaje que está trabajando
en su clase. Los frutos de esa disciplina se verán cuando haga sus prácticas con un lenguaje
de computador. La utilización del lenguaje algorítmico será un paso intermedio en la
verdadera comunicación del estudiante con el computador.
Los seres humanos ejecutan algoritmos permanentemente. Lo que pasa es que no son
conscientes de ello. Por ejemplo, hacer una carrera profesional es un algoritmo, ¿verdad?
Cada acción que se ejecuta para lograr la meta de obtener un título profesional se llamará
instrucción en el lenguaje algorítmico y tendrá una sintaxis determinada, esto es, habrá que
expresarla de una forma no ambigua, que el lenguaje algorítmico entienda.
Para empezar, todo algoritmo tendrá la siguiente estructura:
donde y son delimitadores del cuerpo del algoritmo. Ellos indican en
dónde empieza y en dónde termina pero no implican la ejecución de acción alguna. Sin
embargo su uso es obligatorio.
Los delimitadores y son las dos primeras palabras reservadas de este
lenguaje. Una palabra reservada es aquella
aquella que tiene un significado
significado especial
especial dentro del
lenguaje y por lo tanto tiene un uso restringido.
El cuerpo del algoritmo, como se verá más adelante, está conformado por instrucciones
ejecutables y no ejecutables, encargadas en general de la reserva de memoria, obtención o
entrada de los datos, procesamiento de esos datos y emisión o presentación de resultados.
CUERPO DE UN ALGORITMO
Entrada Salida
Procesamiento
El nombre del algoritmo puede estar compuesto por caracteres alfanuméricos y por el
caracter de subrayado ( _ ) y debe empezar con una letra. Los caracteres alfabéticos con tilde
no son válidos.
Palabras reservadas
$%!%&'(
Son lugares de memoria donde se pueden almacenar datos. Se llaman así precisamente
porque su contenido puede variar. Toda variable tiene tipo, nombre y contenido. El tipo
puede ser entero, real, caracter o cadena de caracteres. Su nombre debe contener sólo
caracteres alfanuméricos y el el caracter de subrayado
subrayado ( _ ) y tiene que empezar
empezar con caracter
alfabético; los caracteres alfabéticos con tilde no son válidos. Su contenido está estrecha-
mente ligado al tipo.
Tipo: De qué naturaleza es el dato que se puede almacenar.
Nombre: Cómo hacer referencia a un espacio de memoria específico.
Contenido: Qué dato hay almacenado.
Los nombres de las variables deben ser significativos de tal forma que den una idea de su
contenido. Por ejemplo, si se quiere guardar un promedio, la variable debería llamarse
o en lugar de . Esto como una ayuda para quien construye o modifica el
algoritmo (un ser humano), no porque a la máquina le afecte.
donde el tipo de variable puede ser: entero, real, caracter o cadena_de. Las variables de la
lista se separan con el caracter coma ( , ).
Ejemplo:
#
Este algoritmo “no hace nada”, nada visible por lo menos. La siguiente tabla contiene el
significado de cada una de esas instrucciones declarativas.
Declaración Significado
Se solicita espacio en memoria para guardar tres números
enteros en las variables llamadas , y ,
respectivamente.
Se solicita espacio en memoria para guardar un número
real en la variable llamada .
Se solicita espacio en memoria para guardar dos
caracteres en las variables llamadas y ,
respectivamente. Un caracter puede ser numérico,
alfabético, gráfico, de puntuación, etc.
Se solicita espacio en memoria para guardar una cadena
de caracteres, esto es, una palabra o una frase. El valor
constante 8 determina el número máximo de caracteres
que puede almacenarse en esa variable. Así que la variable
podría contener la palabra servir pero no la palabra
justiciero.
Al ejecutar este algoritmo, se genera lo que desde ahora se llamará el entorno de memoria.
El entorno de memoria puede visualizarse como una tabla que contiene toda la información
de las variables que se declaran en un algoritmo. Esa información consiste en el nombre de la
variable, el tipo y el contenido. El entorno existe mientras el algoritmo se esté ejecutando.
Una vez termina, la memoria reservada es liberada.
+
En un mismo algoritmo, una variable no puede ser de más de un tipo. Sería como pretender
que hubiera más de un norte.
Palabras reservadas
Variables numéricas: son de tipo entero o real y pueden ser operandos en expresiones
aritméticas o matemáticas.
Supóngase ahora que el tipo de la variable no es numérico. Esto es, la variable es de tipo
caracter o de tipo cadena de caracteres. En estos casos hay que tener en cuenta lo siguiente:
,
Supóngase que se tiene una variable llamada y se quiere que su contenido sea . Para
hacerlo, se daría la instrucción de asignación
no son válidas porque el operador no existe. La segunda instrucción, además, carece de
sentido.
que significa hacer una copia de la variable en la variable . El contenido de la variable
(definido o no) es cambiado por el contenido de la variable (definido o no). Supóngase que
se tiene el siguiente entorno de memoria en la ejecución de cierto algoritmo:
.
Obsérvese que la instrucción de copia ( ) no tiene ningún efecto sobre la variable .
sería el cambio del contenido de la variable (basura) por . Tomar una copia del contenido
de las variables (basura) y (), sumarlas y asignar el resultado a la variable . El entorno
quedaría así:
Variable Tipo Contenido
Porque un contenido “basura” operado con cualquier otra cosa, da basura. Cuando se tienen
instrucciones como
#
se debe verificar que la variable haya sido inicializada. Inicializar una variable significa
definir su contenido, lo cual hasta este momento sólo se puede hacer con una instrucción de
asignación.
También es posible que el valor que se quiera asignar a una variable sea el resultado de
evaluar una expresión aritmética o matemática. Por ejemplo, se quiere que el nuevo valor de
la variable sea el resultado de sumar los números 7 y 20.
La suma de 7 y 20 se expresa como 7+20. En este caso, se requiere poder hacer uso del
operador de suma.
/
Suma + Resta –
Multiplicación * División /
Por el enunciado del problema, el resultado se debería guardar en una variable de tipo entero
porque la suma de dos enteros da un entero, pero también se podría declarar real ( ¿por
?
qué ).
$%&'
$#&'
Los valores 7 y 20 son sumados. Luego se busca en el entorno de memoria una variable
llamada , si existe, se modifica su contenido con el valor 27 y el entorno quedaría así:
Luego se ejecuta la instrucción que indica la terminación normal del algoritmo y que
conlleva la liberación de la memoria reservada a través de la declaración de variables. Que la
memoria reservada se libere significa que ya no se tendrá acceso a esa área de memoria a
pesar de que los datos pueden continuar existiendo ahí porque a otro algoritmo no se le ha
asignado ese mismo espacio.
0
Si la variable no existe, se hace imposible continuar con la ejecución del algoritmo y
ésta se termina anormalmente. A la terminación anormal de la ejecución de un algoritmo se le
llama comúnmente “aborto”. Algoritmo que se respete no debe abortar.
Aunque la expresión 20+7 es válida, no tiene sentido poner a la máquina a computar algo que
ya uno sabe cuanto da. Es decir, ¿cuál es la razón para no asignar de una vez el valor 27?
Obsérvese que el algoritmo $%&' sólo sirve para sumar los números 7 y 20.
¿Cuántos algoritmos parecidos pero diferentes habría que hacer para disponer siempre de
uno que sume dos números enteros cualesquiera ? ¿Sería posible ? ¿Tendría sentido ?
$%&'
( &
( $
& &'
(#&
En ( y & se almacenan los sumandos $ y &', respectivamente, y luego se almacena
el resultado en la variable .
5
Luego se ejecuta la instrucción que indica la terminación normal del algoritmo y que
conlleva la liberación de la memoria reservada a través de la declaración de variables.
Cuando se hace una operación básica en la máquina y por lo menos uno de los operandos es
de tipo real, el resultado es de tipo real. Esto es, si los operandos involucrados en una
operación son todos enteros, el resultado será un entero.
El operando no necesariamente es una variable, podría ser una constante. En este último caso,
la regla se aplica de la misma forma.
Operandos Resultado
Instrucción Observaciones
( # & entero entero entero En el caso de la división, cuando los dos
( ) & entero real real operandos son enteros, lo que ocurre
( * & real entero real es que se trunca la parte decimal del
( + & real real real resultado. Así, ½ es igual a 0 y no a 0.5.
Una constante numérica es entera (no tiene parte decimal) si pertenece al conjunto de los
números enteros. En caso contrario es real así su parte decimal sea cero. En la máquina, la
parte decimal se indica con punto (.) y no con coma (,).
Supóngase que las variables ( y & son enteras y que ! es real.
Operandos Resultado
Operación Observaciones
Por lo menos uno de los
( # & ) ! 4 7 13.8 -2.8 operandos es real, por lo tanto el
resultado es un real.
(+ & # ('( 6 4 102 Como ( y & son enteras,
(+& da ( y no 1.5.
Aunque ( es entero (+&' da
! * & ) (+&' 5 5 2 1.5 & porque &' es una constante
real.
Como & es una variable entera
( # &+! 17 14 21 y ! es una constante entera, &+!
da un entero.
← !"
← #!$
← !!
← %&'(
← !#
← &!(#
← !$
← !!'
$ 0 1 2 3*
4 4
1 5 /6"
/
! /-!
2
$ 62
7 2 3 " 3 2 78 2
22
" 78 2 9 / : ; 2
9 2 < : 2 3
22
=82>
"
!
2
=82>
2
2
2!
2
=82$>
2
$
$"
" %% ? *
$ %% ? *
!!$#$
2
=82>
2
$
$"
" %% ? *
$ %% ? *
&!!$(#$
2
@: 2 82$ 82 @A 9
• 52
• A
• 4
C : 2 *
7 2 2 2 ;
2$ 2 2
! 8 7 2
8
#
Volviendo al algoritmo que suma dos números determinados, lo ideal sería contar con uno
que permitiera sumar dos números enteros cualesquiera, de lo contrario, programar
computadores no pasaría de ser una tarea interesante.
Para poder hacer esto, tiene que haber interacción entre el usuario y el computador para que
sea posible especificar los números por sumar. Obsérvese que hasta este momento esa
interacción no existe, ni siquiera había sido mencionada.
+
Para que exista interacción entre el usuario y el computador es necesario que haya
instrucciones que permitan que éste “hable” con la máquina y que ella le “responda” y
viceversa.
Las instrucciones que permiten la interacción entre el usuario y la máquina son las llamadas
instrucciones de entrada o salida.
Las instrucciones de entrada o salida son las de lectura o escritura y están estrechamente
relacionadas con los dispositivos de entrada o salida. En este libro se trabajará con el teclado
como dispositivo de entrada y con la pantalla como dispositivo de salida, por ser éstos los
más utilizados y conocidos.
Cuando se necesita que haya comunicación entre el usuario y la máquina, a través del
usuario, se ejecuta una instrucción de lectura, el usuario tiene la palabra (teclado). Si la
comunicación se hace a través de la máquina, se ejecuta una instrucción de salida, la máquina
“tiene la palabra” (pantalla).
,
Ejemplo:
Con frecuencia se oye decir “se lee la variable” cuando lo que realmente pasa es que
se lee en la variable.
• escriba
Ejemplo:
El efecto de estas instrucciones es escribir en la pantalla el contenido de las
variables que aparecen en la lista ( y , en el primer caso, o en el segundo).
Si no existen, la ejecución del algoritmo se terminará anormalmente y si
existen pero no han sido inicializadas, se mostrará el valor “basura” que
contengan el cual puede ser cero o espacio en el mejor de los casos.
• escriba “mensaje”
Ejemplo:
.
Ejemplo:
&#!.
Ejemplo:
Ahora que ya hay interacción entre el usuario y la máquina, se puede volver al problema de
sumar dos números cualesquiera.
/
Como no se especifica qué clase de números se sumarán, se puede suponer que son enteros o
que son reales. En el segundo caso, se tendría un mayor alcance ( ¿por qué?).
¿Qué variables se necesitan?
Se necesitan dos variables para guardar los sumandos y una para guardar el resultado. En el
algoritmo solución se supondrá que los números son enteros.
( &
2 3 4 5
6 7 4
(
6 7 4
&
(#&
( # & .
8 79
Al diseñar los mensajes para la instrucción escriba, no se debe olvidar que la comunicación se está
haciendo con un ser humano y que por lo tanto deben ser escritos en el lenguaje natural de la persona.
Suele pasar que los mensajes carecen de calidez porque se está pensando en la máquina. Tampoco es
conveniente incluir términos propios del lenguaje que son innecesarios y pueden confundir al usuario.
Por ejemplo:
Obsérvese que en este algoritmo no se puede decir que el contenido final de la variable
sea basura por ser desconocido porque, aunque no se sabe qué valores ingresará el usuario en
el momento de la ejecución, a la variable sí se le está definiendo un valor: el de la
suma de las variables ( y &, cuyos contenidos son definidos previamente por el
usuario.
0
Ejemplo: Prueba de escritorio
Instrucción Efecto
( & Se reserva espacio para tres variables enteras
llamadas (, & y ,
respectivamente.
(
Variable Tipo Contenido
( (!
&
&
Variable Tipo Contenido
( (!
& :1
5
Instrucción Efecto
(#&
Variable Tipo Contenido
( (!
& :1
;
8 79
¿Qué pasa si el usuario ingresa un valor real en lugar de uno entero ? Simplemente se toma
la parte entera. Por ejemplo, si el usuario ingresa 13.57, el valor que se almacena es 13.
¿Cómo sería la versión de esta solución para números reales ? ¿Qué pasaría en este caso si
el usuario ingresa un número entero ?
Si ahora se quisiera restringir el algoritmo de suma de dos enteros a enteros positivos, ¿cómo
se haría ?
Con las herramientas que se tienen hasta ahora en el lenguaje algorítmico no es posible hacer
tal restricción. Es necesario tener la forma de condicionar la realización de la suma. Si los
números son positivos… Primero, para establecer relación entre los operandos se necesita de
los operadores relacionales y para exigir que la condición “ser positivo” sea satisfecha por
ambos operandos se requiere de los conectores lógicos.
Palabras reservadas
#
D 2 & '( :
; 2 9 E 22
%%
)*
2
2
=:2 ;2 >
2 !
> ! => , =2
=:2 >
2
%%
)+*
2
= >
E2 2
H 9
22
782*
4 * C
4 * '
D*
4 * '
4 * C
F <2 3 2 C ?8
22 3
22
$ F 3 2 2 K
28 2 9 9
?8 22
F
2 = 2 + @F3 7
29 K 28 2
9 9 3
& ( ?8 22
" F K
28 2 9 9
?8 22 3
22
, * : / 2
@9 < @A 9 @F2 < 2 @F3 <
2
B F 3 2 )
3
C F 2 F 29 2
2
F 2 7 /
L F 2 7 /
@F3 2 @M9 < /
F 7
29 23 N 2 BO &$ $( O
6 "
Si la suma se quiere restringir a operandos positivos, se hace necesario que las dos
condiciones se satisfagan. Esto es, el primer operando debe ser positivo y el segundo
también. En lenguaje algorítmico esta condición se expresa así:
En la vida cotidiana, con frecuencia los seres humanos condicionan muchos de sus actos. Por
ejemplo, “Si me pagan la bonificación, me iré de viaje”.
Algo tan natural también está contemplado en el lenguaje algorítmico y se hace a través de
condiciones y estructuras de control condicionales. Las estructuras de control condicionales
permiten que la realización de una o más acciones esté sujeta a la satisfacción o cumpli-
miento de una o más condiciones. En este lenguaje se dispone de estructuras de control
condicionales repetitivas y no repetitivas.
#
Ejemplo:
"
><'? 4
"
( &
2 3 4 5
6 7 4
(
6 7 4
&
>( < ' % & < '? (#&
>( < ' % & < '? ( # & .
8 79
¿Qué pasa si uno de los números es negativo o cero ? El usuario se quedará sin saber qué ocu-
rrió. Aunque ingresó dos números, el único resultado que obtuvo fue el mensaje 8 79
así no se haya hecho. Es importante acostumbrarse a escribir los mensajes de error o aclaratorios
que sean pertinentes a la solución de un problema. Para hacerlo en el algoritmo anterior, habría
que tener en cuenta la posibilidad de que una o todas las condiciones no se cumplan.
En general, es importante conocer y entender las tablas de verdad porque de acuerdo con ellas
se obtiene el resultado de evaluar dos o más condiciones conectadas con % o con =.
@ @ @ @
@ A @ A
A @ @ A
A A A A
Para que la condición ( < ' % & < ' no se cumpla, basta con que cualquiera de los
operandos sea menor o igual a cero. La condición para verificarlo sería:
+
Si los dos operandos son menores o iguales a cero, también se satisfará la condición.
Obsérvese que con el conector % la única posibilidad de que el resultado de evaluación sea
verdadero (satisfactorio) es que tanto la evaluación de c1 como la de c2 sean verdaderas. Y la
única posibilidad de que el resultado de evaluación sea falso (no satisfactorio) con el conector
= es que tanto c1 como c2 sean falsas. Si la evaluación tiene lugar con más de dos
condiciones, el análisis es el mismo, una vez agrupadas las condiciones, para lo cual se
utilizan los paréntesis ( ) que son el símbolo de agrupamiento.
( ≥ −& % ≤ (' )
Los paréntesis de adentro se pueden omitir porque el único conector es %, lo cual exige
que todas se cumplan para que el resultado de la evaluación sea verdadero. En este caso,
los paréntesis están sobrando, no hacen daño.
Hay ocasiones en que, aunque sobren, vale la pena dejarlos por claridad con respecto al
enunciado.
El resultado de la evaluación de la condición ((& )* & = )
permite saber si un número
entero es par porque al hacer la división de los enteros m y 2 se obtiene un número
entero (la parte decimal se trunca) haciendo que el resultado multiplicado por 2 no sea
necesariamente igual al número original, si éste no era par. Por ejemplo, si el contenido
de la variable es 7, el resultado de la división $+& es ! y ! multiplicado por dos es
diferente de $. Así que, basados en esto se puede afirmar que $ no es par.
¿Qué pasa si en lugar de (& )* & ( * & )
&
?
c. El valor de la variable debe ser 2 veces el valor de la variable si el valor de es
negativo. Si es positivo, debe ser 10 veces el valor de .
En este caso, los paréntesis internos son necesarios para forzar el orden de evaluación.
,
Obsérvese el papel fundamental que juegan los conectores lógicos y los operadores
relacionales en la construcción de las condiciones.
/
$ F 2 *
$ 7 3 2 3 3 : &(
3 & /(
0 1
$$ ) * &( &"B C( ?9 82
2 6666
0 1
$ ) * P BQ P" Q ?9 82
2 6666
0 1
$" ) * P 2Q PR Q
0 1
$B 7 * &'$'( &"( &$B(
0 1
$C 7 ;2 &C( ?9 82
2 6666
0 1
$ 7 2 3 3 ?9 82 2 3
2 6666666666666666666
0 1
$L 7 4 : 4 C
0 1
$ A $ ;2
7 2 ;2 H ;2
$ 7 $ ;2 :
;2 <
.
$" 5 ;2 ( A, B] [5, C ).
$B 5 ;2 ( A, B] [5, C ).
$C F 3 3 4
&2 ( : 28 8
2
$$ 2 K 2
F2 *
T6T
2
T?9 A2 F2 T
La siguiente es una versión mejorada del algoritmo que suma dos enteros positivos
cualesquiera.
( &
2 3 4 5
6 7 4
(
6 7 4
&
/
Palabras reservadas
6
Obsérvese que en el algoritmo presentado hubo necesidad de evaluar dos veces la misma
condición. Esto porque había dos acciones dependientes del cumplimiento de una misma
condición. Cuando esto ocurre, se hace uso de la estructura de control condicional
5.
Otra versión del algoritmo que suma dos números enteros positivos cualesquiera, utilizando
la estructura de control condicional 5 es:
( &
(&
0
La línea de código
> . = . D?
La apariencia del algoritmo, esto es, la forma como están escritas las instrucciones, no afecta
la ejecución pero sí es importante que sea clara para el ser humano que es quien escribe el
algoritmo y quien lo modifica. Por esta razón es importante acostumbrarse a dejar líneas en
blanco, espacios o también sangría en el cuerpo de las estructuras de control. El código de los
algoritmos debe ser claro y agradable a la vista.
5
Al entrar a esta estructura de control condicional, sólo se ejecuta uno de los dos conjuntos de
instrucciones. Si la condición o condiciones se cumplen se ejecuta el conjunto de
instrucciones correspondiente al , de lo contrario, se ejecuta el conjunto de instrucciones
correspondiente al .
Utilizando esta opción se puede pulir el código del algoritmo antes presentado.
( &
(&
2 3 4 5
B/ >C , 5 C ?
> . = . D?
BE
7 4
(
F 4
&
>( < ' % & < '?
(#&
( # & .
G G 4
7
4
8 79
H" E =
7
? E E 3 2 : < 28
28 I 2 <2
2 <2 H
=UV ?2 ;2 3 2
3 3 >
%% 7
=E *>
=@)<2 >
2
=@)<2 >
2
=E *>
=@)<2 >
2
=? E* P>2 =>2 =Q E P> 2 =>2 =Q*>
7 22
" ; " ;
2 2 C
2 C 2
2 2 '
2 ' 2
/* %*
E* PC Q E* P 'Q E* PC 'Q E* P Q
D* 7 PC Q 3 D* 7 PC 'Q 3
2 P 'Q 2 P Q <
Dados los intervalos I1 e I2, averiguar si un número real r pertenece a la diferencia de los
intervalos cerrados I1 e I2 (I1-I2). Para que el número pertenezca, debe estar contenido en el
primer intervalo pero no en el segundo.
=6>
2
2 2 2 2
=UV ?2 ;2 ;2
;2 U:9 3
2V>
%% 7
=E *>
=@)<2 >
2
=@)<2 >
2
=@M9 >
=? E* P>2 =>2 =Q E P> 2 =>2 =Q*>
#
Palabras reservadas
6
7
%
7 9 :E F23
:E 2 2 8 8
82 ;2 & (
82
* #*
E* PC Q E* P' Q * E* P'C Q E* P' Q * L
D* :< 666 K 666 D* :< 666 K 666
7 22
$ F 2 2 D
2 22
$ ? F2 @F3
$$
$ <2 3 4
2 2 &2 ( :
28 8 2
$" F 2 2 9
2 7 28
+
$B A 3 /
3
: 2 2 28
8 2
782 *
) $ $ $ $
D 7 3 / / / (< <2 =
782 *
) " " $
D* 7 3 . . #
#/
782 $*
) $ $
D* 7 3 $ 23 2
782 *
) ' $ B
D* ) 7 3 $ >% ?
$ A 4 < 3
: 28 8 2 :
/ 9 / 9
2
$ I 3 2 ax + bx + c = 0; a, b, c ∈ R, a ≠ 0. )
9
−b± b2 − 4ac
x =
2a
,
2
b − 4ac 2 2 7 2
*
782*
: 3 7
2 :
W u 2 u ^ 0.5.
$ 5 ;2 (a, b] [5, c )
;2 2 )
9 2
<2 2 <2 7
28 8 2
8 <2
(− 4, 10] [5, 13) E 22
$ ? ;2 ;2 2 2
$$ ? ;2 2 "
$ ? ;2 2 2 2 2
.
$B D 2 & '(
: .A #A # - #% &2 5 G F( 2
=26>
2
2 5 G F
%% 7 2 2 ;2
%% &5GQ P"F( :
= Y ;2 &5GQ P"F(
?9 ;2 >
2
=? &5GQ ?9 5 >
5
=?9 G >
G
=? P"FQ ?9 F>
F
%% : ;2
2
&2+5 2 ≤ G 2 ≥ " 2 .F(
= < >
6
= >
6
= & >5 =>G =QP">F =(>
=5>
2
=26$62>
2
2 2 2$ 2
2
%% A
=:2 ;2 >
=K;2 , =
2
2 2!2
%% J
%% A
=K;2 , =
2
2 2!2
%% J
/
%% A $
=K;2 $ ,
2$
2 2!2$
%% J $
%% A
2> ! =2> ! =2$> , =2
=J 2>
%% J
2
"778
, # /
#
/
%
BB
2
=?9 & Z ( >
=2 >
& ≥ L ≤ (
=>
6
& ≥ .L(
=2 >
& ≥ C .(
=>
& ≥ B .C(
=>
& . B(
=>
6
6
6
6
6
TJT
2
0