Bienvenidos a un nuevo curso. Ahora estoy en el ciclo de grado superior: Desarrollo de aplicaciones multiplataforma. Y voy a ser parte del experimento de la formación dual. Estaré haciendo practicas durante un año, y a la vez finalizando la formación.

Deseadme suerte.

miércoles, 24 de septiembre de 2014

Conceptos básicos y resolución de problemas

0

Tema 1
Introducción. Conceptos básicos

Motivación
Si queremos que un ordenador resuelva una tarea, debemos especificar paso a paso todo lo que ha de hacer. Es más, dichas directrices se han de marcar el orden que deben seguirse y en un lenguaje que el ordenador sea capaz de entender.
Un lenguaje de programación no es mas que una manera estándar de pasar estas ordenes o instrucciones al ordenador, Existen multitud de lenguajes de programación.
Todos los lenguajes de programación tienen unas características similares, aunque cada uno sus peculiaridades. Son como idiomas que hablamos las personas.

Un robot tiene las ordenes
D 000 (derecha)
I 001 (izquierda)

Algoritmo: Es la solución a un problema. Se suele expresar en pseudocódigo (lenguaje natural). En este caso, es la secuencia de movimientos que tiene que efectuar el robot para conseguir lo pretendido.
Lenguaje máquina: Es aquel que el ordenador entiende directamente. Un programa en este lenguaje, está formado por una secuencia de 0 y 1. Cualquier cosa que queramos ejecutar tiene que estar escrito en él. En este caso 000 y 001.
(lenguaje) ensamblador: Es un lenguaje en el que cada instrucción corresponde con una instrucción del lenguaje máquina. En este caso D e I.
Lenguaje de alto nivel: Es el lenguaje en el que normalmente se programa. Tiene instrucciones más sofisticadas. En nuestro caso podrían ser "avanza n pasos a la derecha".

Compiladores e intérpretes
Si programamos en lenguajes de alto nivel y sólo podemos ejecutar programas escritos en lenguaje máquina, alguien o algo tiene que traducir.
Dos posibilidades:
- Compilación: Se produce una traducción completa el programa, generándose un fichero ejecutable. Posteriormente puedo ejecutar ese ejecutable tantas veces como quiera. El programa que hace esa traducción se llama compilador.
- Interpretación: El programa no se traduce completo en ningún momento. Existe un entorno que permite su ejecución directa. En tiempo de ejecución, cada instrucción que hay que ejecutar es traducida. El programa que interpreta se llama interprete.
La mayoría de los lenguajes de programación suelen hacer uso de compiladores, aunque también los hay interpretados.
El uso de interpretes suele suponer una menor eficiencia ya que es en la ejecución en la que hay que ir traduciendo cada instrucción y eso supone que las instrucciones no estén disponibles para ir ejecutándose una tras otra y haya que esperar a la traducción.

Sistema operativo
Es una serie de programas ya implementados que el usuario utiliza para:
- Editar, compilar y ejecutar  programas.
- Gestión de ficheros.
- Gestión de memoria.
- Comunicación, seguridad.
- Gestión del rendimiento, multitarea.
- Utilizar un entorno más amigable.

Ejemplos: windows XP, windows Vista, UNix, Linux...

Ciclo de vida del software
Ingeniería y análisis del sistema > análisis de los requisitos > diseño > codificación (programación) > prueba > mantenimiento.


"Primero piensa, después escribe"

Paradigmas 
Una forma de pensar cuando programas
Paradigma estructurado: Pascual, C, Ada, ...
Paradigma orientado a objetos: C++, Delphi, Visual C++, Java, ...
Paradigma funcional: Lisp
Paradigma lógico: Prolog

Temas 2 y 3
Resulción de problemas

Elementos de un programa
Palabras clave: Palabras que ya tienen un significado concreto en el lenguaje de programación y no pueden usarse para nada más. Cada lenguaje de programación tiene las suyas, aunque algunas son bastantes comunes. Ejemplos: while, if, for...
Identificadores: No son palabras clave. Sirven para dar nombres a objetos (constantes, variables, procedimientos y funciones, etc.). Son una secuencia de letras (a-z, A-Z), DIGITOS (0-9) Y "_" (los lenguajes de programación suelen exigir que empiecen por letra).
Operadores: + - * / < > = ...
Separadores: "," ";" "."

Tipos de datos
En matemáticas es importante tipificar los datos de un problema.  ¿Cual es la división entera entre un y dos? ¡0!. Para saber de qué operación se trata, es necesario saber de que tipos son los datos, para evitar errores. En un programa todos los datos han de tener un tipo que se define al principio del programa (según lenguajes).

Tipos de datos en programas
Un tipo de dato es:
- Un conjunto de valores.
- Un conjunto de operaciones (que podemos hacer con ellos).
- Una forma de almacenamiento.
Clases de tipos de datos:
- Predefinidos en el lenguaje de programación (entero, real, carácter, etc.)
- Definidos por el usuario

