SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
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
Errores
Lenguaje de alto nivel
Lenguaje máquina
DepuraciónenTiempodeEjecució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.
Error
Error
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

Más contenido relacionado

La actualidad más candente

Conceptos basicos de la programacion
Conceptos basicos de la programacionConceptos basicos de la programacion
Conceptos basicos de la programacionyamy matin
 
Programacion logica 1
Programacion logica 1Programacion logica 1
Programacion logica 1profedelvalle
 
Algoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigoAlgoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigoAdolfoReyes24
 
Operaciones basicas
Operaciones basicasOperaciones basicas
Operaciones basicaskenia14
 
Presentación de computación
Presentación de computaciónPresentación de computación
Presentación de computaciónLuisRestan1
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de ProgramaciónKudos S.A.S
 
Algoritmo Y Pseudocódigo
Algoritmo Y PseudocódigoAlgoritmo Y Pseudocódigo
Algoritmo Y PseudocódigoJohanCaro5
 
Introduccion a la programacion
Introduccion a la programacionIntroduccion a la programacion
Introduccion a la programacionJose Marroquin
 
Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Facultad de Ciencias y Sistemas
 
Fundamentos programación
Fundamentos programaciónFundamentos programación
Fundamentos programaciónMilton Escobar
 
Diapositivas algoritmos Pseudocodigo diagramas de flujo
Diapositivas algoritmos Pseudocodigo diagramas de flujoDiapositivas algoritmos Pseudocodigo diagramas de flujo
Diapositivas algoritmos Pseudocodigo diagramas de flujoKellyDeArmas
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónMarco Chunab
 
Fundamentos de Programación. Unidad I
Fundamentos de Programación. Unidad IFundamentos de Programación. Unidad I
Fundamentos de Programación. Unidad IFranco Guamán
 
1. Algoritmos y Programas
1. Algoritmos y Programas1. Algoritmos y Programas
1. Algoritmos y Programas1101
 
Algoritmos, Pseudocódigos, Diagrama de Flujo y Metodología
Algoritmos, Pseudocódigos, Diagrama de Flujo y MetodologíaAlgoritmos, Pseudocódigos, Diagrama de Flujo y Metodología
Algoritmos, Pseudocódigos, Diagrama de Flujo y MetodologíaJesus Freites
 
Programas diseñados para realizar algoritmo
Programas  diseñados para realizar algoritmoProgramas  diseñados para realizar algoritmo
Programas diseñados para realizar algoritmoTAMELIMAR
 

La actualidad más candente (20)

Diagramas de Flujo
Diagramas de FlujoDiagramas de Flujo
Diagramas de Flujo
 
Conceptos basicos de la programacion
Conceptos basicos de la programacionConceptos basicos de la programacion
Conceptos basicos de la programacion
 
Programacion logica 1
Programacion logica 1Programacion logica 1
Programacion logica 1
 
Algoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigoAlgoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigo
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Operaciones basicas
Operaciones basicasOperaciones basicas
Operaciones basicas
 
Presentación de computación
Presentación de computaciónPresentación de computación
Presentación de computación
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 
Algoritmo Y Pseudocódigo
Algoritmo Y PseudocódigoAlgoritmo Y Pseudocódigo
Algoritmo Y Pseudocódigo
 
Introduccion a la programacion
Introduccion a la programacionIntroduccion a la programacion
Introduccion a la programacion
 
Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01
 
Tema6
Tema6Tema6
Tema6
 
Fundamentos programación
Fundamentos programaciónFundamentos programación
Fundamentos programación
 
Diapositivas algoritmos Pseudocodigo diagramas de flujo
Diapositivas algoritmos Pseudocodigo diagramas de flujoDiapositivas algoritmos Pseudocodigo diagramas de flujo
Diapositivas algoritmos Pseudocodigo diagramas de flujo
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 
Fundamentos de Programación. Unidad I
Fundamentos de Programación. Unidad IFundamentos de Programación. Unidad I
Fundamentos de Programación. Unidad I
 
