Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto
Introducción a la Programación
Sistemas Electrónicos Programables
Se llama Programación a la implementación de
un algoritmo en un determinado lenguaje de
programación, para realizar un programa.
¿Qué es la Programación?
Un Algoritmo es una secuencia no ambigua, finita y
ordenada de instrucciones que han de seguirse para
resolver un problema.
Un Programa es una secuencia de instrucciones
que un procesador puede interpretar y ejecutar.
Un programa informático está formado por algoritmos y
estructuras de datos.
Sistemas Electrónicos Programables
Programación: Arte o Ciencia
PROGRAMACIÓN
CIENCIA
Estructuras de
Datos
Primitivas
Algorítmos
Metodologías
Paradigmas
Estructuras de
Control
Aprendizaje y Aplicación de la
Programación
Teoría de la
Programación
Diseño
Algorítmico
ARTE
Artículo completo en http://cala.unex.es/cala/epistemowikia/index.php?title=Programaci%C3%B3n:_%C2%BFarte_o_ciencia%3F
Donald Knuth escribió ‘Mi sensación es que cuando preparamos un programa, la experiencia es similar a la de crear poesía o
componer música; como dijo Andrei Ershov: programar puede proporcionarnos satisfacción, tanto intelectual como
emocionalmente, ya que superar la complejidad y establecer un sistema de normas es un logro real’
Sistemas Electrónicos Programables
Un Leguaje de Programación es el ‘idioma’
utilizado para controlar el comportamiento de un
sistema programable.
Lenguajes de Programación
Un lenguaje de programación consiste en un
conjunto de símbolos y reglas sintácticas y
semánticas que definen su estructura y el significado
de sus elementos y expresiones.
int a = 0, b = 4, c;
c = a + b;
if (c > 5)
c = 4;
Declaración de
variables
Condicional
Sentencia
Sistemas Electrónicos Programables
Lenguajes de Programación (continuación…)
Los lenguajes de programación se pueden clasificar por nivel: Lenguajes de alto nivel: aquellos con una estructura más
cercana al lenguaje humano (C, Java, Python…).
Lenguajes de bajo nivel: aquellos con una estructura más cercana al lenguaje máquina (ensamblador).
o por la forma de ejecutarse: Lenguajes compilados: aquellos cuyo código se
transforma a un código binario ejecutable directamente (C, Ensamblador…)
Lenguajes interpretados: aquellos que necesitan de un programa que traduzca en ejecución el código fuente escrito a instrucciones máquina (Java, Python…)
Sistemas Electrónicos Programables
Lenguajes de Alto y Bajo Nivel
Ejemplo de aplicación:
Desarrollar un sistema de iluminación interior, alimentado
por una placa solar, el cual se encenderá automáticamente
en base a la información proporcionada por dos sensores:
1. Sensor de luminosidad: se incluye un filtro hardware para que
se trate como un sensor digital (0 luz suficiente y 1 luz
insuficiente).
2. Sensor PIR de presencia: detecta la presencia (0) o no (1) de
una persona en la zona de iluminación.
¿En que lenguaje se programaría?
Sistemas Electrónicos Programables
Lenguajes de Alto y Bajo Nivel (continuación…)
Programa en Ensamblador (PIC12F508):
list p=12f508, f=inhx8m
#include "p12f508.inc"
__config _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC
counter equ 0x07
org 0 ; start program
movwf OSCCAL
init movlw b'11001011'
TRIS GPIO ; GP0 and GP1 input, GP2 ouput
clrf GPIO
movlw b'00010111'
OPTION ; Enabled Wake-Up, Clk=Osc/4, Prescaler to TMR0,
Prescaler=256
[continue...]
Sistemas Electrónicos Programables
Lenguajes de Alto y Bajo Nivel (continuación…)
Programa en Ensamblador (PIC12F508):
Loop btfss GPIO, 0 ; check luminosity sensor
goto idle
btfsc GPIO, 1 ; check presence sensor
goto idle
call onLight ; turn on light
onLoop call delay50ms ; delay 50mS
btfss GPIO, 1 ; check presence sensor
goto onLoop
movlw 0x64
movwf counter
marginLoop call delay50ms ; delay 50mS
btfss GPIO, 1 ; check presence sensor
goto onLoop
decfsz counter, f ; execute loop 100 times 5 seconds
goto marginLoop
goto idle ; go to standby
[continue...]
Sistemas Electrónicos Programables
Lenguajes de Alto y Bajo Nivel (continuación…)
Programa en Ensamblador (PIC12F508):
idle call offLight ; turn off light
sleep ; go to sleep mode
goto loop
onLight bsf GPIO, 2
retlw 0
offLight bcf GPIO, 2
retlw 0
//delay 50mS with Timer0
delay50ms clrf TMR0
nop
waitTMR0 movf TMR0, W
movlw 0xC2
subwf TMR0,W
btfss STATUS,C
goto waitTMR0
retlw 0
END
Sistemas Electrónicos Programables
Lenguajes de Alto y Bajo Nivel (continuación…)
Programa en C (ATMEGA328P con Arduino):
#define LIGHT 2
#define LUMINOSITY 3
#define PRESENCE 4
int cont;
void setup(){
pinMode(LIGHT, OUTPUT);
pinMode(LUMINOSITY, INPUT);
pinMode(PRESENCE, INPUT);
}
[continue...]
Sistemas Electrónicos Programables
Lenguajes de Alto y Bajo Nivel (continuación…)
Programa en C (ATMEGA328P con Arduino):
void loop(){
if (digitalRead(LUMINOSITY) == HIGH) {
if (digitalRead(PRESENCE) == LOW){
digitalWrite(LIGHT, HIGH);
contador = 100;
do {
delay(50);
if (digitalRead(PRSESENCE) == HIGH)
contador--;
else
contador = 100;
}
while(contador > 0);
digitalWrite(LIGHT, LOW);
}
}
}
Sistemas Electrónicos Programables
Proceso de Compilación
Programa
Fuente
COMPILADOR
Programa
Objeto
LINKER
Programa
Ejecutable
Err
ore
s
Lenguaje de alto nivel
Lenguaje máquina
Depura
ció
n e
n T
iem
po d
e E
jecució
n
Lenguaje
de bajo nivel
Sistemas Electrónicos Programables
Estructuras Básicas de Control
if (expresión)
{
sentencias
}
else
{
sentencias
}
Condicional
while (expresión)
{
sentencias
}
do
{
sentencias
}
while (expresión)
for expr1;expr2;expr3)
{
sentencias
}
Iteraciones
switch
(expresión)
{
case valor1:
sentencias
break;
...
default:
sentencias
break;
}
Selección
Sistemas Electrónicos Programables
Tipos de Datos Básicos
Tipo Tamaño Mínimo Máximo
boolean 1 bit 0 ‘falso’ 1 ‘verdadero’
char* 8 bits -128 127
unsigned char 8 bits 0 255
int 16 bits -32768 32767
unsigned int 16 bits 0 65535
short long 24 bits -8388608 8388607
unsigned short long 24 bits 0 16777215
long 32 bits -2147483648 2147483647
unsigned long 32 bits 0 4294967295
float 32 bits -3.4x10-38 3.4x1038
* El char representa un carácter ASSCI pero internamente es un valor
entero de 8 bits
Sistemas Electrónicos Programables
Variables
Las variables es sólo un nombre para identificar
posiciones de memoria.
Este nombre debe ser válido y único.
Toda variable debe ser declarada antes de ser usada.
En las variables (posiciones de memoria) se
guardan los datos usado por un programa en
ejecución. long a;
unsigned int a = 30;
Una variable se puede
inicializar en su declaración
Sistemas Electrónicos Programables
Variables (continuación…)
Las variables pueden ser: Globales: son las que se declarar fuera de cualquier
función; y son accesibles desde cualquier parte del programa.
Locales: son las que se declaran dentro de una función; y sólo son accesibles para ser usadas dentro de esa función.
int a = 5;
void funcion1(){
int b = a + 2;
}
void funcion2() {
int c = b + 4;
}
Error de Compilación
http://arduino.cc/en/pmwiki.php?n=Reference/Scope
Sistemas Electrónicos Programables
Variables (continuación…)
Por medio de la palabra clave static se pueden crear
variables visibles sólo dentro de la función donde es
declarada;
mientras que una variable local es destruida cada vez
que la función es llamada, las variables estáticas
persisten entre diferentes llamadas.
int getValue(){
static int value;
value = value + 1;
return value;
}
Una variable estática no
puede ser inicializada en
la declaración
http://arduino.cc/en/pmwiki.php?n=Reference/Static
Sistemas Electrónicos Programables
Constantes
Son aquellos valores que una vez compilado el
programa, no pueden ser cambiados.
Se declaran con la directiva ‘#define’ y pueden ser de tipo
carácter, entero, decimal…
O con la palabra clave const:
#define A 30
¡¡INFRAUTILIZADAS!!
Muy útiles para el mantenimiento del software
const int A = 30;
Sistemas Electrónicos Programables
Operadores Aritméticos Básicos
Suma ‘+’: a + b
Resta ‘-’: a – b
Multiplicación ‘*’ : a * b
División ‘/’: a / b
División resto ‘%’: a % b
Incremento ‘++’: a++
Decremento ‘--’: a--
Sistemas Electrónicos Programables
Operadores a Nivel de Bit Básicos
And ‘&’: a & b
Or ‘|’: a | b
xor ‘^’ : a ^ b
not ‘~’: ~a
Desplazamiento a la derecha ‘>>’: a >> 4
Desplazamiento a izquierda ‘<<’: a << 4
Sistemas Electrónicos Programables
Operadores Lógicos Básicos
and ‘&&’: a && b
or ‘||’: a || b
not ‘!’ : !a
igualdad ‘==’: a == 4
desigualdad ‘!=’: a != 4
mayor que ‘>’: a > 4
mayor o igual que ‘>=’: a >= 4
Menor que ‘<’: a < 4
Menor o igual que ‘<=’: a < 4
Sistemas Electrónicos Programables
Subrutinas o Funciones
Las funciones tienen que estar declaradas para
poder ser utilizadas.
Pueden recibir valores que modificarán su
comportamiento.
Una Función es un conjunto de líneas de código
que realizan una tarea específica y pueden
retornar un valor.
int Suma(int a, int b)
{
return a + b;
}
Sistemas Electrónicos Programables
Subrutinas o Funciones (continuación…)
¿Cómo llamar a una función?
por su nombre,
y pasando los parámetros que tenga declarados.
La función Main es el punto de inicio de un
programa.
C = Suma(5, 6);
int Main() ó int Main(int argc, char *argv[])
Sistemas Electrónicos Programables
Entorno de Desarrollo
Un buen entorno de desarrollo facilita y agiliza el proceso de programación.
Pueden incluir también: Simuladores: permite hacer una simulación del programa
implementado
Debuggers: permite ver la ejecución real del programa paso a paso.
Un Entorno de Desarrollo Integrado o IDE es
un programa software compuesto por un
conjunto de herramientas que facilitan a los
programadores la creación de programas.
Sistemas Electrónicos Programables
Técnicas de Programación
Programación estructurada: es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo, utilizando únicamente subrutinas y tres estructuras:
secuencia, selección e iteración.
Programación orientada a objetos: es un paradigma de programación que usa objetos para diseñar los programas.
Usa técnicas como la herencia, el polimorfismo o el encapsulado.
Otras: programación funcional, programación dirigida a eventos…
Sistemas Electrónicos Programables
Diagramas de Secuencia
También conocidos como organigramas, son una
representación gráfica de un algoritmo.
Utiliza símbolos para representar las sentencias o las
estructuras de control.
Simbología básica:
Inicio (punto de entrada) y fin (punto de salida) del
diagrama
Formula una pregunta o cuestión, y ejecuta una
salida u otra.
Indica la secuencia del diagrama
Representa la ejecución de una o más actividades o
procedimientos.
¡No lo toques!
¿Funciona?
¿Lo has
tocado?
¡Imbécil!
¿Tendrás
problemas?
Pasa del tema
¡Pobre bastardo!
¿Lo sabe
alguien?
¿Puedes
culpar a otro?
¡¡ NO HAY
PROBLEMA !!
¡Escóndelo!
Si No
Si
Si
Si
Si
No
No
No
No
Sistemas Electrónicos Programables
Fases del Desarrollo Software
IMPLANTACIÓN Se implanta el sistema donde corresponda y…
PRUEBA Se comprueba el funcionamiento del sistema en
base a los requisitos definidos en el análisis.
IMPLEMENTACIÓN Se implementa el programa.
DISEÑO
Se diseñan los diferentes algoritmos a
implementar siguiendo las especificaciones
anteriores.
ANÁLISIS
Se debe estudiar el sistema a desarrollar,
comprenderlo y especificar los requisitos
software.
Err
or
Err
or
Sistemas Electrónicos Programables
Estrategia de Diseño Top-Down
En el modelo Top-Down cada parte del sistema se
especifica de forma superficial para después refinar
con mayor detalle cada parte.
Se realizan tantas iteraciones como sean necesarias.
La codificación no puede comenzar hasta que no se haya
alcanzado un nivel de detalle suficiente.
En el diseño Bottom-Up se diseñan en detalle las
partes individuales y después se enlazan para
formar componentes más grandes.
Sistemas Electrónicos Programables
Estrategia de Diseño Top-Down (continuación…)
Diagrama
función Main Se define la estructura de la función Main
Diagramas de
funciones de nivel
1
Se estudian todas aquellas funciones de
alto nivel que surgen del paso anterior
Diagramas de funciones
de nivel 2..n
Se repite el proceso anterior hasta
definir el funcionamiento de todas las
funciones
Diagramas con detalles de
programación
Se complementan las funciones con
detalles relevantes para la
programación final
Esta presentación está sujeta a la licencia de Reconocimiento
de Creative Commons mediante la cual se permite la copia, la
distribución, la comunicación pública y la generación de obras
derivadas sin ninguna limitación siempre que se cite al autor y
se mantenga el aviso de la licencia.
© 2014, Jonathan Ruiz de Garibay
Algunos derechos reservados
Top Related