Está en la página 1de 29

Módulo 1:

Unidad 1. Lógica
La lógica puede definirse como la disciplina que formaliza el estudio de
los métodos de razonamiento. Es un conjunto de técnicas y teoremas
que nos permiten modelar y definir formas de razonar. Las estructuras
del pensamiento y las reglas que las gobiernan son estudiadas en la
lógica.

Los objetivos fundamentales de la lógica son los siguientes:


● Eliminar la ambigüedad del lenguaje natural.
● Establecer reglas que determinen la validez de un razonamiento.

Tema 1. Lógica proposicional


Existen dos conceptos fundamentales en lógica: el juicio y la
proposición. El juicio es el acto mental mediante el cual pensamos un
determinado enunciado, mientras que la proposición es lo que se
piensa en dicho acto. Una proposición puede definirse como el
significado de un pensamiento. Las proposiciones son enunciados
aseverativos que transmiten información.
Una característica fundamental de una proposición es que se debe
poder definir si es verdadera o falsa en un momento del tiempo.
Una proposición lógica es toda oración declarativa que pueda decirse
si es verdadera o falsa.
Es muy importante indicar que una proposición nunca puede ser
verdadera y falsa. Esto se corresponde con los principios
fundamentales de la lógica proposicional:
Principio de no contradicción:
Dadas dos proposiciones contradictorias entre sí, no pueden ser
ambas verdaderas. Por ejemplo, si tenemos una proposición que indica
que -1 es un valor negativo y otra que indica que -1 es un valor positivo,
solo una de estas oraciones es verdadera, no pueden ser verdaderas
ambas, ya que son contradictorias.
Principio de tercero excluido:
Dadas dos proposiciones contradictorias entre sí, no pueden ser
ambas falsas. Siguiendo con el ejemplo anterior, como ambas
proposiciones son contradictorias, no puede ser que ambas sean falsas
a la vez; por lo tanto, una es verdadera y la otra es falsa.
Principio de identidad:
Toda proposición es idéntica en sí misma, es decir, algo no puede ser y
no ser al mismo tiempo y en la misma relación. Este es, sin duda, el
principio más complejo, sin embargo, nos dice algo sumamente simple,
porque indica que cada proposición es igual a sí misma. Por ejemplo, el
círculo es un círculo y no es un rectángulo, o un auto es un auto y no
una bicicleta. Toda proposición tiene una identidad propia.
El objetivo de la lógica proposicional no es determinar si algo es
verdadero o falso, sino más bien las estructuras en la que las
proposiciones intervienen y las reglas que regulan las combinaciones.
Por ejemplo:

● El elefante es un mamífero.
● 5 es un número entero.
● La luna gira en torno a la tierra.

Las proposiciones anteriores son de tipo simple, ya que pueden ser


ciertas o no; pero estudiar si son realmente ciertas no es
responsabilidad de la lógica, sino más bien de la ciencia
correspondiente.
Los valores de verdad indican dos posibles estados: verdadero o falso.
Cuando hablamos de valores de verdad de una proposición, nos
referimos a si esta es verdadera o falsa.

Ejemplos de proposiciones:

Proposición Valor de verdad Observación

Todas las personas Falso No todas las


hablan español. personas en el
mundo hablan
español, ya que
existen muchos otros
idiomas.

Algunas personas Verdadero Existen algunas


hablan inglés. personas que saben
hablar en inglés.

¿Hablas inglés? N/A Esta frase no es una


proposición, ya que
no es posible
identificar si es
verdadero o falso.

Las proposiciones simples no siempre son suficientes para expresar lo


que necesitamos; por este motivo, también existen las proposiciones
complejas.

Una proposición compuesta es la combinación de proposiciones


simples mediante conectivos lógicos.
La variable "p": Juan sabe hablar inglés
● "p": Puede ser verdadera (V) o puede ser Falsa (F).
Una proposición solo puede tener dos valores: Verdadero o falso.

Conectores logicos
Negación: Invierte el valor de verdad de una proposición. Cuando
aplicamos este conector a una proposición lógica verdadera, el
resultado es falso. Y viceversa si es falsa el resultado termina siendo
verdadera.

Se define como negación p a la proposición -p (no) es verdadera si p es


falsa y viceversa.

Conjunción: Este operador conecta dos proposición simples mediante


el término "Y". Esta es una de las formas más comunes de combinar
oraciones en nuestro lenguaje.
Ej:
● A Lucas le gusta caminar y a Jose le gusta comer.
Nota: p y q son proposiciones.
La conjunción utiliza el símbolo ^; p ^ q. Esto se lee como p y q.

Dadas dos proposiciones p y q, llamaremos disyunción de p y q a la


proposición p v q (que se lee p o q), que es falsa si ambas, p y q, lo son,
o es verdadera en todos los otros casos.

Implicación: Es un consecuente de las proposiciones anteriores, es


decir, implica una condicionalidad sobre el resultante de la tabla de
valor de las proposiciones anteriores.

Conectivo Símbolo Operación Significado

No ¬ Negación No es el caso
de p.

Y ^ Conjunción pyq

O V Disyunción poq

Se pueden realizar combinaciones entre los conectores, por ej: la


siguiente frase para la aprobación de una asignatura: “Tener promedio
sobre 6 o tener promedio sobre 4, y no tener notas bajo 4”

Existen proposiciones incluidas dentro de la expresión:


● Tener promedio sobre 6.
● Tener promedio sobre 4.
● No tener notas bajo 4.
La última de estas proposiciones se encuentra negada:
● No tener notas bajo 4.
Asignaremos una variable a cada proposición:
● p = Tener promedio sobre 6.
● q = Tener promedio sobre 4.
● ¬z = No tener notas bajo 4.
En este caso, queda de la siguiente forma:
p v q ^ ¬z.

Por último, debemos identificar que la segunda y la tercera proposición


se encuentran unidas, ambas deben cumplirse juntas para poder
aprobar; en este caso, utilizamos paréntesis para poder agruparlas.
La expresión queda de la siguiente manera:
p v (q ^ ¬z).

Álgebra de Boole: Nació a mediados del siglo XIX, cuando George Boole
presentó dos libros que explicaban la idea de tratar las proposiciones
lógicas utilizando las matemáticas.
Se puede definir como un sistema matemático basado en los valores 1
(verdadero) y 0 (falso), en conjunto con las
operaciones AND, OR y NOT. Las variables en este sistema no pueden
tomar valores diferentes a 1 y 0, y se denominan variables booleanas.