1. Algoritmos y Programas
1. Algoritmos y Programas1. Algoritmos y Programas
1. Algoritmos y Programas
 
ALGORITMOS EN EL SOFTWARE
ALGORITMOS EN EL SOFTWAREALGORITMOS EN EL SOFTWARE
ALGORITMOS EN EL SOFTWARE
 
Algoritmos, Pseudocódigos, Diagrama de Flujo y Metodología
Algoritmos, Pseudocódigos, Diagrama de Flujo y MetodologíaAlgoritmos, Pseudocódigos, Diagrama de Flujo y Metodología
Algoritmos, Pseudocódigos, Diagrama de Flujo y Metodología
 
Programas diseñados para realizar algoritmo
Programas  diseñados para realizar algoritmoProgramas  diseñados para realizar algoritmo
Programas diseñados para realizar algoritmo
 

Destacado

Codesign-Oriented Platform for Agile Internet of Things Prototype Development
Codesign-Oriented Platform for Agile Internet of Things Prototype DevelopmentCodesign-Oriented Platform for Agile Internet of Things Prototype Development
Codesign-Oriented Platform for Agile Internet of Things Prototype DevelopmentJonathan Ruiz de Garibay
 
Arduino sin cables: usando Bluetooth
Arduino sin cables: usando BluetoothArduino sin cables: usando Bluetooth
Arduino sin cables: usando BluetoothJorge Zaccaro
 
Introducción a la planificación de proyectos
Introducción a la planificación de proyectosIntroducción a la planificación de proyectos
Introducción a la planificación de proyectosJonathan Ruiz de Garibay
 
Android + Bluetooth + Arduino
Android + Bluetooth + ArduinoAndroid + Bluetooth + Arduino
Android + Bluetooth + ArduinoJonathan Alvarado
 
Communication entre android et arduino via bluetooth
Communication entre android et arduino via bluetoothCommunication entre android et arduino via bluetooth
Communication entre android et arduino via bluetoothBedis ElAchèche
 

Destacado (20)

P01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplabP01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplab
 
01.Puntos Clave de una Presentación Oral
01.Puntos Clave de una Presentación Oral01.Puntos Clave de una Presentación Oral
01.Puntos Clave de una Presentación Oral
 
Codesign-Oriented Platform for Agile Internet of Things Prototype Development
Codesign-Oriented Platform for Agile Internet of Things Prototype DevelopmentCodesign-Oriented Platform for Agile Internet of Things Prototype Development
Codesign-Oriented Platform for Agile Internet of Things Prototype Development
 
Práctica09.Librerías
Práctica09.LibreríasPráctica09.Librerías
Práctica09.Librerías
 
02.El Soporte Visual
02.El Soporte Visual02.El Soporte Visual
02.El Soporte Visual
 
Arduino sin cables: usando Bluetooth
Arduino sin cables: usando BluetoothArduino sin cables: usando Bluetooth
Arduino sin cables: usando Bluetooth
 
02d.Circuito oscilador
02d.Circuito oscilador02d.Circuito oscilador
02d.Circuito oscilador
 
Práctica05.Interrupciones en Arduino
Práctica05.Interrupciones en ArduinoPráctica05.Interrupciones en Arduino
Práctica05.Interrupciones en Arduino
 
Práctica04.Programando Arduino
Práctica04.Programando ArduinoPráctica04.Programando Arduino
Práctica04.Programando Arduino
 
Introducción a la planificación de proyectos
Introducción a la planificación de proyectosIntroducción a la planificación de proyectos
Introducción a la planificación de proyectos
 
Práctica01.Sistemas de Entrada Salida
Práctica01.Sistemas de Entrada SalidaPráctica01.Sistemas de Entrada Salida
Práctica01.Sistemas de Entrada Salida
 
Práctica08.Comunicaciones
Práctica08.ComunicacionesPráctica08.Comunicaciones
Práctica08.Comunicaciones
 
