Pagina principala a www.pontes.ro Forumul organizatiei Pontes - www.pontes.ro
Acesta este Forumul Pontes, loc in care puteti discuta orice despre persoanele cu dizabilitati, in special despre si cu nevazatori. Puteti afla sau oferi informatii despre locuri de munca, viata sociala, IT (informatica), jocuri audio, ganduri, idei etc.
 
Flux rssRSS    FAQ   Cautare   Membri   Grupuri   Inregistrare 
 Profil   Mesaje private   Autentificare 

Cursul Jaws Scripting - demarare si desfasurare
Du-te la pagina 1, 2  Urmatoare
 
  • Creaza un subiect nou
  • Raspunde la subiect
   Pagina de start a forumului Forumul organizatiei Pontes - www.pontes.ro -> Programare
Subiectul anterior :: Subiectul urmator  
Autor Mesaj

Mesaj postat

Manu

General de divizie
Trimis: Joi, 12 Noiembrie 2009, 03:38    Titlul subiectului: Cursul Jaws Scripting - demarare si desfasurare Raspunde cu citat (quote)

In acest post sunt prezentate cateva informatii preliminare in legatura cu organizarea cursului despre Jaws Scripting.

Dupa ce se stabileste clar cine participa, este nevoie de adresele de mail ale tuturora pentru a crea o lista de discutii dedicata.
Trimiteti adresa de mail la emanuelboboiu (a rond) gmail.com.

Pentru a fi sigur ca doriti sa participati, cititi urmatorul post la care se ajunge apasand tasta "h", post care contine un mic test de evaluare. Daca considerati ca indepliniti conditiile, va inscrieti trimitand adresa dumneavoastra de mail la adresa mentionata mai sus.

Al treilea post din acest topic, celd e dupa test, contine cateva informatii generale din care veti intelege mai clar ce sunt scripturile.

Pentru a fi la curent cu tot ceea ce tine de curs, pana ca acesta sa fie demarat propriu-zis, urmariti acest topic de pe forum, o solutie simpla ar fi adaugarea paginii curente la Favorite / Preferinte.

Succes
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)


Ultima modificare efectuata Manu la Marti, 22 Decembrie 2009, 19:10, modificat de 5 ori in total
Sus

Mesaj postat

Manu

General de divizie
Trimis: Joi, 12 Noiembrie 2009, 03:41    Titlul subiectului: Raspunde cu citat (quote)

PRELIMINARII LA JAWS SCRIPTING


Pentru a înțelege acest curs, este necesară o cunoaștere temeinică a modului de funcționare Jaws for Windows, practic scripting-ul fiind o latură avansată a întreg mecanismului de accesibilizare creat de Freedom Scientific.

Pentru a vă da seama dacă sunteți pregătit sau nu de învățareA / înțelegereA Jaws Scripting-ului, supuneți-vă la următorul test alcătuit din trei itemi.

Încercați să rezolvați pe cont propriu următoarele CERINȚE, iar dacă răspunsul este cunoscut, înseamnă că este Îndeplinită condiția minimă pentru a continua.


Întrebări:
1. Care sunt pașii pentru a citi cu Jaws Cursor al treilea rând al ferestrei curente? Important e să fiți sigur că citiți exact al treilea rând și că vă aflați în fereastra curentă cu Jaws Cursor.
2. Cum se numește unealta Jaws cu ajutorul căreia se fac cele mai multe setări valabile definitiv pentru diferite aplicații sau în general? De aici se fac setări precum: citirea graficelor (toate, cele etichetate sau niciunul), detectarea automată a limbii, nivelul utilizatorului (biginer, intermediate sau advanced) etc..
3. Ce este un edit-box, radio-buton și check-box?


Așadar, dacă credeți că ceea ce a fost expus mai sus sub formă de întrebări vă este cunoscut, nu mai e nevoie decât de logică, creativitate și imaginație pentru a reuși în viitor să REALIZAȚI scripturi de unul singur.

Cursul se va desfasura prin Skype.
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)


Ultima modificare efectuata Manu la Joi, 24 Decembrie 2009, 21:49, modificat de 2 ori in total
Sus

Mesaj postat

Manu

General de divizie
Trimis: Joi, 12 Noiembrie 2009, 03:43    Titlul subiectului: Raspunde cu citat (quote)

JAWS SCRIPTING


INFORMAȚII GENERALE