Nota: El álgebra nos ayuda a desarrollar una capacidad de


razonamiento lógica; esto es fundamental a la hora de programar.

Operación AND: Esta operación se corresponde con la conjunción (y) de


las proposiciones lógicas. La operación lógica AND se representa con
el símbolo (·) Lo que corresponde a una multiplicación lógica.

Ej: A · B

La conjunción u operación AND corresponde a una multiplicación


lógica, es decir, cada vez que multipliquemos por 0 (falso) el resultado
será 0. Por lo tanto, la única oportunidad de que el resultado sea 1
(verdadero) es que ambas variables sean 1.

Operación OR: Esta operación corresponde con la disyunción de las


proposiciones lógicas. La operación lógica OR se representa con el
símbolo +. Lo que corresponde a una suma lógica.
Por ej, A + B
La disyunción u operación OR corresponde a una suma lógica, es decir,
que cada vez que sumemos 1 (verdadero) el resultado será 1. Por lo
tanto, la única oportunidad de que el resultado sea 0 (falso) es que
ambas variables sean 0.

Operación NOT: Esta operación se corresponde con la negación de las


proposiciones lógicas. La operación lógica NOT se representa con el
símbolo ( ` ) . Por ej, A=1 —> A'

La operación NOT establece que, dada una variable booleana cuyo


valor es igual a 1, el resultado de aplicar esta operación será 0. Si la
variable es igual a 0, el resultado de aplicar esta operación será igual a
1.

Leyes de Morgan: En el siglo XIX, August De Morgan, un matemático y


lógico británico, formuló dos leyes utilizando el álgebra de Boole:
● La negación de la conjunción es la disyunción de las negaciones.
● La negación de la disyunción es la conjunción de las negaciones.

Esto se interpreta de la siguiente manera. Dadas dos variables


booleanas, A y B:
➔ (A AND B)` es igual a A` OR B`.
➔ (A OR B)` es igual a A` AND B`.

Funciones lógicas: Existe la posibilidad de tener más de dos variables y,


también, tener más de dos operadores.
Una función lógica es la expresión que define las operaciones para
realizar sobre un conjunto de variables, para obtener un resultado.
Por ej:
s = (A + B) · [(C · A) + (D · B`)].

—---------------------------------------------------------------------------------------------
Unidad 2. Algoritmos
Podemos definir un algoritmo como un conjunto definido de
instrucciones, con una orden y una cantidad determinada de pasos
(no existen algoritmos con infinitos pasos). Los algoritmos permiten
llevar a cabo una actividad mediante pasos sucesivos que no generen
dudas a quien deba realizar dicha actividad.

Características de los algoritmos


➔ Ordenados: Los algoritmos no son solo el conjunto de pasos, se
debe definir también la secuencia en la que dichos pasos se
deben realizar. Por ej; no es lo mismo poner en el horno la comida
por media hora y luego encender el horno. Existe cierto orden que
se debe cumplir para lograr el objetivo
➔ Finitos: Los pasos de un algoritmo tienen que tener una cantidad
determinada de pasos y, eventualmente, tener al menos un paso
final. No existen algoritmos con un conjunto infinito de pasos. Los
algoritmos nos permiten obtener la solución a un problema y
necesitamos llegar a su final para conseguirlo. Si no tuvieran un
fin, nunca obtendremos el resultado.
➔ Definidos: Dado un problema determinado, si se sigue el mismo
algoritmo, se debe llegar a los mismos resultados. En el caso de
seguir el algoritmo para armar un mueble, por ej, una mesa, por
mucho que repitamos indefinidamente el algoritmo, siempre nos
entregará una mesa, nunca una silla. Los algoritmos tienen un
objetivo a cumplir y esto se refleja en el resultado.

Partes de un algoritmo: Así como cada algoritmo posee las mismas


características, también tiene las mismas partes. Cada algoritmo tendrá
los siguientes elementos:
Entrada: Los algoritmos siempre poseen una entrada; al ser nada más
que una secuencia de pasos, se necesita una entrada a la cual aplicar
los pasos. Son los insumos que le entregarás al algoritmo para que
pueda comenzar a trabajar.
Proceso: El proceso refiere a los pasos definidos, en los que
manipulamos la entrada para llegar a un resultado.
Salida: Una vez que terminamos de aplicar todos los pasos, siempre
obtenemos un resultado. El resultado de las operaciones o pasos de un
algoritmo sobre una entrada específica se denomina salida.

Ej:
1. Ingresar alto de la habitación. Entrada
2. Ingresar ancho de la habitación. Entrada
3. Multiplicar alto por ancho. Proceso
4. Mostrar resultado. Salida

Tipos de algoritmo: Los algoritmos se pueden clasificar de diferentes


maneras de acuerdo con el lenguaje con el que se describen sus pasos,
respecto al objetivo o función que buscan realizar y en relación con la
estrategia que utilizan para llegar al resultado.

Lenguaje: Podemos clasificar los algoritmos en virtud de si se escriben


con un lenguaje natural, es decir, con palabras, o a través de cálculos
numéricos, esto es, con números y operadores -como la suma y la
resta-. Formalmente, se los clasifica de la siguiente forma:

➔ Cualitativos: Se utilizan palabras para definir los pasos.


➔ Cuantitativos: Se utilizan números y operadores. Para un
algoritmo cuantitativo, vamos a utilizar un Ej; (2 + 3) x 2 – 4.
Función: Podemos tener algoritmos que cumplan diferentes funciones
que, en general, se pueden clasificar en las siguientes:
➔ Búsqueda: Estos algoritmos se encargan de encontrar un
determinado ítem dentro de un conjunto. Por ej, buscar un
número dentro de una lista o una palabra en un libro. Los más
conocidos son los algoritmos que utilizan los buscadores de
internet.
➔ Ordenamiento: Su objetivo es ordenar un conjunto de valores de
acuerdo con un criterio específico. El criterio puede ser ordenar
alfabéticamente, en orden numérico, entre otros. Por ej, dada una
lista de palabras, ordenarlas de manera alfabética.
➔ Encadenamiento: Algoritmos que buscan cómo debe ser la
trayectoria de un objeto desde un lugar a otro. Por ej, si tenemos
que viajar a tres ciudades diferentes, este tipo de algoritmo nos
ayudará a decidir cuál es la forma más corta de hacer el viaje.
Google Maps utiliza este tipo de algoritmo, el que nos permite
obtener rutas con menor cantidad de tiempo en el trayecto o
menos cantidad de kilómetros recorridos.