Tipos de datos escalares
Vienen caracterizados por:
- Un dominio de valores finito.
- La existencia de una relación de orden total entre sus valores.
Dos datos A y B, de un mismo tipo escalar pueden ser comparados resultando de toda operación de relación: =, <, >, <> (distinto), <=, >=. El resultado de toda operación de relación es un valor de tipo booleando; el tipo de dato más sencillo, únicamente puede tomar dos valores verdad o falso.
Los datos escalares admiten también dos operadores unitarios, las funciones sucesor y predecesor que devuelven como resultado el valor del dato que sigue o precede al expresado como argumento:
- Ejemplos sobre el tipo entero: sucesor (17) = 18 Predecesor(5)=4
- Ejemplos sobre el tipo de carácter:sucesor ('H')='I' predecesor('N')='M'
- La función sucesor no está definida `para el mayor de los elementos del dominio de valores de un tipo escalar.
- La función predecesor no esta definida para el menos de ellos.

Tipos escalares definidos por enumeración
Es un subconjunto de los tipos de datos escalares.
Es un tipo de datos definido por el usuario.
Ejemplos:
- tipo semana = (lunes, martes, miércoles, jueves, viernes);
- lunes < jueves
- predecesor(martes)=lunes
- sucesor(lunes)=martes

Tipo booleando
Es un tipo de datos predefinido que sólo toma dos valores, verdad y falso.
Operadores que podemos emplear con este tipo de datos: AND, OR, NOT.
ejemplos:
- lunes<martes    VERDAD                                         
- lunes<>lunes     FALSO
-martes<=jueves  VERDAD
-(lunes<martes)AND(jueves=viernes)                                  FALSO
-(predecesor(martes)=martes)OR(sucesor(lunes)=martes)   VERDAD


Tipo entero
En un espacio finito de memoria no se puede representar un número infinito de valores.
El tipo entero escoge dentro de cada compilado y lenguaje concreto, el subconjunto de enteros representables.
El número total de datos representados depende del número de bits dedicados a representar datos de tipo entero. Con N bits es posible representar 2 a la N datos diferentes.
Usando la representación en complemento a 2, resultan los siguientes valores:
- para 16 bits, 2 a la 16=65536 datos enteros, desde -32768 hasta 32767.
- Para 32 bits, 2 a la 32 = .....
Los datos enteros se escribirán en un algoritmo en notación arábiga, eventualmente precedidos por espacios en blanco y por un signo + o -. El signo se puede omitir si es positivo.

Me tengo que ir a trabajar ¿cuanto puedo perderme en media hora? :/

0 comentarios:

Publicar un comentario

Etiquetas actuales

BD (67) DEF (64) PROG (64) SQL (44) Java (29) PRACTICAS (20) php (18) DI (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) HTML (13) SGE (12) ERP (9) CONSULTAS (8) css (8) Linux (5) XML (5) Android (4) PDM (4) C (3) NetBeans (3) PSP (3) SMARTY (3) comandos (3) HOOK (2) POST (2) XSD (2) cURL (2) JS (1) MEDIA-QUERYS (1) PDO (1) RESPONSIVE (1) TPL (1) TRADUCCIÓN (1) app_inventor (1)

Todas las etiquetas

EJER (78) BD (67) DEF (64) PROG (64) SQL (44) c# (40) Programación (39) Ficheros (36) Java (29) bases de datos (21) PRACTICAS (20) lenguajes de marcas (19) AD (18) Entorno de desarrollo (18) php (18) PROCEDIMIENTOS (17) DI (16) FORM (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) lenguaje C (16) E/R (14) HTML (13) SGE (12) Sistemas informáticos (10) ERP (9) CONSULTAS (8) TRANSACCIONES (8) TRIGGER (8) VISUAL BASIC (8) css (8) FUNCIONES (7) html5 (6) Ada (5) EXAMEN (5) Linux (5) XML (5) estructuras (5) Android (4) DISEÑO (4) INTERFAZ (4) LOG (4) OpenBravo (4) PDM (4) ACTUALIZAR (3) C (3) DIAGRAMA (3) Directorios (3) NEW (3) NOR (3) NetBeans (3) OLD (3) PSP (3) SMARTY (3) comandos (3) css3 (3) AISLAMIENTOS (2) C++ (2) CONTROLERRORES (2) ELIMINAR (2) HOOK (2) INSERTAR (2) INST (2) MULTITABLA (2) POST (2) RECURSIVIDAD (2) SUBCONSULTAS (2) VISTAS (2) XSD (2) cURL (2) punteros (2) AJENA (1) BLOQUEOS (1) Byte (1) CREACION (1) CRM (1) Configuración (1) Controles (1) Datos (1) GOTFOCUS (1) IMAGENES (1) INDICES (1) JS (1) Lenght (1) MEDIA-QUERYS (1) Mingw (1) MonoDeveloped (1) OPTIMISTA (1) PDO (1) PESIMISTA (1) RESPONSIVE (1) SPEAK (1) Scanner (1) Serializacion (1) Streams (1) System (1) TPL (1) TRADUCCIÓN (1) USUARIOS (1) UseSystemPasswordChar (1) app_inventor (1) char (1) examenes (1) libreoffice (1) make (1) redes (1)