Când este folosit cu diferite aplicații, Jaws for Windows vă oferă diferite informații prezente în acestea. Instrucțiunile care îi spun Jaws-ului cum să se comporte sunt conținute într-un set de fișiere „default”. Aceste fișiere „default” sunt create de Freedom Scientific, vin și rulează odată cu Jaws. Din păcate, nu toate programele sunt la fel, nu există un standard absolut în ceea ce privește comportamentul, afișarea informațiilor pe ecran etc.. Prin urmare, instrucțiunile care îi spun Jaws-ului cum să se comporte în aceste aplicații se găsesc într-un set de fișiere specifice, particularizate pentru fiecare program.
Multe setări, schimbări, ajustări, pentru situații obișnuite pot fi efectuate din opțiunile Jaws-ului, precum Verbosity sau Screen Echo. În ciuda acestor posibilități, se găsesc întotdeauna situații speciale în care Jaws are nevoie de instrucțiuni mult mai avansate, specifice, astfel încât screen-reader-ul să poată naviga corect, să returneze informații dorite.
Un fișier-script conține o serie de scripturi și funcții. Scripturile și funcțiile pot fi considerate mici programe; fiecare script sau funcție constă în secvențe de cod care îi spun Jaws-ului cum să se miște sau ce să spună în diferite ipostaze. Puteți modifica sau scrie de la zero fișierele-script pentru a face anumite aplicații accesibile cu Jaws. Mai mult, pot fi realizate scripturi care să îndeplinească, să facă în locul dumneavoastră multe din operațiile zilnice, precum scrierea instant a semnăturii în E-mail, la o simplă combinație de taste.
Pe scurt, crearea de scripturi nu are limite, decât cele cauzate de imaginația și creativitatea mai mult sau mai puțin dezvoltată a celui care le realizează.
Prima întrebare care ar trebui să vină în mintea celui care citește această introducere ar fi: „Trebuie să am cunoștințe anterioare de programare?” Răspunsul este: „Nu, nu e neapărat, deși ar fi mult mai ușor. Mulți dintre dezvoltatorii de scripturi au învățat ca prim limbaj DE PROGRAMARE chiar Jaws Scripting-ul.”.


CE SUNT SCRIPTURILE?


Puteți considera scripturile ca fiind mici programe care constau în șiruri de pași individuali care îl ghidează pe Jaws să efectueze diferite acțiuni.
Până la un punct, scripturile pot fi considerate ca mai multe comenzi transmise Jaws ului la o singură apăsare a unei combinații de taste.
În cele ce urmează va fi un mic exemplu pentru a înțelege ce ar putea însemna un script.
Dumneavoastră pentru a citi al treilea rând de pe ecran cu Jaws cursor faceți următorii pași:
• Jaws Cursor (pentru a activa cursorul Jaws),
• Route Jaws to PC (pentru a fi sigur că Jaws Cursor se află în fereastra curentă),
• Page-Up (pentru a muta cursorul Jaws pe primul rând al ecranului),
• Săgeată în jos de două ori (pentru a ajunge pe al treilea rând al ecranului),
• Insert + săgeată în sus (pentru a citi rândul curent, adică al treilea de pe ecran),
• Pc Cursor (pentru a reveni la starea inițială)
Lista de mai sus este o secvență de pași pe care îi faceți consecutiv, îi transmiteți Jaws-ului instrucțiuni pas cu pas ca în final acesta să citească al treilea rând al ecranului. Toți acești pași pot fi conținuți într-un script care poate fi acționat la combinația de taste, să zicem, control + F12. Așadar, dacă în general aveți nevoie să vi se citească într-o aplicație al treilea rând al ecranului, puteți crea un script care la o anumită combinație de taste să efectueze automat toți pașii prezentați mai sus.
Fișierele-script conțin de asemenea funcții. Precum scripturile, funcțiile sunt secvențe de pași, acțiuni care efectuează anumite operațiuni.
Diferența între script și funcție este că în cazul funcției nu se folosesc combinații de taste, ele sunt accesate de către scripturi, acestea din urmă fiind cele acționate prin combinații de taste.
Scripturile și funcțiile sunt create cu aplicația Script Mannager. Se folosesc un set de coduri de programare, formatări, reguli pentru a crea scripturi și funcții, toate la un loc compunând fișierul-script.
După ce scripturile și / sau funcțiile sunt create, fișierul-script este compilat în cod binar, inteligibil pentru mașina de calcul. Imediat după compilare, scripturile pot fi folosite, sunt gata pentru a servi utilizatorul.