Tipos de algoritmos de acuerdo con la función.


Estrategia: Por último, los algoritmos se pueden clasificar en relación
con la estrategia que utilizan para llegar al resultado.
● Determinista: Cada paso dentro del algoritmo es lineal. Esto
significa que cada paso (a excepción del primero) tiene un solo
predecesor y un solo sucesor (a excepción del último). No existen
caminos alternativos de acuerdo con sus entradas. Dentro de
estos algoritmos, encontramos las funciones matemáticas.
● Probabilístico: Este tipo de algoritmo utiliza valores
pseudoaleatorios como entrada para poder llegar a una solución.
Estos algoritmos ejecutan la cantidad suficiente como para
determinar un nivel de confianza en su resultado
● Voraz: Los algoritmos voraces evalúan cada una de las
posibilidades y eligen la mejor de ellas. Esto se puede utilizar al
buscar la ruta óptima para llegar de un lugar a otro, o en la red, la
ruta que debe seguir un paquete para tomar el menor tiempo.

Pasos de solución de problemas


Para poder encontrar la solución a un problema, existen diversas
estrategias. Existe abundante evidencia de que un enfoque sistemático
puede ayudar a encontrar soluciones reales, sostenibles y escalables,
sea cual sea el problema.
★ Identificación del problema: Identificar un problema consiste en
darse cuenta de que existe y que podemos darle una solución.
Podemos detectarlo nosotros mismos o puede surgir de un pedido en
particular
★ Interpretación del problema. Análisis: El análisis del problema es el
proceso mediante el cual este se interpreta y se buscan las posibles
soluciones.
★ Abstracción: Abstraerse de un problema es concentrarse en lo que es
importante para solucionarlo.
★ Formular la estrategia de resolución: Una vez que hemos analizado el
problema y nos hemos abstraído de lo que no es importante, se
necesita elaborar un plan, que es el conjunto de pasos que se deben
seguir para llegar al resultado deseado. Se debe establecer cómo
resolver el problema y cuál es el alcance de la solución.
★ Verificar la estrategia de resolución: Es muy importante verificar que
los pasos descritos en el paso anterior funcionen de la manera
deseada. Para ello, debemos probar el plan, ejecutar esos pasos y
validar que el resultado sea el deseado.
★ Ajustar la estrategia: En el caso de que la prueba no haya dado los
resultados deseados, debemos adaptar el plan, teniendo en cuenta la
nueva información.

Módulo 2:
Unidad 1. Representación gráfica de los procesos
Representar algoritmos o procesos puede ser algo difícil. No siempre se
pueden encontrar las palabras adecuadas y, en muchos casos, sería muy
difícil de entender o muy largo de leer si solamente se utilizan palabras. Es por
ello que se creó un lenguaje de símbolos, para poder representar
gráficamente los procesos mediante diagramas.

Tema 1. Origen y características


El proceso de programación se realizaba en lenguajes de programación más
cercanos a la computadora, lenguajes de más bajo nivel (lenguaje máquina).
Los datos están codificados en sistema binario, y no es necesaria la
traducción. Entre las características del lenguaje máquina, cabe destacar las
siguientes:
Es dependiente de los recursos de la computadora; por lo tanto, para
programar, el programador debe conocer la arquitectura sobre la que se
programa.
● El programador se encarga de verificar que no existan errores
sintácticos, pues no existe un compilador que los detecte.
● El programador trabaja directamente con direcciones de memoria.

El lenguaje ensamblador surgió como evolución natural, donde a cada


secuencia de ceros y unos se le asocia un nombre nemotécnico. Estos
nombres necesitan traducción, que se realiza mediante un programa que se
llama como el lenguaje: ensamblador. Aunque fue un gran avance, todavía es
necesario conocer cómo está constituida y qué recursos tiene la
computadora.

Más tarde, se fueron asociando nombres a conjuntos de instrucciones que


realizaban una tarea compleja determinada y programaban de manera
independiente la computadora donde se iba a ejecutar el código. Nacen los
lenguajes de alto nivel y se encuentran más cercanos a la forma de pensar de
los humanos que al lenguaje que entiende la máquina.

La programación, de la mano de los lenguajes, fue evolucionando gracias a


cuatro causas o motores que la impulsan. Estas son las siguientes:
● Abstracción: Es el proceso mental por el que el ser humano extrae las
características esenciales de algo e ignora los detalles superfluos. En
programación, el término se refiere al énfasis en el qué, más que en el
cómo.

Es esencial para modelar el mundo real. Al principio, se hacían programas


pensando como una computadora sobre la cual corrían. En la actualidad, se
solucionan los problemas sin conocer la máquina donde va a ser ejecutado el
programa.
● Encapsulación: Es el principio sobre el cual enmascaramos
funcionalidad en programación, es esencial para reutilizar un código.
Se ocultan los detalles de cómo está hecho un programa, pero se
conoce el modo de funcionamiento, cuáles son sus entradas y qué
salida produce, de forma tal que se pueda reutilizar en cualquier otro
programa.

● Modularidad: Es el proceso de descomposición de un sistema en un


conjunto de elementos poco acoplados (independientes) y cohesivos
(con significado propio). Es esencial para abordar la resolución de
problemas extensos o complicados de un modo más simple y
organizado.

● Jerarquía: Es el proceso de estructuración por el que se organizan un


conjunto de elementos en distintos niveles, atendiendo a determinados
criterios (responsabilidad, composición, etc.). Es decir, la jerarquización
implica organizar programas de acuerdo con rangos, clases o
categorías.
A medida que se fueron añadiendo nuevas características al proceso y a las
herramientas, fueron surgiendo múltiples estilos de programación.

Características de la programación.

Se pueden enunciar las siguientes características que se deben tener en


cuenta durante la programación de aplicaciones:

➔ Eficacia: El programa ejecuta correctamente las tareas definidas por su


