Los lenguajes de programación son todos los símbolos,caracteres y reglas de uso que permiten a las personas "comunicarse" con las computadoras
Programación
Se diseña
Se codifica
Se escribe
Se prueba
Se depura
Código
Código Fuente
Fortran,LISP,COBOL
PASCAL
C
C++, Objective-C
PERL
PYTHON
RUBY
JAVA - PHP - JavaScript
Tipos de lenguajes de programación
Nivel de Abstraccion del Procesador
El paradigma de Programación
Forma de Ejecución
Bajo nivel
Medio Nivel
Alto Nivel
Compilados
Interpretados
Imperativo
Declarativo
Estructurado
Orientado a objetos
Funcional
Lógico
1991 Lenguaje de programación de electrodomésticos
1995 Lenguaje de programación de computadoras
Case Sensitive: hay diferencia entre mayúscula y minúsculas
Cada instrucción termina con ;
Una instrucción puede abarcar mas de una línea
Se pueden dejar espacios y tabuladores
Se marcan bloques de código agrupado con "{}"
Es un algoritmo escrito en algún lenguaje de programación de computadoras.
Pasos para la construcción de un programa
DEFINICIÓN DEL PROBLEMA
ANÁLISIS DEL PROBLEMA
DISEÑO DEL ALGORITMO
CODIFICACIÓN
PRUEBA Y DEPURACIÓN
Los primeros lenguajes de programación no usaban objetos, solo variables. Una variable podríamos decir que es un espacio de la memoria RAM a la que asignamos un contenido.
Se puede almacenar distintos tipos de datos.
En base al tipo de datos seleccionado serán las operaciones que podamos realizar con esa variable, por ejemplo: si tenemos la variable edad deberíamos seleccionar un tipo de datos como integer (número entero) ya que las operaciones relacionadas serán de comparación, sumas o restas y no es necesario tener una profundidad de decimales.
| Tipo de Datos | Significado | Ejemplo Uso |
|---|---|---|
| Byte | Número entero de 8 bits. Con signo |
Temperatura de una habitación en grados Celsius |
| Short | Número entero de 16 bits. Con signo | Edad de una Persona |
| Int | Número entero de 32 bits. Con signo | Distancia entre localidades medida en metros |
| Long | Número entero de 64 bits. Con signo | Producto entre dos distancias almacenadas en variables tipo int como la anterior |
| Float | Número Real de 32 bits | Altura de algún objeto |
| Double | Número Real de 64 bits. | Proporción entre dos magnitudes |
| Boolean | Valor lógico: true (verdadero) o false (falso) | Almacenar si el usuario ha aprobado un examen o no |
Los objetos son entidades complejas que pueden estar formadas por la agrupación de muchas variables y métodos.
|
Tipos de la biblioteca estándar de Java |
String (cadenas de texto) Muchos otros (p.ej. Scanner, TreeSet, ArrayList…) |
|
Tipos definidos por el programador |
Cualquiera que se nos ocurra, por ejemplo Taxi, Autobus, Tranvia |
|
arrays |
Serie de elementos o formación tipo vector o matriz. |
|
Tipos envoltorio o wrapper (Equivalentes a los tipos primitivos pero como objetos.) |
Byte, Short, Integer, Long, Float, Double, Boolean |
|
|
En java los arrays son objetos, instancias de la clase Array, la cual dispone de algunos métodos útiles.
Un array puede estar compuesto por datos primitivos o objetos.
int arrayDeEnteros[] = null;
Integer arrayDeEnteros2[] = null;
arrayDeEnteros = new int[100];
arrayDeEnteros2 = new Integer[100];for(int i = 0; i < 100; i++)
arrayDeEnteros[i] = i;int arrayDeEnteros[] = {1,2,3,4,5};
Integer arrayDeEnteros2 = {new Integer(10)};int arrayDeEnteros[] = {1,2,3,4,5};
int tamanio = arrayDeEnteros.length; //5Los programas de computadoras se apoyan esencialmente en la realización de numerosas operaciones aritméticas y matemáticas de diferente complejidad.
Los operadores son símbolos especiales que sirven para ejecutar una determinada operación, devolviendo el resultado de la misma.
Para comprender lo que es un operador, debemos primero introducir el concepto de Expresión. Una expresión es, normalmente, una ecuación matemática, tal como 3 + 5. En esta expresión, el símbolo más (+) es el operador de suma, y los números 3 y 5 se llaman operandos. En síntesis, una expresión es una secuencia de operaciones y operandos que especifica un cálculo.
Es el operador más simple que existe, se utiliza para asignar un valor a una variable o a una constante. El signo que representa la asignación es el = y este operador indica que el valor a la derecha del = será asignado a lo que está a la izquierda del mismo.
Ejemplo en pseudocódigo:
Entero edad = 20
Decimal precio = 25.45
Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritméticas habituales:
| Operador | Significado |
|---|---|
| + | Suma |
| - | Resta |
| * | Producto |
| / | División |
| % | Resto de la División entera |
Los operadores unitarios requieren sólo un operando; que llevan a cabo diversas operaciones, tales como incrementar/decrementar un valor de a uno, negar una expresión, o invertir el valor de un booleano.
++ operador de incremento; incrementa un valor de a 1
int suma=20;
suma++;
suma=21
-- operador de decremento; Reduce un valor de a 1
int resta=20;
resta--;
resta=19
! operador de complemento lógico; invierte el valor de un valor booleano
boolean a=true;
boolean b= !a;
b=false
Son aquellos operadores que sirven para comparar valores. Siempre devuelven valores booleanos: TRUE O FALSE. Pueden ser Relacionales o Lógicos.
Relacionales
Lógicos
Los operadores relacionales sirven para realizar comparaciones de igualdad, desigualdad y relación de menor o mayor.
| Operador | Significado |
|---|---|
| == | Igual a |
| != | No igual a |
| > | Mayor que |
| >= | Mayor o igual que |
| < | Menor que |
Los operadores lógicos (AND, OR y NOT), sirven para evaluar condiciones complejas
| Expresión | Operador | Resultado |
|---|---|---|
| a && b | AND | true: si a y b son verdaderos. false: si a es falso, o si b es falso, o si a y b son falsos a |
| a || b | OR | true: si a es verdadero, o si b es verdadero, o si a y b son verdaderos. false: si a y b son falsos. |
Conocido como el if de una línea.
Permite devolver un valor u otro según el valor de la expresión analizada.
Expresión lógica ? valor si es verdadero : valor si es falso
Ej: valorPrecioLista = aplicaDescuento == true ? 123 : 234
Mostrar el texto "Hola Mundo" por la consola. Para ello utilizaremos la clase estática System.out. Esta clase nos permite acceder a la salida de la consola. En concreto usaremos el método println(texto).
https://docs.oracle.com/javase/8/docs/api/index.html
public class HolaMundo {
public static void main(String[] args) {
System.out.println("Hola Mundo");
}
}
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
//Código de nuestra clase principal ejemplo aprenderaprogramar.com
public class TestPrograma1 {
public static void main (String [ ] args) {
System.out.println ("Empezamos el programa");
System.out.println ("Por favor introduzca una cadena por teclado:");
String entradaTeclado = "";
Scanner entradaEscaner = new Scanner (System.in); //Creación de un objeto Scanner
entradaTeclado = entradaEscaner.nextLine (); //Invocamos un método sobre un objeto Scanner
System.out.println ("Entrada recibida por teclado es: \"" + entradaTeclado +"\"");
} //Cierre del main
} //Cierre de la claseEl constructor que hemos utilizado dentro de los varios disponibles en la clase Scanner es el que tiene la signatura Scanner (InputStreamsource). Le pasamos como parámetro System.in.
Cuando sobre el objeto Scanner se invoca el método nextLine(), se obtiene un String que se corresponde con el texto que haya introducido el usuario mediante el teclado.
Este resultado del método lo almacenamos en la variable entradaTeclado. Finalmente, mostramos por pantalla cuál ha sido el contenido del texto recibido por teclado.
Un programa puede ser escrito utilizando tres tipos de estructuras de control:
a) secuenciales
b) condicionales
c) repetitivas
Las Estructuras de Control determinan el orden en que deben ejecutarse las instrucciones de un algoritmo: si serán recorridas una luego de la otra, si habrá que tomar decisiones sobre si ejecutar o no alguna acción o si habrá repeticiones.
Es la estructura en donde una acción (instrucción) sigue a otra de manera secuencial. Las tareas se dan de tal forma que la salida de una es la entrada de la que sigue y así en lo sucesivo hasta cumplir con todo el proceso
Operación 1
Operación 2
Este es el caso cuando existe un número de posibles alternativas que resultan de la evaluación de una determinada condición.
En estas estructuras, se realiza una evaluación de una condición y de acuerdo al resultado, el algoritmo realiza una determinada acción. Las condiciones son especificadas utilizando expresiones lógicas.
Las estructuras selectivas/alternativas pueden ser:
● Bifurcación
● Selección múltiple
La estructura alternativa simple si-entonces (en inglés if-then) lleva a cabo una acción al cumplirse una determinada condición.
La selección si-entonces evalúa la condición y:
● Si la condición es verdadera, ejecuta la acción
● Si la condición es falsa, no ejecuta nada
if (condicion)
{
instruccion1();
instruccion2();
// etc
} else {
instruccion1();
instruccion2();
// etc
}
if (condificion) {
bloqueDeInstrucciones(); }if (condificion) {
bloqueDeInstrucciones();
}
else {
if(condicion2){
bloqueDeInstrucciones();
} else {
bloqueDeInstrucciones();
}
}Cada cláusula else corresponde al último if inmediato anterior que se haya ejecutado, es por eso que debemos tener especial consideración de encerrar correctamente entre llaves los bloques para determinar exactamente a qué cláusula corresponde. En este caso, es de especial utilidad indentar nuestro código utilizando espacios o tabulaciones como se muestra en el ejemplo anterior.
final int totalMaterias = 4;
int materiasAprobadas = 2;
if (materiasAprobadas == totalMaterias) {
otorgarCertificado();
}
else {
continuarCapacitacion();
}La condición debe ser una variable o expresión booleana.
Si sólo existe una instrucción en el bloque, las llaves no son necesarias.
No es necesario que exista un bloque else.
Se utiliza cuando existen más de dos alternativas para elegir. Esto podría solucionarse por medio de estructuras alternativas simples o dobles, anidadas o en cascada. Sin embargo, se pueden plantear serios problemas de escritura del algoritmo, de comprensión y de legibilidad, si el número de alternativas es grande.
En esta estructura, se evalúa una condición o expresión que puede tomar n valores. Según el valor que la expresión tenga en cada momento se ejecutan las acciones correspondientes al valor.
switch (expresion){
case valor1:
instrucciones();
break;
case valor2:
instrucciones();
break;
default:
instrucciones();
}La expresión ha de ser una variable de tipo int o una expresión que devuelva un valor entero.
Cuando se encuentra coincidencia con un case se ejecutan las instrucciones a él asociadas hasta encontrar el primer break.
Si no se encuentra ninguna coincidencia se ejecutan las instrucciones del bloque default, la cual es opcional.
El break no es exigido en la sintaxis y entonces si no se pone, el código se ejecuta atravesando todos los cases hasta que encuentra uno.
Es muy común, encontrarse con que una operación o conjunto de operaciones deben repetirse muchas veces.
Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan BUCLES. Y cada repetición del bucle se llama iteración.
Todo bucle tiene que llevar asociada una condición, que es la que va a determinar cuándo se repite el bucle y cuando deja de repetirse.
Bucles infinitos: cuando la condición de finalización del bucle no se llega a cumplir nunca. Se trata de un fallo muy típico, habitual.
Hay distintos tipos de bucles:
● Mientras, en inglés: While
● Hacer Mientras, en inglés: Do While.
● Para, en inglés: For
Esta estructura repetitiva “mientras”, es en la que el cuerpo del bucle se repite siempre que se cumpla una determinada condición
while(condicion){
accion();
}Esta estructura es muy similar a la anterior, sólo que a diferencia del while el contenido del bucle se ejecuta siempre al menos una vez, ya que la evaluación de la condición se encuentra al final. De esta forma garantizamos que las acciones dentro de este bucle sean llevadas a cabo, aunque sea una vez independientemente del valor de la condición
do {
acciones();
} while (condicion);
La estructura for es un poco más compleja que las anteriores y nos permite ejecutar un conjunto de acciones para cada elemento de una lista, o para cada paso de un conjunto de elementos. Su implementación depende del lenguaje de programación, pero en términos generales podemos identificar tres componentes: la inicialización, la condición de corte y el incremento.
for (inicio; condicion; incremento) {
accion();
}
Break: es válida tanto para las bifurcaciones como para los bucles. Hace que se salga inmediatamente del bucle o bloque que se está ejecutando sin finalizar el resto de las sentencias.
Continue: se utiliza en los bucles (no en bifurcaciones). Finaliza la iteración que en ese momento se está́ ejecutando (no ejecuta el resto de sentencias que hubiera hasta el final del cuerpo del bucle). Vuelve al comienzo del bucle y comienza la siguiente iteración si existiera.
Las rutinas son uno de los recursos más valiosos cuando se trabaja en programación ya que permiten que los programas sean más simples, debido a que el programa principal se compone de diferentes rutinas donde cada una de ellas realiza una tarea determinada.
Se la puede llamar desde cualquier parte del programa principal. Además, una rutina puede opcionalmente tener un valor de retorno y parámetros. El valor de retorno puede entenderse como el resultado de las instrucciones llevadas a cabo por la rutina
rutina: sumar(a, b)
valor de retorno: suma de los números a y b.
datos de entrada de la rutina : a y b
A estos datos de entrada los denominamos parámetros y a las rutinas que reciben parámetros las denominamos funciones, procedimientos o métodos, dependiendo del lenguaje de programación.