Așadar, fișierele-script conțin mai multe scripturi și funcții. Fișierele-script sursă, cele în care se poate citi codul text care este scris de creator, au extensia JSS. O mulțime de astfel de fișiere, fiecare pentru o anume aplicație, pot fi găsite în folderul JAWS Shared Settings.
Fișierul-script „default” conține o mulțime de scripturi și funcții valabile indiferent de programul în care lucrați la un moment dat. Jaws încarcă la pornire fișierul-script „default”, scripturile și funcțiile existente în acesta fiind valabile pretutindeni.
În același timp, toate aplicațiile pot avea fișierul-script specific, creat special pentru utilizarea individuală, particularizată, adaptată la situații diferite.
În afară de fișierele-script sursă cu extensia JSS, în momentul compilării cu aplicația Script Manager, se creează și fișierele binare, inteligibile pentru mașina de calcul, fișiere care au extensia JSB.
Pe scurt, Jaws se folosește pretutindeni în operarea pe calculator de fișierul „default.jsb”, iar în mod particular, dacă vă aflați de exemplu pe aplicația Notepad, de fișierul „notepad.jsb”. Aceasta înseamnă că pentru Notepad au fost create scripturi care să îndeplinească anumite acțiuni valabile doar în acest program, iar în același timp funcționează și combinația insert + F12, aflarea orei curente, combinație care acționează un script aflat în „default.jsb”, adică valabil oriunde ați fi în calculator.
Dacă Jaws se folosește de fișierele JSB, utilizatorul, creatorul de scripturi se folosește de fișierul JSS, în care se vede textul care stă la baza programului. Și mai pe scurt, fișierul JSB este inteligibil pentru Jaws, pentru mașina de calcul, iar fișierul JSS, care conține aceleași informații, este inteligibil pentru utilizatorul uman.

Nota bene:
JSB = Jaws Script Binnary,
JSS = Jaws Script Source.

Pentru realizarea acestui curs folosesc ca sursă de inspirație manualul în limba engleză realizat de Freedom Scientific.
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Sus

Mesaj postat

Manu

General de divizie
Trimis: Vineri, 13 Noiembrie 2009, 00:28    Titlul subiectului: Raspunde cu citat (quote)

Nu am specificat foarte clar, dar... ar trebui si raspunsurile la intrebari in acel E-mail de confirmare, astfel neexistand indoieli in ceea ce priveste nivelul. Nu e neaparat sa fie ca la carte, se vede repede daca e ok treaba, pe multi nu ii cunosc si.. nu am cum sa stiu cat Jaws stiu. De exemplu la prima intrebare, ar fi suficient si un raspuns la problema: "Prin ce actiune sunt convins ca Jaws cursorul se afla in fereastra curenta / activa?".
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Sus

Mesaj postat

IVictor80

Plutonier major
Trimis: Vineri, 13 Noiembrie 2009, 10:56    Titlul subiectului: Raspunde cu citat (quote)

Salut,

Ti-am trimis informatiile si raspunsurile solicitate. Te rog sa confirmi primirea lor.

Toate cele bune.
Victor
Sus

Mesaj postat

Manu

General de divizie
Trimis: Vineri, 13 Noiembrie 2009, 15:41    Titlul subiectului: Raspunde cu citat (quote)

Am primit, deocamdata sunt sapte inscrisi.
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Sus

Mesaj postat

Manu

General de divizie
Trimis: Miercuri, 25 Noiembrie 2009, 22:23    Titlul subiectului: Raspunde cu citat (quote)

Anunt si pe aceasta cale ca lista de discutii Jaws Pontes a fost creata, sper ca i-am inclus pe toti, ca nu am omis din greseala pe cineva care a confirmat inscrierea demarata odata cu acest topic.
Pentru ca e mult mai personalizata si cu mult mai multe posibilitati de administrare, lista de discutii este de tip Mailman si este gazduita pe serverul Pontes.
Lista cuprinde in momentul de fata 12 membri, asadar participa la curs 11 persoane.
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Sus

Mesaj postat

Manu

General de divizie
Trimis: Joi, 10 Decembrie 2009, 11:21    Titlul subiectului: Raspunde cu citat (quote)

Cursul despre Jaws Scripting a inceput, au avut loc pe 30 noiembrie si 7 decembrie primele doua sedinte.
Am apucat sa ne familiarizam cu Script Managerul, cu fisierele editabile si valoarea fiecaruia.
S-a facut distinctia intre script si functie.
S-a vorbit despre tipurile de functii - event, built-in si definite de utilizator.
A fost creat primul script simplu in mai multe feluri folosind functii built-in.