especificación y satisface los objetivos de los usuarios. Un programa
eficaz regresa el resultado correcto del cálculo que hace o lleva a cabo
la tarea requerida de la forma esperada.
➔ Eficiencia: El programa hace un uso adecuado y no malgasta los
recursos de la computadora, como la memoria y el tiempo de
procesamiento. Un programa eficiente, además de ser eficaz,
completará la tarea con mayor rapidez con respecto a otro programa
que no lo es.
➔ Integridad o completitud: Un programa está completo solo si ejecuta
todas las operaciones que se codifican en los algoritmos al procesar un
conjunto de datos. Es decir, la integridad o completitud es la capacidad
del sistema para realizar todas las operaciones que el usuario podría
requerir.
➔ Claridad: Es crucial que el programa sea lo más claro y legible posible,
para facilitar tanto su desarrollo como su posterior mantenimiento. Al
elaborar un programa se debe intentar que su estructura sea sencilla y
coherente, así como cuidar el estilo de programación, etc.
➔ Portabilidad: Un programa es portable cuando tiene la capacidad de
ejecutarse en una plataforma, ya sea hardware o software, diferente a
aquella en la que se desarrolló. La portabilidad es una característica
deseable para un programa, ya que permite, por ejemplo, que un
sistema elaborado para GNU/Linux pueda ejecutarse en la familia de
sistemas operativos Windows. Esto amplía la cantidad de usuarios a los
que se puede llegar.

Tema 2. Conceptos fundamentales

La generación de un programa o un software en particular necesita de un


conjunto de reglas, actividades y procedimientos para lograr realizar los
algoritmos y cumplir su objetivo. Esta metodología llamada “ciclo de desarrollo
del software” consta de una serie de pasos lógicos secuenciales denominados
“fases”. Si bien esas fases pueden tomar diferentes nombres según los autores
que las describen, conceptualmente se refieren a las mismas actividades y son
las siguientes:
1. Definición de necesidades / Identificación del problema / Investigación
preliminar
2. Análisis/ Interpretación del problema / Determinación de
requerimientos
3. Diseño de la solución / Diseño del sistema
4. Codificación / Desarrollo del Sistema
5. Prueba, depuración y documentación
6. Implementación / Validación / Implantación
7. Mantenimiento / Evolución

Es importante conocer cada una de estas fases, ya que están íntegramente


relacionadas. El resultado que producen sirve de entrada para el comienzo de
la siguiente etapa. Las fases
ligadas al programador dependen de la metodología de desarrollo que se use.
Cada rol involucrado en este proceso debe conocer e interactuar en cada una
de las etapas.
★ Definición de las necesidades o Identificación del problema: Conocer el
problema e identificar las necesidades es la primera consideración.
Para ello debemos saber quién es el usuario final, cómo opera con el
sistema, qué resultados se esperan, etc. Una vez identificadas las
necesidades, se deberá evaluar la factibilidad de cumplimentarlas.

★ Análisis e interpretación del problema: Es la comprensión completa del


problema con sus detalles. En este punto empezamos a definir el
alcance de la solución, es decir, qué se va a desarrollar y qué no. Nos
involucramos con el problema y buscamos todas las fuentes de
información necesarias para solucionarlo. Como resultado de este
análisis exhaustivo debemos realizar la determinación de las entradas y
salidas del proceso de software, cómo funcionará el programa, qué
datos se necesitan y qué salida se deberá generar.
★ Diseño de la solución: Es momento de comenzar a diseñar y modelar los
algoritmos. Una computadora no tiene la capacidad para solucionar
más de lo que se le indica en los algoritmos. Estos algoritmos indican
las instrucciones para que la máquina ejecute. La información
proporcionada al algoritmo constituye su entrada, y la información
producida por el algoritmo constituye su salida.

Los problemas complejos se pueden resolver más eficazmente cuando se


dividen en subproblemas más fáciles de solucionar que el original. Estas
divisiones se realizan hasta que los subproblemas resultantes sean lo más
pequeños posibles y permitan realizar sus respectivos diseños.

Existen muchas formas de plasmar la solución analizada.

● Codificación: Consiste en empezar a escribir el código del programa, es


decir, expresar la solución en un lenguaje de programación, traducir la
lógica del resultado de la fase anterior a un lenguaje propiamente
dicho. Como ya hemos señalado, un lenguaje de programación es un
conjunto de reglas que proporciona una forma de instruir a la
computadora qué operaciones realizar.

● Prueba y depuración: Algunos expertos insisten en que un programa


bien diseñado se puede escribir correctamente la primera vez. Sin
embargo, las imperfecciones del mundo existen, por lo que la mayoría
de los programadores se acostumbran a la idea de que sus programas
recién escritos probablemente tengan algunos errores.
La depuración es un término usado ampliamente en programación, significa
detectar, localizar y corregir errores, generalmente, ejecutando el programa.

● Documentación: Esta actividad no puede ser catalogada como una


etapa del proceso de desarrollo de software, por lo general, se puede
presentar en la etapa de codificación o en la etapa de verificación.
Documentar es un proceso continuo y necesario. La documentación es
una descripción detallada, por escrito, del ciclo de programación y
hechos específicos sobre el programa.
Los comentarios se consideran una parte esencial de la
documentación.

● Implementación: El programa ya probado, revisado y mejorado se


considera terminado y puede utilizarse con un alto grado de confianza
para resolver los problemas que dieron origen a su creación. Si se está
automatizando alguna tarea manual, esta última se desecha para
emplear solo el programa. Los programas codificados se implantan en
un ambiente productivo para su uso masivo, en muchos casos esta
etapa se conoce como la liberación del producto.
● Mantenimiento: Es la fase de mayor duración, permite adaptar el
desarrollo a cambio de necesidades del negocio o tecnológicas.
Cuando se detectan estas alteraciones en los requerimientos
estipulados con anterioridad, se debe realizar el mantenimiento del
software. Siempre es preferible realizar un mantenimiento preventivo,
por lo cual se debe estar atento a los cambios de necesidades. algunas
de las características que deben cumplir los programas con respecto a
su programación:

➔ Usabilidad: El programa es fácil de usar si las personas a las que está


destinado pueden comprender su manejo de manera intuitiva, realizar
sus tareas de forma cómoda y sin esfuerzos innecesarios.

➔ Mantenibilidad: El código fuente del programa permite localizar y


corregir defectos rápidamente, así como también permite hacer
cambios que resultan más fáciles para adaptarlo a las necesidades
cambiantes de los usuarios.

➔ Fiabilidad: Un programa es fiable si realiza sus tareas cuando es


necesario, con la precisión requerida y brinda la salida esperada.

Tema 3. Diagrama de flujos y pseudocódigo

El pseudocódigo es considerado un lenguaje de alto nivel, es mucho más


entendible para los humanos que un lenguaje de programación. Sin embargo,
cuenta con una estructura similar a un código.

Los pseudocódigos no se compilan ni interpretan por ninguna computadora.


Su propósito es, simplemente, representar un algoritmo o un proceso
mediante una sintaxis similar a la presente en los lenguajes de programación.

Inicio / Fin
Un algoritmo es finito, es por eso que siempre debe tener un comienzo y un
fin.

