Introdución á programación
Limiar
editarDe consultarmos nun manual de matemáticas o que é o algoritmo, deducimos que é un conxunto de finito de instrucións que permite atopar a solución dun problema. Cada microprocesador contén un conxunto de instrucións que realizan certas operacións sobre unha ou máis palabras de bits, e as instrucións van tamén codificadas en bits.
Enténdese que escribir con só dúas teclas, o 0 e mais o 1, é incómodo. Ao primeiro, para deseñar un algoritmo que executase o computador, escribíase por medio dunhas etiquetas mnemotécticas; esta foi a orixe da linguaxe ensambladora.
Sobre desta linguaxe ensambladora fóronse construíndo outras linguaxes de programación de máis alto nivel, no que se produce unha abstracción de datos, os textos nos que se condifican os algoritmos coñécense como códigos fonte e seguen as regras sintácticas de cada linguaxe de programación
Tras escribirmos o algoritmo, un compilador ou intérprete (outro programa) transformará o texto en código máquina que o procesador será capaz de executar.
Historia
editarEvolución da programación
editarAo primeiro os programas seguían unha execución semellante á do código ensamblador, o que implicaba que houbese un control sobre que liña de instrución tiña que se executar a continuación, que se podía cambiar mediante certas redireccións (GOTO e GOSUB en BASIC, por exemplo). Malia a iso, aos poucos tendeuse cara o que se chama programación estruturada.
Programación estruturada
editarA programación estruturada segue tres regras: a secuencia, a iteración e a decisión. A primeira indica que as instrucións do código leranse de principio a fin; a segunda indica que, segundo determinada condición, un número de instrucións poderían repetirse un número determinado de veces, e a tercerira indique que segundo unhas certas condicións executaranse ou non un conxunto de instrucións.
No seguinte exemplo, un algoritmo para limpar pratos, aprécianse estas tres características. A identación das instrucións indican cales se engloban e cales non nas súas predecesoras.
mentres haxa pratos coller prato mentres haxa sucidade botar xabón pasar a freguxe polo prato se prato é azul poñelo cos azuis
En código non estruturado, quedaría máis enleado.
1 coller prato 2 botar xabón 3 pasar a estropallo o prato 4 se hai sucidade ir á instrución 2 5 se o prato non é azul ir á instrución 7 6 poñelo cos azuis 7 se hai máis pratos ir á instrución 1
Antes de comezar un programa
editarEstrutura dun programa
editarNa programación estruturada hai un principio e un fin perfectamente ben definidos de acordo ao diagrama de fluxo realizado ao formular a idea do programa.
Un programa ben estruturado debería ter algún subprograma que capture calquera erro dentro do programa principal ou de calquera subprograma dentro da aplicación de tal xeito que o subprograma que captura os erros xere un rexistro de datos que describa o erro xerado e/ou procurar o subprograma no que está a orixe do erro coa finalidade de corrixilo. Para facilitar a corrección destes erros faise uso dos comentarios engadidos no código fonte.
Variables e constantes
editarComo vimos, o computador segue unha serie de instrucións. Pero esas instrucións teñen que operar sobre unha serie de datos. O computador típico só procesa unha instrución á vez, polo que precisa espazos de memoria onde gardar ou depositar os datos cos que se traballa. Aquí é onde entran en xogo as variables e constantes.
Ao primeiro, co ensamblador, podiase dicir ao computador, por exemplo: 'Executa a instrución desa posición da memoria' ou tamén 'Nesa posición de memoria gárdase a miña idade, imprímea na pantalla'. Todo isto derívase do feito de que os programas tamén son datos. Esta ambigüidade presenta numerosos atrancos cando se producen erros, por iso que, a medida que as linguaxes evolucionan cara niveis superiores, impídese o tratamento indistinto dos datos.
Quizais semelle máis complicado do que é, poñamos un exemplo, queremos sumar dous números. O noso programa terá que ter tres caixóns, un para cada número e outro para o resultado. Cada caixón ten un nome no canto dunha posición de memoria, de xeito que só hai que o nomear:
Preciso caixóns A, B e Resultado
Le un número e gárdao en A Le un número e gárdao en B Suma A e B e gárdao en Resultado Imprime o contido de Resultado
As posicións de memoria A e B son variables. Se o queremos ler e escribir podemos facelo. Tipicamente, existirán datos que non pensamos modificar, non queremos que o usuario teña que introducilos de cada vez, ao ser de natureza máis constante que outros (como pode ser o valor Pi para calcular o perímetro). Para evitar modificalos por erro, podemos pedir ao sistema variables especiais, que non poden ser reescritas, son as constantes. Un exemplo:
Comentario: Este programa calcula a área dun círculo
Constante PI = 3'14159265 Variable R Variable Resultado
Ler número e gardar en R Calcular PI * (R * R) e gardar en Resultado Imprimir Resultado
Comentarios
editarOs comentarios son liñas de texto que o compilador ou o intérprete non consideran como parte do código, co que non están suxeitas ás restricións de sintaxe e serven para aclarar partes do código en lecturas posteriores e, en xeral, para anotar calquera cousa que o programador considere oportuno.
Os programadores adoitan documentar os programas con cabezallos de texto onde describe a función que vai realizar o programa, a data de creación, o nome do autor e nalgúns casos as datas de revisión e o nome do revisor.
Nos casos de programas que requiran facer uso de chamadas a subprogramas dentro da mesma aplicación, co que cada subprograma debera estar documentado, describindo a función que realiza cada un dos subprogramas dentro da aplicación.
Estruturas de datos e de control
editarEstruturas de control
editarAs estruturas de control divídense en dúas clases: Estruturas de control condicional e estructuras de control repetitivo.
As estruturas de control condicional son as que inclúen alternativas de selección baseándose no resultado dunha operación booleana, como por exemplo, unha comparación (A=B). Segundo a expresión sexa certa ou falsa, executarase unha parte do código ou outro. É o caso da sentencia IF THEN ELSE de Pascal ou Basic:
IF A=0 THEN PRINT "A ten o valor 0" ELSE PRINT "A non ten o valor 0"
Outra sentenza de control son as de tipo SWITCH CASE. Neste tipo de sentenzas especifícase a variable a comparar e a lista de valores con que comparar. O que sexa verdadeiro executarase:
SWITCH A CASE 0: PRINT "A ten o valor 0" CASE 1: PRINT "A ten o valor 1"
Outras ferramentas imprescindibles do control da execución do noso código son os bucles ou ciclos. Consisten nun método que permite repetir un anaco de código varias veces.
Hai basicamente dous tipos:
- Bucle FOR:
O bucle FOR consiste nunha sentenza que engloba un grupo de instrucións e ten unha variable no que o valor se vai modificando de cada volta.
FOR A=0 TO 10 Especificamos neste caso que A variará dende 0 ata 10, co que repetiremos o bucle PRINT "Estamos no bucle" 10 veces. NEXT A Con isto pechamos o bucle e indicamos o final do bloque de instrucións que se repiten
- Bucle WHILE:
O bucle WHILE consiste nun bucle no que o código se repite ata que se cumpra algunha condición booleana (que dea como resultado verdadeiro ou falso). Hai variacións, como o REPEAT...UNTIL, que se diferencia no momento de comprabar se se fai verdadeira ou non a condición.
WHILE A<>(B*2) DO Aquí especificamos a expresión que evaluamos e aquí se comproba A=A+1 Incrementamos o valor de A ata que sexa igual a B*2 DONE Como no FOR, precisamos especificar onde remata o bucle e o código.
Estruturas de datos
editarcreo a como enteiro. creo b como enteiro. creo suma como enteiro. a=2. b=1. suma = a + b.
imprimir suma
Calquera programa que se realice debe de levar unha estrutura para diminuír a tarefa de depuración xa que este labor leva máis tempo do estimado.
De seres principiante na área da programación debes definir o programa a relizar, documentar cada un dos pasos que realizas no teu programa, debes aplicar algún método de captura de erros...
o pseudocódigo é a escrita dun algoritmo nunha linguaxe máis cercana á natural, isto é a orde na linguaxe Javascript repetiría o proceso de quitar lixo engadindo auga e xabrón mentres se refrega sería a seguinte:
function refregar(canto){ var veces = 0; for (veces = 0; lixo = 0, veces = canto ; veces++){ lixo = lixo - (auga + xabrón); } }
Mentres que o algoritmo ou pseudocódigo quedaría así:
función refregar (cantasvecesofago) variable vecesquelevo = 0 repetir (desde que vecesquelevo = 0 ata que o lixo = 0 ou vecesquelevo = cantasvecesofago; aumentar vecesquelevo de unha en unha) lixo = lixo - (auga + xabrón) fin repetir fin función
En primeiro lugar, é moi recomendable facer un esquema sobre o papel con toda clase de datos que se vaian utilizar. Por exemplo, de querermos facer un programa para controlar unha empresa dedicada ao alugueiro de coches, poderiamos precisar:
- Marca do coche
- Modelo do coche
- Cor do coche
- Estado do coche (se está alugado, en reparación ou dispoñible)
- Situación do coche (en que lugar do garaxe ou en que localidade está)
- Quilometraxe do coche
- Prezo por hora do coche
por unha banda, e:
- Nome do cliente
- Apelidos do cliente
- Dirección do cliente
- DNI do cliente
- Permiso de conducir do cliente
- Número de conta do cliente
... etc. por outro