Avand aceste informatii la baza, deja domnul Potra a reusit sa faca un script care sa ii citeasca in careuri de 4 pe 4 sau 5 pe 5 cuvintele pe verticala. Pentru acest lucru se face un script foarte simplu, informatiile din primele doua intalniri fiind suficiente.
Un alt participant, Gelu Roata, a si realizat un script care sa ii dea click cu mouse-ul in rezultatele de la Strong DC printr-o simpla combinatie de taste.

Asadar, poate fi foarte util, uite cum un script poate inlocui ochiul chiar pentru o citire de sus in jos.

Intalnirile pe Skype sunt inregistrate si probabil vor fi disponibile in viitor tuturora.
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Sus

Mesaj postat

Manu

General de divizie
Trimis: Miercuri, 16 Decembrie 2009, 18:27    Titlul subiectului: Raspunde cu citat (quote)

A avut loc si a treia intalnire pe Skype.

Luni, 14 decembrie 2009, am vorbit despre:
Diferenta dintre String si Int (Integer).
Definirea unor variabile de tip String si Int in cadrul unui script.
Modalitati de atribuire de valori variabilelor cu ajutorul expresiei de tip:
Let X = Y,
unde X este un nume oarecare de variabila, iar Y este o valoare atribuita lui X:
fie o valoare absoluta,
fie o valoare rezultata in urma unui calcul de aritmetica simpla,
fie o valoare rezultata in urma modificarii variabilei X, deci o valoare la care se ajunge prin valoarea variabilei insesi, de exemplu: Let X = X + 1,
fie o valoare rezultata in urma unei convertiri din String in Integer sau invers cu ajutorul functiilor StringToInt () sau IntToString ().

Pentru participanti a inceput sa devina interesant, practic de lunia viitoare se pot face mici programele gen:
Combinatie de taste pentru a intreba lungimea bazei unui triunghi si inaltimea, aceste doua valori fiind completate in doua edit-box-uri, iar dupa apasarea enter-ului, rezultatul ariei triunghiului sa apara scris in Notepad.
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Sus

Mesaj postat

Manu

General de divizie
Trimis: Marti, 22 Decembrie 2009, 13:46    Titlul subiectului: Raspunde cu citat (quote)

Intalnirea din 21 decembrie 2009:

Rezumat
In 21 decembrie s-a vorbit despre:
Variabile locale versus variabile globale
Stabilire constante.
Preluare de valori dintr-un edit-box pentru o variabila.
Folosirea ca parametru al unei functi o alta functie cu parametrul ei.
Utilizarea semnului + (plus), pe langa operatia aritmetica clasica, la concatenarea unor stringuri.

Pun aici si tema pentru viitoarea intalnire din 4 ianuarie 2010, sa ramana ca idee pentru cei care vor mai fi interesati in viitor sa invete Jaws Scripting:
A se realiza un mic programel pentru calcularea pretului unor produse care sunt date in euro fara TVA.
Se lucreaza doar cu variabile globale.
Vor fi in total trei scripturi:
Primul pentru preluarea valorii unui euro: "Cati lei este un euro?", lucram mai bine cu lei vechi ca sa nu folosim virgula.
Dupa ce avem valoarea euro ca Integer, definim alt script, doar ca la o combinatie de taste sa stim cat este euro definit de noi. Deci doar un SayString sau SayInteger, este pentru verificare la orice moment.
In fine, scriptul principal care sa intrebe pretul produsului in euro, sa calculeze pretul final in lei plus TVA.
Stringul returnat sintetic si scris in notepad sa arate cam asa:
"Produsul in valoare de x euro fara TVA, costa x lei cu tot cu TVA."
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Sus

Mesaj postat

Manu

General de divizie
Trimis: Miercuri, 06 Ianuarie 2010, 21:06    Titlul subiectului: Raspunde cu citat (quote)

A trecut si a cincia intalnire, cea din 4 ianuarie 2010.
Am vorbit despre If si toate modalitatile de folosire, plus operatorii specifici.

Pe scurt, sintaxa If-ului in Jaws Scripting ar fi de tipul:

If "Ceva este adevarat" Then
Se fac anumite actiuni
ElIf "Altceva este adevarat" Then
Se fac alte actiuni
Else
Se fac alte actiuni
EndIf

In traducere logica:
Daca "Ceva este adevarat" Atunci
Se fac anumite actiuni
Ori daca "Altceva este adevarat" Atunci
Se fac alte actiuni
Altfel, in cazul ca nici o afirmatie de mai sus nu este adevarata
Se fac alte actiuni
Sfarsit Daca

Operatori pot fi:
&& (dublu semn de AND comercial) pentru "si", adica:
If "Ceva este adevarat" && "Inca ceva este adevarat in acelasi timp" Then
In traducere:
Daca "Ceva este adevarat" si "Altceva este in acelasi timp adevarat" Atunci