En PSeInt, un algoritmo comienza con su nombre propiamente dicho, esto se


ve reflejado en el inicio y por un FinAlgoritmo al terminar el código.
Variables y tipos de datos: Es necesario declarar las variables que
utilizaremos. Una variable será un medio para almacenar valores en forma
temporal, los que podrán cambiar a lo largo del algoritmo. Al finalizar dicho
programa las variables se borran de memoria y finalizan su existencia.

Por ejemplo, si queremos manipular o realizar operaciones con valores


entregados por un usuario, estos deben quedar almacenados en variables.
Estas se definen con un nombre, que nos permitirá identificarlas a lo largo del
algoritmo.

Al declarar la variable, debemos indicar el tipo de dato que almacenará.


Aunque existen algunos lenguajes que no lo necesitan, la mayoría sí lo
requiere y es bueno cuando se comienza a aprender.

Los tipos de datos básicos que puede tomar una variable son los siguientes:

Comentarios: Son textos que nos permiten incluir notas en nuestro algoritmo
o código. Estos son ignorados al ejecutar las instrucciones. En este caso, los
utilizaremos para indicar las secciones.

En PSeInt, los comentarios en el código se expresan anteponiendo los


caracteres // al texto que se va a comentar. En el ejemplo anterior, el
comentario nos entrega una referencia de la sección del código //Definir
Variables
Leer
La instrucción Leer, en PSeInt, permite recuperar datos que ingresa el usuario.
Lectura PSeInt
Escribir
La instrucción Escribir en PSeInt permite mostrar datos al usuario.
Un diagrama de flujo expresa, de manera gráfica, los pasos que se deben
seguir y las decisiones que se van a tomar en un algoritmo o proceso
específico.

Existen estándares que definen los símbolos que se deben utilizar en los
diagramas de flujo. Dichos diagramas no siempre son algoritmos, pueden ser
procesos de negocio, procesamiento electrónico de datos, entre otros.

En este caso, utilizaremos los estándares ANSI (American National Standards


Institute) para la diagramación administrativa, que son los utilizados para la
diagramación de algoritmos.
Tabla 1: Simbología ANSI

★ Entrada: Se representan, en PSeInt, con una flecha hacia el interior del


símbolo, para indicar que son entradas, ya que los símbolos de entrada
y salida son iguales.
★ Decisión: Se representan a través de un rombo, donde se definen ambos
caminos, verdadero y falso.
★ Salidas: Se representan, en PSeInt, con una flecha hacia el exterior del
símbolo, para indicar que son salidas.

Los diagramas de flujo pueden ser muy simples —como los vistos ahora— o
muy complejos y largos. Todo depende del problema que se esté intentando
resolver.
Uso de variables y tipos de datos: Las variables son un elemento fundamental
de la programación, dado que, más allá de lo que haga el sistema que
estamos construyendo, siempre vamos a necesitar almacenar información en
la memoria del computador.

Casi todos los datos que se manejan en nuestro programa se almacenan en


variables.
Se debe concebir “variable” como un contenedor de información.
Tomemos como ejemplo una definición de una variable de tipo cadena de
caracteres (string) en
C++:

El tipo de datos string corresponden a C++ no es un tipo de dato nativo, por lo


cual, para utilizarlo necesitamos incluir en nuestro programa la librería string.

Las variables siempre tienen un tipo de dato asociado, que establece cómo el
lenguaje tiene que tratar el dato contenido dentro de esa variable.
Tipos de datos: Existen diferentes tipos de datos, los principales son los
siguientes:
● Integers: Este tipo de datos se utilizan cuando queremos almacenar un
número sin decimales (un número entero). Por ejemplo, es lo que usamos
si queremos calcular la suma de 100 + 300.

● Float: El tipo float permite la manipulación de números con decimales.


El número 12,25 sería de tipo float.

● Double: Las variables de este tipo, al igual que las del tipo float,
permiten manipular números con decimales. La principal diferencia es
la precisión. Como el nombre lo indica, el tipo de dato double tiene una
precisión doble que el tipo de dato float (2x). En general, un double tiene
15 dígitos decimales de precisión, mientras que el tipo de dato float
tiene solo 7.

● Character: Representa un único carácter, que puede ser un número, una


letra o un símbolo.

● String: Representa cadenas de caracteres. Es utilizado cada vez que


necesitamos manipular o almacenar cadenas con letras, números y
símbolos. Un texto, por ejemplo, se debe almacenar con este tipo de
dato. En C++ se usa por medio de la librería string.
● Boolean: puede tomar solamente los valores “true” (verdadero) o “false”
(falso).

● Constantes: Es un valor que no puede ser alterado o modificado


durante la ejecución de un programa, únicamente puede ser leído.

Unidad 2. Estructuras de control


Estas estructuras nos permiten controlar el flujo de ejecución. En otras
palabras, necesitamos ser capaces de controlar las acciones del algoritmo
que estamos creando.

Condicionales: Son instrucciones que evalúan la veracidad de una sentencia,


por lo tanto, utilizan valores booleanos (verdadero o falso) para decidir si
ejecuta o no una determinada sección de código.

La sentencia si / if: Si o if establece la evaluación de una variable o expresión


cuyo valor o resultado es de tipo booleano, es decir, verdadero o falso. En el
caso de que sea verdadero, ejecuta una sección de código. Si es falso, no la
ejecuta y pasa a la siguiente sección.

Cabe destacar que en las condiciones que se van a evaluar en la instrucción


si o if, es donde utilizaremos la lógica proposicional.

Figura 22: Estructura de control If en C++

Tabla 2: Operadores lógicos de comparación

Las instrucciones contenidas dentro de la estructura Si / If en PSeInt se


delimitan con la palabra
FinSi.

La sentencia sino / else: Existe la posibilidad de indicar también una sección


de código, en el caso de que la condición validada sea falsa, esto se incorpora
después de la sección de código para la opción verdadera.
Con esta estructura, tendremos un camino para desarrollar en caso de que la
condición sea verdadera o en caso de que sea falsa.

Para nuestro ejemplo, la instrucción que se va a ejecutar es el mensaje


“Números Diferentes”, en caso de que la comparación num1 = num2 sea falsa.

Es importante destacar que la sentencia sino / else no existe por sí sola,


siempre será un anexo para incluir a la instrucción si / if. Además, solo una de
las secciones de código se ejecutará.

La sentencia sino-si/ else-if