Programación Basada en Autómatas
Programación Basada en AutómatasProgramación Basada en Autómatas
Programación Basada en Autómatas
 
Android + Bluetooth + Arduino
Android + Bluetooth + ArduinoAndroid + Bluetooth + Arduino
Android + Bluetooth + Arduino
 
Trabajo en equipo
Trabajo en equipoTrabajo en equipo
Trabajo en equipo
 
Amplificación de señal con BJT
Amplificación de señal con BJTAmplificación de señal con BJT
Amplificación de señal con BJT
 
Introducción a machine learning
Introducción a machine learningIntroducción a machine learning
Introducción a machine learning
 
Práctica06.Controlando Motores
Práctica06.Controlando MotoresPráctica06.Controlando Motores
Práctica06.Controlando Motores
 
Configuraciones con transistores BJT
Configuraciones con transistores BJTConfiguraciones con transistores BJT
Configuraciones con transistores BJT
 
Communication entre android et arduino via bluetooth
Communication entre android et arduino via bluetoothCommunication entre android et arduino via bluetooth
Communication entre android et arduino via bluetooth
 

Similar a Introduccion a la Programación

Como programar un pic
Como programar un pic  Como programar un pic
Como programar un pic oskarjgf
 
38912287 practica1
38912287 practica138912287 practica1
38912287 practica1rexmersxa7
 
Programación en PLC Xinje - banda transportadora
Programación en PLC Xinje - banda transportadoraProgramación en PLC Xinje - banda transportadora
Programación en PLC Xinje - banda transportadoraLenin Jiménez
 
Microcontroladores: Programación en lenguaje ensamblador de Atmel Studio AVR
Microcontroladores: Programación en lenguaje ensamblador de Atmel Studio AVRMicrocontroladores: Programación en lenguaje ensamblador de Atmel Studio AVR
Microcontroladores: Programación en lenguaje ensamblador de Atmel Studio AVRSANTIAGO PABLO ALBERTO
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxfreddymadriz
 
Intro programacion conceptos_2012
Intro programacion conceptos_2012Intro programacion conceptos_2012
Intro programacion conceptos_2012Rafael Pérez
 
Programación tic
Programación ticProgramación tic
Programación ticlunanogales
 
Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.Damian Chuncho
 
Presentacion de informatica
Presentacion de informaticaPresentacion de informatica
Presentacion de informaticaEduardo_jose
 
Lenguajes de programación parte i.4
Lenguajes de programación parte i.4Lenguajes de programación parte i.4
Lenguajes de programación parte i.4Marquina, Santiago
 
Algoritmos y pseudocodigos.
Algoritmos y pseudocodigos.Algoritmos y pseudocodigos.
Algoritmos y pseudocodigos.srm28
 

Similar a Introduccion a la Programación (20)

Como programar un pic
Como programar un pic  Como programar un pic
Como programar un pic
 
Arduino
ArduinoArduino
Arduino
 
Practica1
Practica1Practica1
Practica1
 
38912287 practica1
38912287 practica138912287 practica1
38912287 practica1
 
Practica1
Practica1Practica1
Practica1
 
Programación en PLC Xinje - banda transportadora
Programación en PLC Xinje - banda transportadoraProgramación en PLC Xinje - banda transportadora
Programación en PLC Xinje - banda transportadora
 
Microcontroladores: Programación en lenguaje ensamblador de Atmel Studio AVR
Microcontroladores: Programación en lenguaje ensamblador de Atmel Studio AVRMicrocontroladores: Programación en lenguaje ensamblador de Atmel Studio AVR
Microcontroladores: Programación en lenguaje ensamblador de Atmel Studio AVR
 
Curso-de-PLC.pdf
Curso-de-PLC.pdfCurso-de-PLC.pdf
Curso-de-PLC.pdf
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Arduino 1
Arduino 1Arduino 1
Arduino 1
 