|| (doua bari verticale) pentru "sau", adica
If "Ceva este adevarat" sau "Altceva este adevarat" Then
In traducere:
Daca "Ceva este adevarat" sau "Altceva este adevarat" Atunci:

Cam acestea ar fi pe scurt informatiile care trebuie retinute, in rest sunt tot felul de variatiuni.

Tema intre cursul cinci si sase ar fi:
A se realiza un mic script care la o combinatie de taste sa spuna ora si, in functie de aceasta sa fie invatat Jaws sa salute. Daca e dimineata sa spuna "Buna dimineata!, daca e zi sa spuna "Buna ziua!" etc.

De asemenea, cine are chef, poate sa incerce sa faca la o alta combinatie de taste un script care sa calculeze in functie de ora noastra, ora din New York, adica cu sapte ore in urma.

Cea de-a doua parte a temei sa fie doar in caz de dorinta de lucru. Problema apare aici in momentul cand ora la noi este inainte de 7 dimineata.

Pentru a scoate cu functia SysGetTime () doar ora in format de 24 de ore, trebuie folosit ca parametru "H", deci un H majuscula intre ghilimele.
Amintesc ca pentru minute se foloseste "mm", pentru secunde "ss", acestea din urma nefiind necesare in cazul nostru, doar in caz de rezolvare a celei de-a doua parti a temei ne trebuie minutele pentru a forma ora New York-ului din doua bucati, ore si minute determinate separat.
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Sus

Mesaj postat

Manu

General de divizie
Trimis: Duminica, 10 Ianuarie 2010, 16:15    Titlul subiectului: Raspunde cu citat (quote)

Pentru ca a doua parte a temei era optionala, pun aici cea mai scurta cale posibila pentru a o rezolva in cele mai putine randuri... dupa cate am gasit eu. Practic fiecare rezolva in stilul lui.

Script OraNewYork ()
Var
Int iOra
Let iOra = StringToInt (SysGetTime ("H"))
If iOra < 7 Then
Let iOra = iOra + 17
Else
Let iOra = iOra - 7
EndIf
SayString ("La New York este ora " + IntToString (iOra) + " si " + SysGetTime ("mm") + " minute")
EndScript

Sper ca din astfel de exemple sa poata invata in viitor si altii care studiaza manualul sau asculta imprimarile care se fac in timpul cursurilor noastre de fiecare luni seara.
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Sus

Mesaj postat

Manu

General de divizie
Trimis: Marti, 12 Ianuarie 2010, 15:44    Titlul subiectului: Raspunde cu citat (quote)

A avut loc si cea de-a sasea intalnire pe Skype, ieri seara.
Am vorbit despre functiile definite de utilizator.
Practic putem realiza functii care sa faca diferite actiuni, apoi aceste functii pot fi folosite in cadrul unor scripturi precum functiile built-in.

Pentru a realiza o functie definita, scheletul arata astfel:

Function NumeFunctie ()

EndFunction

Intre cele doua randuri de mai sus pot fi folosite functii built-in, alte functii definite, if-uri etc..
De exemplu daca avem nevoie foarte des de un sir de trei actiuni, sa zicem:
Route Jaws To Pc (pentru a activa cursorul Jaws si a-l aduce in fereastra curenta),
Jaws Top Of File (pentru a merge pe primul rand al ferestrei) si
Say Line (pentru a citi primul rand al ferestrei)
am realiza o functie definita de noi care ar arata astfel:

Function PrimulRand ()
SaveCursor ()
RouteJawsToPc ()
JawsTopOfFile ()
SayLine ()
RestoreCursor ()
EndFunction

In orice script viitor vom putea folosi functia PrimulRand () ca si cum ar fi functie built-in.

De exemplu:

Script CitestePrimulRand ()
PrimulRand ()
EndScript

Tot ieri am vorbit si despre doua functii de tip event.
Este vorba de AutoStartEvent () si AutoFinishEvent ().
Aceste functii nu se folosesc in cadrul unor scripturi, ci tot ce contin se activeaza, se lanseaza la momentul cand focusul ajunge, respectiv paraseste fereastra in cauza.

Ca exemplu:

Function AutoStartEvent ()
SayString ("Salutare lume!")
EndFunction

Function AutoFinishEvent ()
SayString ("La revedere lume!")
EndFunction