Hasta ahora, las sentencias sI / If y sino / else pueden ser de gran utilidad,
pero ¿qué sucede si necesitamos evaluar más de dos condiciones? Por
ejemplo, debemos realizar un algoritmo que identifique qué número es mayor
que otro, además de indicar si son iguales.

Esto es posible mediante la instrucción sino-si / else-if.

A continuación, modificaremos el código anterior incluyendo esta nueva


validación num1 > num2.
Se enviará el mensaje que el número 1 es mayor; si no, el número 2 es mayor.
Esta nueva instrucción sino-si / else-if existe solo si tenemos una sentencia si /
if y siempre se incluye antes de la instrucción sino / else.

La sentencia Según / switch

Con según / switch podemos evaluar el valor de una variable y, de acuerdo


con este, ejecutar cierta sección del código.
Siempre es recomendado utilizar switch, en vez de else-if, debido a su
simplicidad.

Según /switch permite agregar una opción de otro modo / default, es decir,
una opción que se ejecute cuando ninguna de las demás es verdadera
(también puede ser nombrada opción por defecto o default). Esto permite
responder, en caso de que el valor de la variable no corresponda con ninguna
de las cuatro provincias. Por ejemplo, podríamos imprimir un mensaje que
muestre “No es una opción correcta”.

Ciclos o bucles: Un ciclo o bucle es una sección de código en la cual la


ejecución se repite de acuerdo con una condición. Es similar al si o if, pero con
la capacidad de ejecutar varias veces la misma sección de código. Son muy
útiles cuando queremos recorrer una lista de elementos o ejecutar una
sección de código indefinidamente.

El bucle para / for


Este bucle permite la repetición de una sección de código de acuerdo con el
valor de una variable o expresión booleana. En el caso de que sea verdadera,
el código se repite. En caso de que sea falsa, el código no se repite y pasa a la
línea siguiente.
La sentencia «cout» realiza la misma tarea que la sentencia «printf», ambas
imprimen a la salida estándar, que en este caso sería la pantalla.

El bucle Mientras / while


Mientras / while es otro tipo de bucle que, al igual que para / for, permite la
repetición de ejecución en un bloque de código determinado. Una de las
diferencias de mientras / while es que no se puede definir una variable ni
cambiar su valor en la misma línea, como en el caso de para / for. Si
no se ejecuta mientras la condición sea verdadera.

Este bucle o ciclo se utiliza cuando existe un nivel de incertidumbre en la


condición.
El bucle repetir / do-while

Este bucle cumple las mismas funciones que los ciclos anteriores (permite la
repetición de la ejecución en una sección de código), pero con la diferencia de
que asegura que el código se repita, al menos, una vez. Lo que hace es
ejecutar el código que se va a repetir y luego evaluar si
lo tiene que volver a ejecutar.

El bucle for each


Este ciclo es específico para recorrer estructuras de manejo de datos, que
revisaremos en el
siguiente módulo.

Tema 3. Funciones y funciones anónimas


Hay muchas formas de codificar un programa y en el desarrollo de software
no existe una única forma de construir el componente de código.
Una de las ventajas de crear funciones es que podemos llamar a este
fragmento de código desde diversas partes de nuestro algoritmo, pero si se
quiere hacer un cambio o incluir un código, esto se realiza solo una vez dentro
de la función.

Tema 4. Recursividad

La recursividad es una característica de los lenguajes de programación que


permite que un subprograma se invoque a sí mismo. La recursividad es útil
para resolver problemas definibles en sus propios términos; y es, en cierta
medida, análoga al principio de inducción.
Módulo 3:
Estructuras de programación.
Unidad 1. Estructuras de manejo de datos.
Podemos definir los datos como “hechos que describen sucesos y entidades”.
En codificación, los datos permiten que el programa realice operaciones y
algo de valor. Por ejemplo, en un programa que hace sumas.
Tema 1. Operadores.
Los operadores permiten manipular los datos; existen operadores que
necesitan dos variables, como suma o resta, y otros que pueden manipular
solo una variable, como contadores y acumuladores.

Operador Significado Ejemplo Resultado

var1 + var2.

+ Suma El resultado es la Numérico


suma de la
variable var1 y la
variable var2.

var1 - var2.

- Resta El resultado es la Numérico


resta de la variable
var1 y la variable
var2.

var1 * var2.

* Multiplicación El resultado es la Numérico


multiplicación de
la variable var1 con
var2.

var1 / var2.

/ División El resultado es la Numérico


división de var1 y
var2.

var1 % var2.

% Módulo El resultado es el Numérico


resto de la división
de var1 y var2.

var1 && var2.


&& AND lógico
El resultado es Lógico
verdadero, si
ambas son
verdaderas y falsas
en todo caso.

|| OR lógico var1 || var2.


El resultado es
falso, si ambas
son falsas, y
Lógico
verdadero en
todo otro caso.
= Asignación de var1 = var2. Según tipo de
valor El resultado es dato
que var1 ahora
tiene el valor 2.

== Igual var1 == var2.


El resultado es
verdadero, si var1
es igual a var2, y
Lógico
falso en otro
caso.

!= Diferente var1 != var2.


El resultado es
verdadero, si var1
es distinto de
Lógico
var2, y verdadero
si no lo son.

+= Suma y var1 += var2.


asignación En el caso de
que var1 sea
igual a 3, el
Numérico
resultado sería
igual a 5.

-= Resta y var1 -= var2.


asignación En el caso de
que var1 sea
igual a 3, el
Numérico
resultado sería
igual a 1.

> Mayor que var1 > var2.


Verdadero, si el Lógico
valor de var1 es
mayor que el de
var2.

>= Mayor o igual var1 >= var2.


que Verdadero, si el Lógico
valor de var1 es
mayor o igual
que el de var2.

< Menor que var1 < var2.


Verdadero, si el Lógico
valor de var1 es
menor que el de
var2.

<= Menor o igual var1 <= var2.


que Verdadero, si el Lógico
valor de var1 es
menor o igual
que el de var2.
++ Aumenta en var1 ++ var2.
uno el valor de Si var1 es igual a Numérico
la variable. 2, el resultado es
igual a 3.

-- Disminuye en var1 -- var2.


uno el valor de Si var1 es igual a Numérico
la variable. 2, el resultado es
igual a 1.

! Negación var1 ! var2.


Verdadero, si var1 Lógico
es igual a falso;
falso, si var1 es
verdadero.

Los operadores, junto con las variables y estructuras de datos, son las
bases para la programación, es decir, permiten llevar a cabo acciones
de acuerdo con el valor de dichas variables y el resultado de los
operadores.

