# Programació i robòtica

La programació està directament relacionada amb la robòtica. La programació ens permet comunicar-nos directament amb els robots per tal de que executin les ordres que prèviament hem programat.

## Programari lliure a l'escola

El programari lliure és una manera de pensar la tecnologia, la seva construcció, ús i distribució. Quan parlem de programari lliure, diem que els usuaris són lliures de (els està permès) utilitzar, distribuir, estudiar i modificar el programari que posseeixen.
El programari lliure és una qüestió de la llibertat dels usuaris d'executar, copiar, distribuir, estudiar, canviar i millorar el programari.
En tots els casos, és necessari comptar amb el codi font del programari per poder modificar-ho i estudiar-ho. No es parla d'un programari que no té llicència d'ús, sinó que es distribueix amb llicències lliures, és a dir, amb llicències que li donen als usuaris totes les llibertats que enuncia la seva definició.
En tractar-se d'una comunitat molt àmplia, de la qual participen una gran diversitat de persones (no només programadors sinó també usuaris) comencen a sorgir diferents posicions i, sorgeix un moviment denominat “codi obert”, o “open source” en anglès. El problema és que el terme “programari lliure”, en anglès, “free software”, porta algunes confusions, atès que el terme “free” també pot interpretar-se com “gratis”, i el programari lliure és molt més que un programari gratuït.
És així que, en aquesta època, el corrent del programari lliure s'obre en dues branques: una més orientada a la “definició conceptual i filosòfica” i una altra, una mica més pràctica. Les dues concepcions fan referència a gairebé el mateix tipus d'aplicacions, però es basen en principis diferents.
Els seguidors del codi obert consideren com fer «millor» al programari, en un sentit pràctic operatiu, instrumental solament. Plantegen que el programari que no és lliure no és una solució òptima. Per al moviment del programari lliure, no obstant això, el programari que no és lliure és un problema social, i la solució és parar d'usar-ho i migrar al programari lliure.

## Per què programar?

Introduir aspectes de programació no només apunta a un aprenentatge tècnic, sinó que permet desenvolupar una sèrie d'habilitats, com el pensament analític o de solució de problemes, que són molt requerits en els treballs que tenen a veure amb tecnologia i ciència, però que també es poden aplicar a altres àrees.
Aquests programes que s'executen en les nostres computadores, televisors, etc. van ser escrits per programadors en diferents llenguatges que li indiquen al dispositiu com fer una acció determinada, és per això que és important saber primer de tot què és un programa: Un programa és un conjunt d'instruccions o ordres que li indiquen a la computadora com es realitza una tasca.
Des de la perspectiva educativa, les característiques més importants d'aquests robots és que els alumnes poden aprendre els conceptes bàsics de programació en forma intuïtiva i lúdica, explorant sobre instruccions i sentències del llenguatge per manipular-los, moure'ls i donar-los ordres per emetre sons, experimentant els seus resultats en forma interactiva i mitjançant l'observació directa del robot.

## Variables

Una variable és un nom que representa o refereix a un valor.

## Variables en funcions

Quan treballem amb funcions i utilitzem variables, tant dins com fora de les mateixes, anem a definir com a variables globals a aquelles que es troben fora de les funcions i variables locals les que es creen dins de la funció. En el cas de les primeres, poden utilitzar-se en qualsevol punt del nostre programa (incloent dins de les funcions) però, en el cas de les variables locals, solament poden utilitzar-se dins de la funció on van ser definides.

## Tipus de dades

Un tipus de dades defineix el conjunt de valors i les operacions vàlides que poden realitzar-se sobre aquests valors.
El conjunt de valors representa tots els valors possibles que pot arribar a prendre una variable d'aquest tipus.
Les operacions permeses, són totes aquelles operacions vàlides per a les dades pertanyents a aquest tipus.

## Tipus Bàsics

* Nombres: Enters - Reals
* Lògics (Booleans)
* Cadenes de text (Strings)

## Col·leccions

* Llistes
* Tuplas
* Conjunts
* Diccionaris

## Condicional IF

La sentència if és una estructura de control que avalua una condició, i executa un conjunt d'instruccions en cas que condició sigui veritable o (opcionalment) un altre conjunt d'instruccions si la condició és falsa.

## Sentència d'iteració FOR

La sentència iterativa “ for” permet executar una seqüència de sentències utilitzant una variable de control i expressions aritmètiques.

## Sentència d'iteració  WHILE

La sentència iterativa “while” permet executar una seqüència de sentències mentre que una condició lògica, situada al principi del bucle, sigui veritable.

## Vegeu també

* Electrònica i robòtica

## Referències

* Curso Practico de formacion con Arduino, de Oscar Torrente Artero (castellà)
* Pàgina oficial d'arduino: http://www.arduino.cc/
* Arduino Starters Kit Manual, A Complete Beginners guide to the Arduino, de Mike McRoberts (anglès)