Avand cele doua functii in cadrul unui fisier de scripturi, functii care arata precum niste functii definite, de fiecare data cand deschidem programul respectiv sau ajungem pe fereastra acestuia cu Alt + Tab, vom auzi "Salutare lume!"; de asemenea, de fiecare data cand inchidem programul sau parasim fereastra acestuia cu Alt + Tab, vom auzi "La revedere lume!".
Asadar, cele doua functii nu sunt apelate de scripturi, ci se intampla automat cand "event"-ul respectiv are loc.

Am mai trecut in revista cateva functii built-in precum TypeKey () sau Run ("..."), functii cu ajutorul carora se poate face pana si ca in momentul inchiderii unei aplicatii sa se deschida automat o pagina de site.

Exemplu:
Function AutoFinishEvent ()
Run ("www.pontes.ro")
SayString ("Acum se deschide site-ul Pontes")
EndFunction
Avand cele patru linii de mai sus in cadrul unui fisier de scripturi pentru un anume program, in momentul cand inchidem acel program, il minizam sau dam Alt + Tab pentru a parasi fereastra acestuia, se va deschide automat site-ul Pontes.

Cam asta ar fi in rezumat lectia din 11 ianuarie 2010.
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Sus

Mesaj postat

Manu

General de divizie
Trimis: Marti, 19 Ianuarie 2010, 22:59    Titlul subiectului: Raspunde cu citat (quote)

Ieri, 18 ianuarie 2010 ne-am intalnit pentru a saptea oara cu Jaws Scriptingul si am vorbit despre While.

Asadar, While, tradus "In timp ce", face ca o actiune sa se intample atata timp cat o conditie este adevarata.
Sintaxa este asemanatoare cu a If-ului, doar ca nu trebuie folosit "Then".

While "Ceva este adevarat"
Se fac anumite actiuni
EndWhile

In traducere libera:
In timp ce "Ceva este adevarat"
Se fac anumite actiuni
Sfarsitul perioadei ("In timp ce"-ului)

Important este ca trebuie tot timpul sa fim siguri ca exista o piedica, astfel incat in cele din urma While-ul sa se termine, riscul este sa mearga la infinit. Daca gresim un While si acesta se va intampla la infinit, calculatorul trebuie in cele din urma restartat.

Am realizat impreuna un cronometru simplu, pun mai jos si codul:

Inceput cod

Script Cronometru ()
Var
String sStop,
Int iStop,
Int iUrca
InputBox ("Pana la cat?", "Limita", sStop)
Let iStop = StringToInt (sStop)
Let iUrca = 0
While iUrca < iStop
Delay (10)
Let iUrca = iUrca + 1
SayInteger (iUrca)
EndWhile
EndScript

Sfarsitul codului

Am aratat ca in timpul While-ului putem folosi chiar si If, astfel am rezolvat ca din 3 in 3 secunde sa se auda si un beep.
Solutia a fost ca la fiecare urcare cu cate o unitate a cronometrului, mai precis a variabilei iUrca, sa se verifice daca numarul este divizibil cu 3, adica daca restul impartirii la 3 da 0, iar daca aceasta conditie era indeplinita, sa se auda un beep.

Deci, plasam in interiorul While-ului, inainte de SayInteger (iUrca), urmatoarele trei randuri:
If iUrca % 3 == 0 Then
Beep ()
EndIf

Tema pentru While ar fi:
A se realiza un cronometru care sa porneasca de la un numar indicat de noi, si sa scada cu cate o secunda pana la 0, aici oprindu-se. De asemenea, dupa ce suntem intrebati de la cat sa inceapa numaratoarea inversa, sa fim intrebati din cate in cate secunde sa faca beep (), acest lucru intamplandu-se apoi.

Anunt si aici ca am deschis un topic in It & C pentru exersare:
Programare in JAWS Scripting, aplicatii practice
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Sus

Mesaj postat

Manu

General de divizie
Trimis: Miercuri, 03 Februarie 2010, 16:45    Titlul subiectului: Raspunde cu citat (quote)

In 1 februarie 2010 ne-am intalnit pentru a opta oara si am vorbit despre diverse modalitati de formatare, aranjare a constantelor, variabilelor, mesajelor.

Pana acum defineam constante si variabile globale la inceputul documentului, de acum le definim intr-un alt document, astfel incat sa nu incarcam cu atat de multa informatie fisierul JSS.
Pentru a crea un fisier in care sa definim constante si variabile globale, trebuie activata caseta de dialog New File, unde alegem fisier de tipul Header, avand extensia JSH (JAWS Script Header).
Putem salva apoi fisierul cu orice denumire, extensia se pune automat.
In acest fisier ne comportam exact ca inainte cand eram la inceputul documentului JSS.
Definim sub forma:

Globals
String sText,
Int iNumar

Const
sFisier = "NumeFisier.txt"
iHoursPerDay = 24

Avand fisierul salvat cu numele "Notepad.JSH", ne referim apoi la el incluzandu-l in fisierul sursa, in cazul de fata in "Notepad.JSS". Unde inainte defineam variabile si constante,a cum nu mai trebuie decat sa scriem:
Include "Notepad.JSH"
Intre ghilimele poate fi orice alta denumire, conditia este sa existe in ENU fisierul cu acel nume.

De asemenea, pentru mesaje se poate crea un fisier separat, dupa acelasi procedeu (New File - Control + N), fisier Messages cu extensia JSM (JAWS Script Messages).
In acest fisier se pot defini convenabil mesaje, avand posibilitatea sa folosim rand nou, orice semn etc.
Structura unui Message File este:

Messages

@Mesaj1

Acesta este mesajul denumit Mesaj1.

@@

@Mesaj2

Acesta este un mesaj cu numele Mesaj2.

@@

EndMessages

Este necesar ca la inceputul si la sfarsitul blocului de mesaje sa existe etichetele de inceput si sfarsit:
Messages
...
EndMessages
Tot ce va vedea compilatorul intre aceste doua etichete vor fi considerate mesaje.
Fiecare mesaj are trei parti:
Denumirea care este precedata de semnul "@" (A rond), ca in exemplul:
@Mesaj1
Apoi textul propriu-zis care nu are limita de caractere, randuri etc.
In final se pune un dublu (A rond) - "@@".
In viitor, in script se poate referi la un mesaj folosind denumirea acestuia fara (A rond) ca si cum ar fi o constanta.
De exemplu functia pe care o foloseam:
SayString (Mesaj1)
va pronunta: "Acesta este mesajul denumit Mesaj1."
Si fisierul JSM trebuie inclus in fisierul JSS sub forma:
Include "xxx.JSM", unde "xxx" poate fi orice nume de fisier care exista in ENU, pe care l-am creat.

De acum nu vom mai folosi functia SayString (), ci alte doua care sunt recomandate de Freedom Scientific:
Say () si SayFormattedMessage ().
Cand avem mesaje simple folosim functia Say (), functie care are inca un parametru fata de SayString (). Acest parametru se refera la tipul de mesaj verbalizat, Output Type. Sunt mai multe tipuri de mesaje pe care le clasificam prin utilizarea unor parametri constante definite in "HJConst.JSH". Cateva dintre aceste constante ar fi: OT_MESSAGE, OT_ERROR, OT_STATUS, OT_HELP etc.
In comportamentul Jaws-ului nu conteaza pe care o folosim, dar la anumite setari, cum ar fi sa nu ni se mai citeasca niciodata mesajele de tip ERROR, toate functiile de tip Say () si SayFormattedMessage () care au in continut parametrul OT_ERROR vor fi ignorate. De asemenea se pot face setari ca diferite dipuri de mesaje sa fie pronuntate cu alta voce, cu alta viteza etc. Practic prin parametrul Ouput Type este vorba mai mult de o clasificare, o sortare.

Asadar nu vom mai folosi SayString (Mesaj1), ci
Say (Mesaj1, OT_MESSAGE)

Pentru ca se insista pe diferente de nivel de utilizator in Jaws, in special pe o impartire Biginner (incepator) pe de o parte si Intermediate/Advanced (indermediar sau avansat) pe de alta, se pot crea mesaje lungi si scurte pentru acelasi eveniment, astfel incat in functie de nivelul utilizatorului sa i se verbalizeze cu mai multe detalii sau mai concis. De exemplu cand apasam Control + C si avem setat Jaws pe Biginner, vom auzi mesajul: "Copied selection to clipboard", iar cand estesetat pe Intermediate sau Advanced, vom auzi doar "Copied".
Daca suntem rabdatori cand facem scripturi, putem crea pentru fiecare eveniment, pentru fiecare actiune in urma sau inainte careia se anunta ceva ca mesajele sa fie in dublu exemplar, unul mai lung pentru incepatori si unul mai concis pentru cei care sunt mai avansati si plictisiti deja de atata vorbarie.
Sa ne imaginam ca in fisierul JSM am creat doua mesaje pentru a ne anunta ora:

@AnuntaOra_L

Acum ora este 16 si 15 minute.

@@

@AnuntaOra_S

Este 16:15.

@@