Tema 2. Arreglos.
Los arreglos son estructuras de datos que permiten almacenar un
conjunto de variables del mismo tipo. Por ejemplo, podemos tener un
arreglo que contenga los números y contenga las palabras.

Tema 3. Matrices.
Las matrices son estructuras de datos que permiten almacenar datos
en forma de tabla, en la que especificamos un índice para la fila y otro
para la columna. Son iguales que los arreglos, en el sentido de que
necesitan índices para acceder a los elementos y son de tamaño fijo.
Son un arreglo de arreglos, es decir, un arreglo en el que cada elemento
es otro arreglo.
● Punteros: En programación, los punteros son direcciones de
memoria, una forma de saber en qué parte de la memoria se
encuentra una variable y poder acceder a ella cuando sea
necesario.

Tema 4. Listas.
Las listas son secuenciales, debido a que cada elemento contiene un
puntero hacia el siguiente elemento. Por este motivo, siempre que
busquemos un elemento en una lista, son otra estructura de datos muy
importante, que difiere de los arreglos y las matrices en dos aspectos
fundamentales: no son accedidas con un índice, sino de manera
secuencial.

Tabla 6: Arreglos y listas.


Arreglos Listas
Indexado (dado el Secuencial (debemos
índice, accedemos recorrer desde el
Acceso. directamente al primer elemento hasta
elemento). encontrar el que
buscamos).

Tamaño. Fijo. Variable


Sabemos de antemano la No sabemos la cantidad
cantidad de elementos. Al de elementos de
ser indexado, el acceso es antemano. Es útil cuando
muy eficiente, por lo que la velocidad
se puede tener en cuenta El acceso al elemento no
Útil cuando… para aplicaciones que es un factor clave. Al no
necesiten alto requerir cambio de
rendimiento. No es tamaño, la adición y
eficiente tener que eliminación de un
recrear el arreglo todo el elemento
tiempo porque es muy eficiente.
necesitamos más espacio.

Unidad 2. Algoritmos de ordenamiento.


Los algoritmos de ordenamiento son un tipo especial de algoritmo que
organiza los elementos de un arreglo, bajo un criterio específico.

Se pueden clasificar de acuerdo con diversos factores, entre los que se


encuentran los siguientes:
● De ordenamiento interno: Utiliza, únicamente, la memoria para realizar
el procesamiento y manipular elementos. No utiliza el almacenamiento
en disco.
● De ordenamiento externo: Utiliza tanto la memoria como el
almacenamiento en disco. Esto ocurre cuando la memoria disponible
no es suficiente para el proceso.

Tema 1. Burbuja.
El algoritmo burbuja es uno de los algoritmos más simples de ordenamiento:
compara elementos de a pares y, si el arreglo tiene n cantidad de elementos,
el método realiza n-1 iteraciones sobre el arreglo. Como en cada iteración se
detecta el elemento mayor, cada iteración sucesiva va a ir teniendo un
elemento menos que comparar.
El método burbuja no tiene la inteligencia de detectar si el arreglo ya está
ordenado, por lo que siempre se hacen n-1 iteraciones sobre este, sin importar
el estado de inicio.

Tema 2. Árbol.
Este algoritmo utiliza una estructura especial llamada árbol binario, para
poder ordenar los elementos dentro de un arreglo u otro tipo de estructura.
La estrategia se basa en construir el árbol, elemento por elemento, el cual se
inserta directamente de manera ordenada. Luego, se obtienen los elementos
recorriendo el árbol construido.
La principal característica de un árbol binario es que cada nodo puede tener
hasta dos nodos hijos.

Nodo: “En un esquema o representación gráfica en forma de árbol, cada uno


de los puntos de origen de las distintas ramificaciones”.

Tema 3. Inserción.
El ordenamiento por inserción utiliza el siguiente algoritmo:
★ Tomar el primer elemento del arreglo y copiarlo a un nuevo arreglo.
★ Tomar el segundo elemento y compararlo con el ya existente. En el caso
de que sea menor, colocarlo a la izquierda. En el caso de que sea mayor,
colocarlo a la derecha.
★ Tomar el tercer elemento y realizar la misma evaluación: ubicarlo a la
derecha de aquellos elementos que son mayores y a la izquierda de
aquellos que son menores.
★ Repetir el paso anterior, hasta que no queden elementos en el arreglo
original.
★ El resultado es un nuevo arreglo ordenado.

Tema 4. Selección.
El ordenamiento por selección establece que, para ordenar un arreglo, se
deben seguir los siguientes pasos:
● Buscar el menor valor del arreglo e intercambiarlo por el elemento que
se encuentra en la primera posición.
● Buscar el segundo menor valor del arreglo e intercambiarlo por el
elemento que se encuentra en la segunda posición.
● Utilizar el mismo procedimiento para todos los elementos del arreglo
Módulo 4. Conceptos básicos de programación
Unidad 1. Características de los lenguajes
Los lenguajes de programación son un conjunto de palabras
con una sintaxis particular que nos permiten indicarle a un
computador qué es lo que debe hacer.
Código fuente: Se denomina así al código escrito consiste en
un conjunto de archivos que contienen las instrucciones
sobre qué es lo que la máquina debe hacer.

Lenguajes de alto nivel: Como habíamos expresado


anteriormente, es un lenguaje de programación en el que las
instrucciones enviadas, para que el ordenador ejecute
ciertas órdenes, son similares al lenguaje humano.
Lenguajes de bajo nivel: Es aquel que es más parecido al
código de máquina original.

Tema 1. Compilado e interpretado


Compilado
Un lenguaje compilado es aquel que se escribe en un
lenguaje de alto nivel y, luego, es traducido a un ejecutable
para una plataforma específica (por ejemplo, Linux, Windows,
etcétera) mediante un proceso llamado compilación. La
principal ventaja de utilizar un lenguaje compilado es que su
velocidad de ejecución es más rápida que la de los
interpretados. Entre los más utilizados, se encuentran: C, C++
y Golang.

Compilador
Un compilador es una aplicación que lee un lenguaje de
entrada, denominado fuente, y lo transforma en lenguaje
objeto, el cual no tiene por qué ser necesariamente código
máquina.
Los compiladores traducen los lenguajes de alto nivel al
lenguaje de máquina.

Interpretado
Se considera un lenguaje interpretado a aquel que es
traducido a instrucciones propias de la plataforma, línea por
línea, mientras es ejecutado. La principal ventaja de un
lenguaje interpretado es que tiene una gran independencia
de la plataforma donde es ejecutado y es más flexible a la
hora de codificar.

