organizarea abstractă a interfeței cu utilizatorul - banca de rezumate, eseuri, rapoarte, referate și
Figura 7. Componente de interfață cu navigare gratuită
De regulă, acest tip de interfață implementate folosind programarea în funcție de evenimente și o bibliotecă orientate pe obiect care implică utilizarea de dezvoltare de software media vizuală. Cu toate acestea, interfața simplă, cu navigare poate fi pus în aplicare și limbaje procedurale (de exemplu, C), într-un singur sistem de operare, fără a-tasking management de eveniment (de exemplu, MS-DOS). Un exemplu de astfel de interfață pentru soluțiile software ale ecuației pătratice este prezentată în Fig. 7.
Figura 7. Aspectul interfeței cu o navigare gratuită
este format din trei câmpuri de intrare pentru coeficienții de interfață este a, b, c și butoanele „Exit“. Utilizatorul poate introduce valori în câmpurile în orice ordine. După introducerea valorilor programului recalculează automat rădăcinile unei ecuații pătratice și actualizează informațiile de pe ecran. Controlul curent (buton sau câmp de intrare) este evidențiată, așa cum este comun în toate sistemele, permițând navigare prin utilizarea tastaturii.
În plus față de caractere, modul de text generat automat imaginea cursorului text care este într-o anumită poziție pe ecran și are un aspect predeterminat. Sub aspectul înălțimii cursorului se înțelege: se poate arata ca o cratimă sub simbolul ar putea acoperi toate familiaritate sau chiar să fie dezactivate.
Sistemul de coordonate pe ecran arată la fel ca și în modul grafic: axa X îndreptate spre dreapta, axa Y - în jos. Colțul din stânga sus are coordonatele (1, 1), spre deosebire de modul grafic (unde are coordonatele de zero). În multe cazuri, funcțiile de text C nu funcționează în mod direct cu ecran, dar cu o parte din zona sa dreptunghiulară numită fereastră de afișare. În mod implicit, fereastra preia întregul ecran, dar poziția sa poate fi modificată de către programator. Când imprimate, conținutul ferestrei de afișare în afara ferestrei nu se schimbă și transferul liniilor lungi se face pe marginea ferestrei, mai degrabă decât pe ecran.
4. Funcțiile modul text
Pentru a utiliza funcțiile descrise mai jos, este necesar să se conecteze fișierul antet
4.1 Opțiuni generale
void mod text (newmode int)
void fereastra (int stânga, int sus, int dreapta, int jos)
Setează o nouă casetă de text. Setarea coordonate incorecte duce la neglijarea de referință la funcția fereastră. Parametrii definesc stânga și partea de sus a ecranului pentru coordonatele colțul din stânga sus al ferestrei, de jos și dreptul de a determina coordonatele de ecran ale colțul din dreapta jos al ferestrei.
În mod implicit, fereastra ocupă întregul ecran. De exemplu, în modul 80CH25, coordonatele fereastra implicite sunt 1,1,80,25.
void gettextinfo (struct text_info * pinfo)
Controlul 4.2 Cursor
void gotoxy (int x, int y)
Mută cursorul într-o anumită poziție a casetei de text. Colțul din stânga sus al ferestrei are coordonatele (1,1). În cazul în care coordonatele pentru un motiv oarecare sunt incorecte, apelul acestei funcții este ignorată. Un exemplu de o astfel de eroare poate servi apela gotoxy (40,30), atunci când dimensiunea ferestrei este 35CH25.
int wherex (); int wherey ()
Returnează poziția curentă a cursorului (în raport cu caseta de text).
void _setcursortype (cur_t int)
Definește aspectul cursorului de text. Cu această caracteristică, puteți dezactiva cursorul (opțiunea _NOCURSOR), activați „bloc“ continuă a cursorului (_SOLIDCURSOR) sau returnează formularul standard al cursorului (_NORMALCURSOR). Opriți cursorul este adesea utilizat în interfețe, meniuri și interfețe cu navigare.
4.3 Gestionați atributele textului
void highvideo (); void lowvideo ()
Instalați crescut și a scăzut (respectiv), luminozitatea simbolurilor de ieșire. Aceste funcții nu afectează toate personajele care apar într-un anumit timp pe ecran. Apelul lor afectează numai ieșirea ulterioară a consolei în modul text.
Acesta setează luminozitatea la caracterul normal prin revenirea la valorile atributelor de text (prim-plan și de fundal), care au fost, la momentul începerii programului.
void textcolor (int newcolor)
Setează culoarea pentru simboluri pe textul de pe ecran. Argumentul poate fi transmis constantele de culoare sunt enumerate în tabelul. 2.
void textbackground (int newcolor)
Setează culoarea de fundal pentru textul de pe ecran. Argumentul poate fi transmis constante de culoare cu valori 0 h 7 este prezentat în Tabelul. 2.
void textattr (int newattr)
Setează atributele textului afișat. Această funcție vă permite să setați culoarea de fundal și textul într-un singur apel. Pentru a forma un octet atribute, culoarea de fundal trebuie să fie mutat de 4 biți la stânga și a pus culoarea textului: attr = inapoi<<4+text.
4.4 Text Clean
Toate următoarele funcții funcționează într-o casetă de text, nu schimbă caracterul de dincolo.
Golește caseta de text curentă și se poziționează cursorul în colțul din stânga sus (în poziția 1,1).
Se șterge toate caracterele din poziția cursorului la capătul liniei fără a muta cursorul.
void delline (); void insline ()
Funcția delline șterge rândul curent (în care se află cursorul) și ridică toate rândurile care se află sub cursorul pe o singură linie în sus. Funcția insline introduce o linie goală la poziția cursorului caseta de text, utilizând culoarea de fundal curentă. Toate liniile care se află sub acest deplasa pe un rând, și ultimul rând, în caseta de text dispare.
funcțiile enumerate mai jos de lucru, fără a lua în considerare fereastra curentă. Toți parametrii sunt setați relativ la colțul din stânga sus al ecranului având o coordonate (1,1).
int movetext (int stanga, int sus, int dreapta, int jos, int destleft, int desttop)
int gettext (int stanga, int sus, int dreapta, int jos, void * Destin)
Împinge conținutul unui dreptunghi pe ecran, un valorile parametrilor predeterminate din stânga, sus, dreapta, zona de jos în memorie indicat de către Destin.
Funcția citește conținutul dreptunghiului în memorie secvențial, de la stânga la dreapta și de sus în jos. Fiecare poziție ecran are 2 bytes de memorie. Primul octet corespunde unui caracter de familiaritate, iar al doilea - atributele sale.
Spațiul necesar pentru dreptunghiului din lățimea w de coloane și rânduri în înălțime h este definită după cum urmează:
Dimensiunea în octeți = (h rânduri) x (w coloane) × 2.
int puttext (int stanga, int sus, int dreapta, int jos, void * sursa)
Ieșiri conținutul zonei de memorie indicat de sursă, într-un dreptunghi de pe ecran ale cărui coordonate sunt date de valorile din stânga, sus, dreapta și de jos. Funcția afișează conținutul zonei de memorie în dreptunghiul specificat în ordine de la stânga la dreapta și de sus în jos.
5. Punerea în aplicare a interfeței cu utilizatorul în Borland C ++
5.1 Principii generale
La o inspecție mai atentă sunt enumerate în eroare: tipuri sursă de referință nu a fost găsită de interfață cu utilizatorul poate observa că, în toate cazurile, datele de intrare și de ieșire sunt produse separat de calculele de bază în cadrul programului. Abordarea generală la proiectarea cererii este de a separa partea de interfață a calculatorului. porțiune de calcul ar trebui să fie construite în așa fel încât cât mai puțin posibil, în funcție de interfața cu utilizatorul, de la intrare înseamnă și informații de ieșire. Toate datele brute sunt transmise la nucleul computerului prin tehnici standard, de obicei, prin parametrii funcției. Nucleul returnează rezultatele și, eventual, informații cu privire la erorile care au avut loc. Partea de interfață interpretează în mod independent, aceste informații și informează rezultatele de performanță de utilizator.
o parte computațională a programului nu ar trebui să dețină pentru a afișa orice mesaje (cu excepția mesajelor afișate în scopuri de depanare, dar în versiunea finală a programului și nu ar trebui să fie). În plus, acesta nu ar trebui să pună capăt programului (cu excepția situațiilor în care continuarea normală a lucrării este în principiu imposibil, de exemplu, deteriorarea severă a structurilor aeriene în memorie).
Pentru a separa o parte unul de altul în Borland C ++, acestea ar trebui să fie ușor de transportat în funcții separate. Regula principală în distribuirea codului funcțiilor este de a determina funcția pentru fiecare apartenenței la interfață, sau părți componente ale calculatorului. Dacă este posibil, să evite apariția unor funcții care asupra comportamentului pot fi atribuite una sau cealaltă parte.
Cerința principală pentru partea de interfață - pentru a oferi protecție maximă împotriva erorilor de tastare. Control relații complexe între datele de intrare, care sunt determinate de tipul de sarcina este de obicei efectuată de către nucleu. În același timp, interfața este capabil de a urmări o eroare de simplu: șir de intrare în loc de un număr, introduceți un număr în afara domeniului predeterminat, etc. Controale „la prostie“ ar trebui să se supună tuturor datelor introduse de către utilizator.
5.2 consola de interfață
Interfața consola este pur și simplu realizată folosind standard de funcții de intrare-ieșire: printf, scanf, i le pune, getch. Înainte de a putea șterge de ieșire ecran pentru sesiunile anterioare ale programului nu distrage atenția utilizatorului. Pentru anumite tipuri de programe, în special pentru utilități de sistem și de curățare pentru ecran nu este de dorit, deoarece Informații despre analize anterioare pot cere utilizatorului. Cu toate acestea, prin învățare acest lucru nu are nimic de-a face cu programul, iar ecranul este mai bine pentru a curăța.
Înainte de fiecare cerere de date trebuie să fie de ieșire pentru utilizator determinat pentru introducerea de date, de exemplu, „Introduceți un coeficient“. Dacă intrarea se face printr-un reguli relativ complicate, acestea ar trebui să fie, de asemenea, descrise pe scurt înainte de a intra (de exemplu, atunci când introduceți matrice, trebuie să vă întreb mai întâi numărul de elemente N, și apoi specificați că elementele sunt introduse de N ori).
Deoarece după ce apare finalizarea programului pe ecran shell Borland C ++ și se închide rezultatele de calcul, este de dorit să suspende executarea programului după apăsarea rezultatelor. În acest caz, utilizatorul trebuie să afișeze un mesaj adecvat.
Mai mult, datele de intrare nu pot îndeplini funcții standard, așa cum sa discutat mai jos, cu caracteristici de editare de intrare. Acest lucru va face interfața mai ușor de utilizat, mai ales în cazul în care calculele pot fi repetate (în a doua și următoarele iterații, puteți solicita utilizatorului la setările anterioare în mod implicit).
În conformitate cu principiile separarea interfeței și de intrare pentru nucleu de calcul, producția și modul de calcul ar trebui să fie plasate în diferite funcții. Logica generală a „intrare - calcul - ieșire“, puteți face, de asemenea, o funcție separată:
Desigur, input_data prototipuri funcționale de intrare (), se calculează de calcul () și show_results la ieșire () poate fi (și sunt), altele în funcție de programul și metodele de transfer de date către nucleu specific. Această abordare face ușor de a organiza executarea ciclică a calculelor. Pentru a face acest lucru,) funcția de a alerga (trebuie să fie chemat să facă ... în timp ce-bucla, a cărui ieșire se efectuează la răspunsul negativ la întrebarea „Continue?“.
Restul interfeței consola de programare, ca regulă, nu cauzează dificultăți.
5.3 Meniul simplu
Un meniu simplu este diferit de interfața consola în prima secvență de operații. Programul este necesar să se fixeze, starea de ieșire a buclei - pentru a selecta elementul de meniu „Exit“. În interiorul buclei, numărul de meniu este o solicitare și de prelucrare a acestuia. Cererea poate fi făcută funcțiile scanf, getch etc. Tratamentul este de obicei pus în aplicare de către comutatorul de operator, în care, pentru fiecare element de meniu este o ramură separată de caz, și toate celelalte valori sunt „liniștit“ sunt ignorate. Anunță utilizatorul selectarea elementului de meniu greșit, în mod opțional, poate să-l irita (de exemplu, dacă aluneca accidental în timpul presării).
Funcția principală de interfață ar putea arăta astfel:
//. meniul de afișare
//. administrat în orice manieră convenabilă sel_menu
Această caracteristică organizează linie de intrare de lungime limitată pentru a muta tastele cursor stânga, dreapta, Home, End, și Delete șterge caractere și Backspace. Intrare se termină atunci când apăsați Enter sau Esc, valoarea returnată indică care dintre taste a fost apăsată. Acest lucru permite apelantului să determine refuzat intrarea de către utilizator sau de confirmat. Dacă prima cheie apăsată are ca rezultat o intrare de caractere, conținutul vechi al liniei este ștearsă. Această caracteristică face ușor pentru a introduce date noi, în locul celor vechi. În același timp, în cazul în care prima cheie a fost apăsată tasta de editare, conținutul vechi este reținut.
Înainte de începerea funcției de intrare setează forma normală a cursorului și ascunde cursorul de text după sfârșitul de intrare. Acest lucru vă permite să utilizați funcția în interfețele de meniu și interfețele cu navigare fără a fi nevoie de apeluri suplimentare _setcursortype.
La editarea conținutului în buffer linia str mută funcția movmem, care este proiectat pentru a copia porțiunea de memorie. Pentru a utiliza această funcție, trebuie să includeți fișierul antet
Funcția inputstr Prezent poate fi folosit ca un substitut pentru scanf, în timp ce interfața este mai ușor de utilizat, care afectează în mod favorabil experiența utilizatorului a programului. Pentru orice tip de numere de intrare pot fi scrise funcții individuale, de conversie numărul la un șir de caractere, provocând inputstr și apoi conversia șirul rezultat înapoi la un număr.
6. exerciții practice
6.1 Atributele Contrast
Scrieți o funcție care are un octet de atribute și returnează 0 în cazul în care culoarea de fundal și tonul în acest octet sunt aceleași, și o valoare non-zero, dacă acestea sunt diferite.
6.2 Dezvoltare Interfață
Pentru a dezvolta o descriere a interfeței cu utilizatorul pentru programul „Alarm“.
Datele initiale pentru program sunt:
momentul în care este setat alarma;
Probator pavilion activat sau dezactivat;
în timpul repetiția de alarmă: o singură operațiune, includerea în fiecare zi, de comutare ori pe săptămână.
Pentru programul este necesară pentru a dezvolta o interfață de consolă, meniul de interfață și interfața cu navigare. Rezultatul dezvoltării este o descriere text a componentelor meniului de interogare sau de interfață, respectiv.
7. misiuni de laborator
7.1 Soluția ecuației pătratice
Scrieți o ecuație de gradul doi de program cu o interfață de consolă sau o interfață bazată pe un meniu simplu. Toți coeficienții ecuației introduse de către utilizator. La introducerea coeficienților ar trebui să fie oferit o oportunitate de a modifica valoarea de intrare.
Dacă ecuația are una rădăcină,