Dupa cum vedem, primul este mai lung, pentru incepatori, l-am denumit folosind un underline urmat de litera "L" pentru a stii ca este cel pentru Biginner, iar al doilea se numeste la fel, doar ca in final apare un underline urmat de "S" de la scurt (short) si este pentru Intermediate/Advanced.
Acum trebuie sa vedem cum facem ca Jaws sa aleaga pe care il spune in functie de ce setare User Verbosity este la utilizator.
Pentru aceasta avem functia SayFormattedMessage () care necesita in total trei parametri:
Primul parametru este Ouput Type, al doilea este mesajul lung, iar al treilea este mesajul scurt. Aplicand la cazul de fata va rezulta:
SayFormattedMessage (OT_MESSAGE, AnuntaOra_L, AnuntaOra_S)
In viitor, jaws va alege singur pe care dintre cele doua il spune.

Ultima problema despre care am vorbit in 1 februarie 2010 a fost cea a placeholder-elor.
Dupa cum ii spune si numele, "placeholder" tine locul cuiva, mai precis intr-un mesaj tine locul unui cuvant care variaza in functie de procesare. De exemplu: "Numele meu este ...", unde in loc de puncte puncte poate fi orice nume.
In JAWS Scripting se pot crea mesaje care sa contina pana la 9 astfel de placeholders. Pentru a numerota intr-un mesaj aceste placeholders se foloseste semnul procent "%" urmat de numarul aferent.
De exemplu: "Numele meu este %1.". In viitor, dupa ce folosim corespunzatori functiile necesare, in loc de acel %1 se va spune numele. Avantajul unei astfel de formatari a mesajelor este usoara manipulare ulterioara, traducerea facila in alte limbi etc..
Sa ne imaginam urmatorul mesaj definit in fisierul JSM:

@MesajNume

Numele meu este %1, prenumele imi este %2, deci, daca as fi maghiar numele intreg ar fi %1 %2, iar daca sunt roman corect ar fi %2 %1.

@@

In fisierul JSS trebuie doar sa definim cumva ca acel %1 si %2 sa preia valoarea reala de la un moment dat.
Pentru aceasta avem nevoie de o variabila pe care o putem defini in fisierul JSH:
String sMesajFinalNume
Acestei variabile de tip string ii vom atribui ca valoare mesajul cu placeholdere inlocuite cu numele si prenumele gasite in urma unor procesari, deci pe MesajNume care in loc de %1 si %2 sa aiba deja un nume si un prenume.
Vom folosi atunci functia FormatString () care poate avea de la minim doi, pana la zece parametri.
In cazul nostru va avea trei parametri, mai precis:
- mesajul care contine placeholders
- variabila care va inlocui numele
- variabila care va inlocui prenumele.
Considerand ca sNume este o variabila pentru nume si sPrenume o variabila pentru prenume, va rezulta in final:
Let sMesajFinalNume = FormatString (MesajNume, sNume, sPrenume)
Asadar, ceea ce urmeaza dupa primul parametru care reprezinta mesajul din JSM care contine placeholdere, vor fi pe rand stringurile care vor inlocui placeholderele.


Tema pentru aceste probleme ar fi:
1. A se realiza un script simplu care sa minimizeze Notepad-ul, iar in functie de nivelul User Verbosity sa anunte acest eveniment mai explicit sau mai concis, ca de exemplu: "Fereastra Notepad a fost minimizata" sau simplu "Minimizat".
2. A se face ca la o alta combinatie de taste fereastra notepad sa se minimizeze, iar ca anunt sa fie un mesaj cu doua placeholders:
"Notepad sa minimizat la ora H si MM minute.".
La cel din urma nu cream separat mesaje pentru Biginner si Intermediate/Advanced.

Acest curs a fost unul cu ghinion, imprimarile nu au iesit din cauza unor erori la cele doua calculatoare care faceau treaba.
In cele din urma am simulat impreuna cu Grigore din nou tot cursul a doua zi. Cei care fac sau vor face cursul dupa imprimari vor avea totusi aceleasi informatii in format audio.
_________________
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)


Ultima modificare efectuata de catre Manu la Sambata, 03 Aprilie 2010, 22:08, modificat de 1 data in total
Sus
Afiseaza mesajele pentru a le previzualiza:   
  • Creaza un subiect nou
  • Raspunde la subiect
   Pagina de start a forumului Forumul organizatiei Pontes - www.pontes.ro -> Programare Ora este GMT + 2 ore
Du-te la pagina 1, 2  Urmatoare
Pagina 1 din 2

 
Mergi direct la:  
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum


Powered by phpBB © 2001, 2005 phpBB Group
Varianta in limba romana: Romanian phpBB online community