Tema 2. Tipado (estático, dinámico, fuerte, débil)


● Integers (entero): Almacenar un número sin decimales.
Por ejemplo, 100 + 300.
● Float (real): números con decimales(12,25).
● Double: Las variables de este tipo, al igual que las de
tipo float, permiten manipular números con decimales.
La principal diferencia es la precisión. Si necesitamos
manipular números con muchos decimales.

● String (carácter): Representa palabras.


● Boolean (lógico): Puede tomar solamente los valores true
(verdadero) o false (falso).

Lenguajes estáticos
Un lenguaje estático es aquel que, si ya definimos una
variable de un tipo determinado, no permite que cambiemos
su tipo. Explicado de otra manera: si delimitamos una
variable de un tipo específico, solamente podemos asignarle
valores de ese tipo y solo de ese tipo.

Lenguajes dinámicos
Al contrario de los estáticos, los lenguajes dinámicos no
tienen especificado el tipo explícitamente, lo infieren o
deducen mediante el valor asignado a la variable en tiempo
de ejecución.

Lenguajes débilmente tipados


Todos los lenguajes, tanto los dinámicos como los estáticos,
tienen chequeos de tipos. Por ejemplo, ningún lenguaje
puede sumar un número con una palabra, simplemente,
porque la suma es entre números y solo entre números.

Lenguajes fuertemente tipados


A diferencia de los débilmente tipados, estos lenguajes no
esperan ejecutarse para realizar el chequeo de datos, sino
que lo realizan en paralelo con la compilación. Un programa
fuertemente tipado no llega a compilarse si tiene una
operación inválida de tipos.

Tema 3. Tipos de paradigmas (imperativo, declarativo,


orientada a objetos)
Paradigma imperativo
El paradigma imperativo se caracteriza por desarrollar
software mediante un conjunto de instrucciones que indican
cómo realizar la tarea. Por ejemplo, una receta de cocina se
puede considerar como imperativa, ya que describe paso a
paso cómo debe cocinarse un determinado plato.

Programación estructurada: Utiliza bucles anidados,


condicionales y subrutinas.
Programación procedimental: Utiliza funciones que son
llamadas cada vez que se necesite ejecutar.
Programación modular: Divide el desarrollo en módulos o
subprogramas que se relacionan entre sí.

Paradigma declarativo
En el caso del paradigma declarativo, no definimos el
conjunto de pasos o instrucciones, sino que determinamos
directamente el estado final de lo que deseamos obtener y
dejamos al computador que defina cuál es el mejor método
para hacerlo.

Programación lógica: Es una especie de resolución


tecnológica de puzzles, y tiene gran utilidad para resolver
problemas en áreas concretas como los sistemas expertos, el
procesamiento de lenguajes o la inteligencia artificial, entre
otras.
Programación funcional: Es un lenguaje de programación
declarativo donde el programador especifica lo que quiere
hacer, en lugar de lidiar con el estado de los objetos. Es decir,
las funciones estarían en un primer lugar y nos centraremos
en expresiones que pueden ser asignadas a cualquier
variable.

Paradigma orientado a objetos


El paradigma orientado a objetos establece que podemos
modelar y codificar la solución de un problema identificando
los objetos que participan en el proceso.
Algunos de los conceptos utilizados en este paradigma son:
Abstracción de datos
Encapsulación.
Eventos.
Modularidad.
Herencia.
Polimorfismo.

Tema 4. Multiplataforma
Un lenguaje multiplataforma es aquel que permite la
ejecución de un programa sin necesidad de compilarlo cada
vez que cambiamos de plataforma.

Lenguaje Java
Java es un lenguaje de programación utilizado para múltiples
propósitos, puede trabajar en forma concurrente, es decir, se
puede paralelizar su ejecución, es orientado a objetos y fue
diseñado específicamente para tener tan pocas
dependencias de implementación como fuera posible.

Unidad 2. Conceptos de la programación orientada a objetos

Tema 1. Introducción y origen


Origen
La programación orientada a objetos tiene sus orígenes en el
MIT (Massachusetts Institute of Technology) a fines de la
década de 1950, con el lenguaje Lisp, uno de los preferidos a
la hora de crear sistemas de inteligencia artificial.

Tema 2. Conceptos fundamentales


Dentro de los principales conceptos de la programación
orientada a objetos, podemos identificar los siguientes:
Clases:
Una clase es un modelo o plantilla que se utiliza para
describir uno o más objetos del mismo tipo.
Objetos:
Un objeto es una instancia de una clase. La principal
diferencia entre objeto y clase es que, de una clase,
características de un objeto. Son capaces de contener
información y son el componente fundamental de un objeto,
a tal punto que definen su estado.
Métodos:
Los métodos son funciones que especifican una acción, es
por ello que los métodos definen el comportamiento de los
objetos.

Mensajes:
Un mensaje es una petición de un objeto a otro para que
este último realice una acción específica ejecutando uno de
sus métodos.
Un mensaje está compuesto por los siguientes tres
elementos:
El objeto destino, hacia el cual el mensaje es enviado.
El nombre del método que se va a llamar.
Los parámetros solicitados por el método.

Tema 3. Características
Para que un desarrollo sea considerado como orientado a
objetos, debe cumplir con un conjunto de características:
Herencia: Permite que definamos una clase y que luego
creemos subclases a partir de ella, reutilizando lo definido en
la primera para crear otras clases de objetos.
Encapsulamiento: Consiste en un método especial para
poder leer o modificar dicho atributo.
Abstracción: Podemos definirla también como la capacidad
de encapsular y aislar la información que deseamos incluir
en nuestros objetos.
Polimorfismo: Establece que una misma operación puede
tener diferentes comportamientos en diferentes objetos, es
decir, diferentes objetos pueden reaccionar de manera
distinta al enviarles el mismo mensaje.

Tema 4. Estructuras de control en Java


Java tiene su propia aplicación tanto de estas estructuras
que permiten controlar el flujo de ejecución como también de
los datos necesarios para representar la información que se
debe procesar o almacenar. Una de las particularidades de
Java se basó su sintaxis en C y C++.

Entornos de desarrollo integrado(IDE)


Son herramientas particulares que facilitan la tarea del
programador. Los IDE, ofrecen un procesador de texto con
autocompletado inteligente, análisis de sintaxis, asistente de
resolución de errores y herramientas para pruebas de
código. NetBeans, Eclipse e IntelliJ.

También podría gustarte