Programacion
Programacion
UNIVERSIDAD ESTATAL DE
GUAYAQUIL FACULTAL DE
INGENIERIA INDUSTRIAL
CURSO:
PORTAFOLIO UNIDAD 1
ASIGNATURA:
AUTORA
DOCENTE:
GUAYAQUIL-ECUADOR
2021-2022
2
Pero esos problemas se pueden resolver de diferentes maneras, algunas más rápidas y
eficientes y otras no tanto, pero ambas encontrarán la solución al problema.
¿Qué es un paradigma?
Incluso existen lenguajes que ya adoptan un paradigma en específico, pero también otros
que adoptan más de un paradigma como JavaScript, Python y Java (si Java ).
Imperativa
Es aquella que nos dice lo que vamos a hacer paso por paso, como si siguiéramos la receta
para prepara nuestra comida favorita. Es decir tú en el código vas describiendo paso por
paso todo lo que hará tu programa.
Declarativa
Es una programación en la que tú le dices al programa lo que tiene que hacer, no sabes
como funciona por detrás pero el programa lo hace. Por ejemplo cuando haces la consulta
de ventas en tu tienda del mes marzo en SQL, no sabes que hizo el programa para traerte
esos datos pero los trajo, y es porque por debajo ya existen métodos y funciones que lo
hacen.
Un ejemplo muy claro es Angular que usaba directivas para hacer múltiples cosas con tan
solo escribir un atributo HTML.
Programación Estructurada
Pero si te pones a pensar programar de arriba hacia abajo tiene muchos problemas. ¿Qué
pasa si hay un error en la línea 10456 que está relacionada con la línea 956? Sería un caos
resolverlo, por eso existen otros paradigmas que nos permiten mantener una programación
más organizada.
Con la Programación Orientada a Objetos pasamos de tener un código de arriba hacia abajo
en el que las funcionalidades están mezcladas y son difíciles de separar o escalar, a una
programación en la que tenemos los elementos (Objetos) que tienen características y
funciones.
4
Por ejemplo un usuario en una red social tiene características como nombre, apellido, edad.
Y también funciones como comentar, iniciar sesión, comprar, etc.
Esta forma de programar hace más fácil manejar y mantener un sistema, si necesitáramos
una nueva funcionalidad podríamos sin problemas agregar un nuevo objeto o añadir datos y
funcionalidades a los objetos que ya existen.
Programación funcional
Este tipo de programación también divide al sistema en varios pedazos, cada pedazo
(función) hace una sola cosa como multiplicar un número, solicitar un dato, etc.
Por ejemplo si usuario inicia sesión en una web, habría una función que valide los datos,
esta retornaría un valor y se la enviaría a otra función para saber que página mostrar, luego
esta función enviara los datos a otra función para saber si el usuario tiene notificaciones,
pero cada función hace una sola cosa.
Programación Reactiva
Entonces lo que hace la programación reactiva es observar estos flujos datos y cuando estos
cambian hacemos algo.
Con este ejemplo te quedará clarísimo. Cuando ves Netflix y la velocidad de tu internet
disminuye, Netflix no para la transmisión, la continua pero con calidad de video inferior,
eso es la programación reactiva.
5
Programación funcional
Este tipo de programación también divide al sistema en varios pedazos, cada pedazo
(función) hace una sola cosa como multiplicar un número, solicitar un dato, etc.
Por ejemplo si usuario inicia sesión en una web, habría una función que valide los datos,
esta retornaría un valor y se la enviaría a otra función para saber que página mostrar, luego
esta función enviara los datos a otra función para saber si el usuario tiene notificaciones,
pero cada función hace una sola cosa.
Programación Reactiva
Entonces lo que hace la programación reactiva es observar estos flujos datos y cuando estos
cambian hacemos algo.
Con este ejemplo te quedará clarísimo. Cuando ves Netflix y la velocidad de tu internet
disminuye, Netflix no para la transmisión, la continua pero con calidad de video inferior,
eso es la programación reactiva.
2.1.1
2.1.2
2.1.3
PROGRAMACIÓN ESTRUCTURADA
Los programas son más fáciles de entender. Un programa estructurado puede ser leído
en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la
lógica, lo cual es típico de otros estilos de programación. La estructura del programa es más
clara puesto que las instrucciones están más relacionadas entre sí, por lo que es más fácil
comprender lo que hace cada función. Reducción del esfuerzo en las pruebas. El programa
se puede tener listo para producción normal en un tiempo menor del tradicional; por otro
lado, el seguimiento de las fallas se facilita debido a la lógica más visible, de tal forma que
los errores se pueden detectar y corregir más fácilmente. Programas más sencillos y más
rápidos. Aumento de la productividad del programador. Se facilita la utilización de las otras
técnicas para el mejoramiento de la productividad en programación. Los programas quedan
mejor documentados internamente .La programación estructurada permite la escritura de
programas fáciles de leer y modificar. En un programa estructurado el flujo lógico se
gobierna por tres estructuras de control básico: secuenciales, repetitivas y selectivas.
7
• Introducción a Java
● Java básico
● Conceptos avanzados
De esta forma un programa Java escrito una vez podemos ejecutarle sobre diferentes
plataformas, siendo soportados los sistemas operativos Windows, MacOs y UNIX. Y a su
vez en diferentes tipos de dispositivos.
8
Independiente de Plataforma
Orientado a Objetos
Cualquier elemento del lenguaje Java es un objeto. Dentro de los objetos se encapsulan
los datos, los cuales son accedidos mediante métodos.
Sencillo
Java está enfocado para ser un lenguaje fácil de aprender. Simplemente se deberán de
entender los conceptos básicos de la programación orientada a objetos (POO).
Seguro
Es seguro ya que los programas se ejecutan dentro de la Java Virtual Machine (JVM)
en un formato de “caja de arena”, de tal manera que no pueden acceder a nada que esté
fuera de ella.
Tiene una validación sobre los bytecodes para comprobar que no hay códigos de
fragmento ilega
Arquitectura Neutral
Portable
Java no tiene nada que dependa de la plataforma, lo cual le hace que sea portable a
diferentes plataformas.
Robusto
El lenguaje Java intenta controlar las situaciones de error en los procesos de compilación
y de ejecución, reduciendo de esta manera el riesgo de fallo.
Multi-hilo
Java nos permite la programación concurrente, de tal manera que un único programa
puede abrir diferentes hilos de ejecución.
Interpretado
Alto Rendimiento
Distribuido
El lenguaje Java está pensando para ser ejecutado en arquitecturas distribuidas, como
pueda ser Internet.
10
Multi-hilo
Java nos permite la programación concurrente, de tal manera que un único programa
puede abrir diferentes hilos de ejecución.
Interpretado
Alto Rendimiento
Distribuido
El lenguaje Java está pensando para ser ejecutado en arquitecturas distribuidas, como
pueda ser Internet.
Compilador
Se utiliza para compilar archivos de código fuente Java (habitualmente *.java), en archivos
de clases Java ejecutables (*.class). Se crea un archivo de clase para cada clase definida en
un archivo fuente.
El JDK le permite escribir aplicaciones que se desarrollan una sola vez y se ejecutan en
cualquier lugar de cualquier máquina virtual Java. Las aplicaciones Java desarrolladas con
el JDK en un sistema se pueden usar en otro sistema sin tener que cambiar ni recompilar el
código. Los archivos de clase Java son portables a cualquier máquina virtual Java estándar.
Para obtener más información sobre el JDK actual, consulte la versión del IBM®
Developer Kit para Java en su servidor.
Puede consultar la versión del IBM Developer Kit para Java predeterminado de la
máquina virtual Java (JVM) en el servidor, entrando uno de estos mandatos:
5. ENTORNOS DE DESARROLLO
Recomendar el mejor IDE para trabajar no es tarea fácil. Cada programador tiene sus
preferencias y lo que para uno es cómodo para otro puede resultar lo contrario. Es como
hablar de coches. Algunos estarán encantados con coches de marcas Asiáticas, otros
preferirán europeas y siempre habrá quien prefiera un auto americano o ruso. Así que lo
mejor es enumerar aquellos IDE que son más populares para que los conozcas y puedas
probar aquel que mejor se ajuste a ti.
Estos son algunos de los mejores IDEs para nuestro lenguaje favorito Java:
Eclipse
Su mayor punto fuerte reside en su asistente y capacidad para depurar errores. A medida
que vas programando Eclipse lanza recomendaciones que nos ayudan a optimizar nuestro
código hasta niveles que rozan el elegante guante blanco. Sin duda una excelente elección.
NetBeans
Entre sus detractores hay quien comenta que el desarrollo de una GUI sobre NetBeans es
algo complicado y que no cuenta con la ingente cantidad de plugins y extensiones de las que
sí cuenta Eclipse, además de carecer de soporte nativo para trabajar con webapps (.war,
.jsp, y servlets).
IntelliJ Idea
Desarrollado por Jet Brains es un IDE que cuenta con dos versiones.
13
La Community Edition, libre descarga, y la versión Ultimate Edition que cuesta la friolera de
más de 500 dólares de suscripción anual, según el plan que contratemos, pero que podemos
probar gratis durante 30 días si lo que queremos es echarle un vistazo a todo lo que puede
ofrecer.
Con IntelliJ podemos programar sobre diferentes lenguajes y proporciona soporte para
trabajar con JAVA, Node JS, PHP, Python, Ruby, Sass, TypeScript, AngularJS,
CoffeeScript, CSS, HTML, JavaScript, LESS, etc.
Además ofrece integración con GIT lo que permite trabajar con diferentes versiones de
nuestro software sin afectar a la línea maestra de nuestro desarrollo.
BlueJ
Estoy seguro que has visto este IDE antes. Está presente en innumerables cantidades de
vídeos y tutoriales en Youtube. La principal razón es que en cierto momento James Gosling,
el creador de Java, dijo dijo que BlueJ era uno de sus IDE IDEs favoritos. Esto desencadenó
que de pronto en muchas escuelas y academias se usará BlueJ para dar clase pues era el IDE
del momento.
Como los IDE anteriores de esta lista, es multiplataforma. Podemos usarlo sobre
Windows, macOS y GNU/Linux y cuenta con una gran documentación que lo hace
especialmente indicado para estudiantes.
Su principal característica es que nos permite generar una vista UML de todos los objetos
que componen nuestra aplicación.
Codenvy
Codenvy es un IDE comercial de Java que está construido sobre el Eclipse Che. Como
muchas otras opciones de la competencia podemos encontrar diferentes variantes en función
del tipo de desarrollador o cliente que seamos. Entre las 3 variantes podemos elegir entre la
edición developer, enterprise y team.
Lo que hace interesante a Codenvy es que está pensado para ofrecer un espacio de trabajo
en la nube, colaborativo y bajo demanda. Esto hace que sea muy fácil moverse de una licencia
a otra y aprovechar solo aquellas características que necesitemos ahorrando costes.
Desde este IDE podemos trabajar cómodamente desde nuestro navegador y beneficiarnos
de potentes funciones como la finalización de código, la refactorización y el resaltado de
sintaxis.
14
Además de Java, Codenvy proporciona soporte para una gran cantidad de lenguajes de
programación interpretados y compilados. Esto incluye C ++, C #, JavaScript y PHP.
Xcode
Los usuarios de Mac que quieran usar un IDE completamente gratis deben probar Xcode.
Se trata de un IDE desarrollado para macOS por la propia Apple que además de permitir la
programación en Java, el IDE viene con una multitud de herramientas que nos permiten
desarrollar software para iOS, macOS, tvOS y watchOS.
jGRASP
Por último, el quinto de la lista pero no por ello el peor. Los anteriores IDE tienen un
“defecto” común. Todos devoran ingentes cantidades de memoria RAM. Si buscas algo
ligero para comenzar tu desarrollo quizá jGRASP pueda ayudarte.
4. La definición de la clase
● Así que cada fichero define una clase – public class MiClase
● El método main es especial – public static void main (String [] args) {...} – Es el punto de
arranque de una clase
Variables
● Sensible a mayúsculas/minúsculas
Variables
int
il
anInt
thing1
something2do
Las variables tienen un tipo que define el rango de valores y las operaciones que pueden
hacerse – Java es fuertemente tipado
● Tipos primitivos
● Tipos referencia
● Enteros (se inicializan a 0) – Byte: un byte con signo ((byte)12) – Short: dos bytes con
signo ((short)1231) – Int: cuatros bytes con signo (1238921) – Long: ocho bytes con signo
(728478283L)
● Reales (se inicializan a 0.0) – Float: punto flotante 32 bits (1.2342F) – Double: punto
flotante 64 bits (123.131)
● Se inicializan a null
Inicialización
int a = 2;
char b = 'a';
double c = 123.13123;
Constantes
● Modificador final
final int a;
a = 12;
Ámbito
● Excepciones
Visibilidad
● Visibilidad: parte de programa en el que una variable es accesible sin ser calificada
● Las variables se pueden ocultar por otras con el mismo nombre en ámbitos más anidados
17
Operadores
Operadores aritméticos
Operadores aritméticos
– Si no, int
Operadores aritméticos
● Unarios
– ++op1 – op1++
– --op1 – op1—
18
Operadores de comparación
● Devuelven booleanos
Operadores de comparación
● Error típico
Método main
● Es un método especial
● args: vector de cadenas de texto que representa los parámetros pasados al programa
Terminar la ejecución
● Estado y comportamiento
● Interfaces
● Paquetes
● Sobrecarga
● Constructores y destructores
● Seguridad
● Casting y comparación
● Arrays y vectores
6.2 INTRODUCCION
Java es uno de los lenguajes de programación más usados por las empresas tecnológicas.
Un perfil profesional que es altamente demandado, por lo que especializarte como
programador en Java te va a abrir muchas puertas dentro del mercado laboral.
Una de las mayores ventajas que te vas a encontrar a al ahora de especializarte en Java es
que se trata de un lenguaje de programación con una curva de aprendizaje sencilla. Esto es,
en parte, debido a que se trata de un sistema de programación orientada a objetos.
Los objetos en Java no tienen existencia física, no puedes tocarlos, pero sí que existe como
algo que contiene información sobre sí mismo y sobre su estado. Se puede interactuar
con él y se puede modificarlo para que responda a nuestras necesidades de programación
20
Igual que sucede en la vida real, donde los objetos tienen una serie de características y un
comportamiento determinado; en Java, los objetos, tienen unos datos concretos y una serie
de rutinas para que se pueda operar a partir de ellos. De esta forma, nos encontramos con
dos tipos de componentes de un objeto:
¿Qué es un objeto en Java? Como ves, un objeto en Java es la unidad básica de este
lenguaje de programación y representa las entidades de la vida real. Un programa típico de
Java crea muchos objetos que interactúan al invocar métodos. De esta forma, podemos
decir que un objeto consiste en:
Declaración de objetos:
Ahora que hemos definido qué es un objeto en Java, tenemos que hablar de que
cuando creamos objetos, los estamos declarando. Lo primero que hacemos para
definir un objeto es crear un molde o una receta en el que vamos a especificar el
comportamiento del objeto y sus características.
Una clase describe un grupo de objetos que comparten propiedades y métodos comunes
◼ Una clase es una plantilla que define qué forma tienen los objetos de la clase
Las clases son objetos, y como todos los objetos pueden tener atributos y además les
podemos mandar mensajes. Pero las clases son objetos con responsabilidades especiales, la
más común es la de crear nuevos objetos. Cada vez que a le mando el mensaje new a una
clase obtengo una nueva instancia de esa clase. Podemos crear nuevas instancias en
cualquier momento de nuestro programa (en el workspace, dentro de un método, etc).
Entonces, los mensajes de clase son mensajes que entienden las clases, no las instancias de
las mismas. El nombre (selector) de un mensaje de clase se escribe igual que siempre
(empieza con minúscula).
Cada mensaje de clase debe tener asociado un método de clase (su codificación).
Las variables de clase nos sirven cuando queremos que nuestros objetos tengan alguna
referencia a algún valor, que sea el mismo para todas las instancias de esa clase, y que
además pueda cambiar (por eso usamos una variable y no hardcodeamos ese valor en el
código del programa, asumiendo que es posible).
8.1.2
BUCLES
BUCLE FOR
BUCLE WHILE
BUCLE DO_WHILE
8.2. EXPRESIONES
Las expresiones, además de un valor, tienen un tipo asociado, que depende de las
sobrexpresiones dentro de la expresión.
Una expresión se puede conjuntar con otras para formar una expresión mayor mediante el
uso de operadores
– Asignaciones.
– Invocaciones a métodos.
– Operandos.
Terminar la ejecución
9. PARADIGMAS
• Lenguajes
• Traductores e intérpretes
• Métodos de diseño de programas
• Surgimiento de los paradigmas
• Clasificación de los paradigmas
Procedimentales
Declarativos
• Principales paradigmas
9.1 LENGUAJES
9.5.1 PROCEDIMENTAL:
9.5.2 DECLARATIVO
Este paradigma no necesita definir algoritmos, puesto que describe el problema en lugar
de encontrar una solución al mismo. Este paradigma utiliza el principio del razonamiento
lógico para responder a las preguntas o cuestiones consultadas.
• Imperativo
• Objetos Paradigmas declarativos:
• Funcional
• Lógico
Otros paradigmas:
• Heurístico
• Concurrente
27
Cuando se utilizan tipos entre los objetos estos no pueden intercambiarse, bueno o al
menos no totalmente ya que pueden lograrse intercambiar de formas muy limitadas.
Tipo Estático
Los datos de tipo estático son expresados en tiempo de compilación con esto se dice que mediante
un análisis de compilación puede determinarse el tipo de dato.
El tipo estricto
Todas las expresiones son consistentes en tiempo de compilación, es decir asegura que no se asigne
accidentalmente un tipo de valor incorrecto a una variable, por esta razón es que suele tratarse como
un tipo de datos estático. El tipo de dato estricto también se encarga de que no se accedan a
propiedades o métodos que no pertenezcan al tipo de objeto.
Tipo Dinámico
En este tipo de dato las comprobaciones se realizan en tiempo real es decir en tiempo de ejecución.
Esto permite que una variable tome valores de tipos diferentes en diferentes momentos. Los
lenguajes que podemos mencionar que utilizan este tipado están Python y PHP.
Tipos de datos simples Un tipo de dato simple es aquél cuyos valores son atómicos, es
decir, que no pueden ser descompuestos en otros valores, por lo que también es denominado
como tipo de dato “atómico”.
28
Tipos de datos recursivos Entre los tipos de datos compuestos merecen una
especial distinción los denominados tipos recursivos.
Los lenguajes con efecto de lado utilizan un modelo en el que las variables están
estrechamente relacionadas con direcciones de la memoria del computador, y actúan
modificando repetidamente la representación de sus datos, mediante asignaciones
destructivas. De esta manera, el valor de una expresión puede depender de otros
factores, como expresiones evaluadas anteriormente que modifican las posiciones de
memoria, las evaluaciones previas de la misma expresión, los valores de otras
variables no explicitadas en la invocación, etc.
• Enlace
- Enlace estático
- Enlace dinámico
• Ámbito y entorno
• Pasaje de Parámetros
- Por copia
- Por referencia
• Mecanismos de evaluación
- Evaluación ansiosa
29
- Clase 1
30
Clase 2
31
Clase 3,4 y 5
32
Clase 6
33
Clase 7
34
Clase 8
35
Clase 9
36
GLOSARIO
calificada
Atributos: Son los datos que caracterizan a los objetos de una clase y
de nuestra aplicación
Ocultación: El acceso al estado del objeto está regulado por los métodos,
Bibliografía
tecnologiapreu.wordpress.com/2017/08/14/programacion-orientada-a-objetos-vs-
programacion- estructurada/.
javautodidacta.es.
www.tokioschool.com/noticias/que-es-objeto-en-java-aprende-programar-
java/. tokioschool.com/noticias/que-es-objeto-en-java-aprende-programar-
java/. wiki.uqbar.org/wiki/articles/variables-y-metodos-de-clase.html.
techlandia.com/son-variables-instancia-java-info_197306/.
profile.es/blog/que-son-los-paradigmas-de-programacion/. wikipedia.
en.wikipedia.org/wiki/Java_Development_Kit.
Pappas Chris H, Murray William H(2002), Visual C++ .NET Manual de Referencia. Mc Graw Hill
Stroustrup. Bjarne (2003). El Lenguaje de Programación C++. Edición Especial; Addison Wesley;
Wu, C. Thomas (2001). Introducción a la Programación Orientada a Objetos con Java. Mc Graw
GUTIERREZ, Francisco, programación Orientada a Objetos con Java, Editorial Thompson, 2007.
ECKEL, Bruce, Piensa en Java, México, editorial Pearson- Prentice Hall,, 2007, Cuarta Edición.
SCHILDT, Fundamentos de Java, México, Mac Graw Hill, 2007, Tercera Edición.
Thompson, 2006.
CAHOON James, Programación en java 5.0, México, Mac graw Hill, 2006, primera edición.
SANCHEZ, programación en java 2 serie Schaum, México, Mac graw Hill, 2005, Primera
edición.
40