Intro programacion conceptos_2012
Intro programacion conceptos_2012Intro programacion conceptos_2012
Intro programacion conceptos_2012
 
Arduino
ArduinoArduino
Arduino
 
Programación tic
Programación ticProgramación tic
Programación tic
 
Programación tic
Programación ticProgramación tic
Programación tic
 
Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.
 
Presentacion de informatica
Presentacion de informaticaPresentacion de informatica
Presentacion de informatica
 
Lenguajes de programación parte i.4
Lenguajes de programación parte i.4Lenguajes de programación parte i.4
Lenguajes de programación parte i.4
 
Algoritmos y pseudocodigos.
Algoritmos y pseudocodigos.Algoritmos y pseudocodigos.
Algoritmos y pseudocodigos.
 

Más de Jonathan Ruiz de Garibay (16)

Vocaciones STEM
Vocaciones STEMVocaciones STEM
Vocaciones STEM
 
Amplificadores Multietapa
Amplificadores MultietapaAmplificadores Multietapa
Amplificadores Multietapa
 
Recta de carga para señal
Recta de carga para señalRecta de carga para señal
Recta de carga para señal
 
Fundamentos de los Microcontroladores
Fundamentos de los MicrocontroladoresFundamentos de los Microcontroladores
Fundamentos de los Microcontroladores
 
Polarización de los Transistores
Polarización de los TransistoresPolarización de los Transistores
Polarización de los Transistores
 
Programación en Arduino
Programación en ArduinoProgramación en Arduino
Programación en Arduino
 
Introducción a arduino
Introducción a arduinoIntroducción a arduino
Introducción a arduino
 
Fundamentos de los Transistores
Fundamentos de los TransistoresFundamentos de los Transistores
Fundamentos de los Transistores
 
Transistor Bipolar
Transistor BipolarTransistor Bipolar
Transistor Bipolar
 
Introducción a la Tecnología Electrónica
Introducción a la Tecnología ElectrónicaIntroducción a la Tecnología Electrónica
Introducción a la Tecnología Electrónica
 
Semiconductores
SemiconductoresSemiconductores
Semiconductores
 
Teoría de Diodos
Teoría de DiodosTeoría de Diodos
Teoría de Diodos
 
Fuentes de Alimentación
Fuentes de AlimentaciónFuentes de Alimentación
Fuentes de Alimentación
 
IoT: Objetos conectados a internet
IoT: Objetos conectados a internetIoT: Objetos conectados a internet
IoT: Objetos conectados a internet
 
Time Management Tool Based on New Interaction Paradigms with RFID Technology
Time Management Tool Based on New Interaction Paradigms with RFID TechnologyTime Management Tool Based on New Interaction Paradigms with RFID Technology
Time Management Tool Based on New Interaction Paradigms with RFID Technology
 
WebTag: Smart Tag with Embedded Web Server
WebTag: Smart Tag with Embedded Web ServerWebTag: Smart Tag with Embedded Web Server
WebTag: Smart Tag with Embedded Web Server
 

Introduccion a la Programación

  • 1. Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto Introducción a la Programación
  • 2. 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.
  • 3. 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’
  • 4. 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
  • 5. 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…)
  • 6. 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?
  • 7. 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...]
  • 8. 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...]
  • 9. 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
  • 10. 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...]
  • 11. 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); } } }
  • 12. Sistemas Electrónicos Programables Proceso de Compilación Programa Fuente COMPILADOR Programa Objeto LINKER Programa Ejecutable Errores Lenguaje de alto nivel Lenguaje máquina DepuraciónenTiempodeEjecución Lenguaje de bajo nivel
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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;
  • 19. 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--
  • 20. 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
  • 21. 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
  • 22. 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; }
  • 23. 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[])
  • 24. 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.
  • 25. 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…
  • 26. 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.
  • 27. ¡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
  • 28. 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. Error Error
  • 29. 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.
  • 30. 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
  • 31. 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