Curs 07

/ * tipul de date returnate din funcția * / / * numele funcției * / (/ * parametrii funcției * /);

// palindrom_func.cpp: specifică punctul de intrare pentru aplicația consolei.

folosind std;

bool palindrom5 (int); // prototipul funcției de a găsi palindromul de cinci cifre

int principal (int argc, char * argv [])

cout <<"Enter 5zn-e chislo: "; // введите пятизначное число

int in_number, out_number; // variabile pentru a stoca numărul de cinci cifre introdus

cin >> in_number;

out_number = in_number; // în variabila_numărul pe care îl salvăm numărul introdus

dacă (palindrom5 (in_number)) // dacă funcția returnează adevărat, atunci condiția este adevărată, altfel funcția returnează false - false

cout <<"Number " <

cout<<"This is not palendrom"<

bool palindrom5 (numărul int) // funcția de a găsi palindromul de cinci cifre

int balanța1, echilibrul2, echilibrul4, soldul5; // variabilele care stochează rezultatele intermediare

balanța1 = numărul% 10; // bilanțul variabil1 atribuit primei cifre a unui număr din cinci cifre

număr = număr / 10; // reduce numărul introdus cu o singură cifră

balanța2 = numărul% 10; // variabilei 2 li sa atribuit a doua cifră

număr = număr / 100; // reduce numărul introdus cu două cifre

balanța4 = numărul% 10; // variabilei 4 li sa atribuit o a patra cifra

număr = număr / 10; // reduce numărul introdus cu o singură cifră

balanța5 = numărul% 10; // variabila 5 a fost atribuită celui de-al cincilea bit

dacă ((balanța1 == echilibrul5) (balanța2 == echilibrul4))

returntrue; // funcția returnează valoarea adevărată

returnfalse; // funcția returnează o valoare falsă

crearea unui fișier de tip * .cpp, în care sunt declarate funcții;

crearea fișierelor de tip * .cpp și * .h.

// fișierul de fișier palendrom.h

bool palindrom5 (int); // prototipul funcției de a găsi palindromul de cinci cifre

// conținutul fișierului palendrom.cpp

bool palindrom5 (numărul int) // funcția de a găsi palindromul de cinci cifre

balanța int1, soldul2, echilibrul4, soldul5; // variabilele care stochează rezultatele intermediare

balanța1 = numărul% 10; // bilanțul variabil1 atribuit primului sold

număr = număr / 10; // reduce numărul introdus cu o singură cifră

balanța2 = numărul% 10; // variabila 2 a fost alocată celui de-al doilea rest

număr = număr / 100; // reduce numărul introdus cu două cifre

balanța4 = numărul% 10; // variabila 4 are un al patrulea echilibru

număr = număr / 10; // reduce numărul introdus cu o singură cifră

balanța5 = numărul% 10; // soldul variabil5 a alocat cel de-al cincilea rest

dacă ((balanța1 == echilibrul5) (balanța2 == echilibrul4))

returntrue; // funcția returnează valoarea adevărată

returnfalse; // funcția returnează o valoare falsă

// Trimiteți pointerul funcției - versiunea revizuită.

folosind namespace std;

Apelarea funcțiilor cu matrice

folosind namespace std;

void display (int num [10]);

pentru (i = 0; i<10; ++i) t[i]=i;

afișarea (t); // Transmite funcțiile la matricea t

// Funcția scoate toate elementele matricei.

void display (int num [10])

pentru (i = 0; i<10; i++) cout <

În ciuda faptului că parametrul num este declarat aici ca o matrice integeră compusă din 10 elemente, C ++ - compilatorul îl convertește automat într-un pointer la o valoare întregă. Necesitatea acestei transformări se explică prin faptul că nici un parametru nu poate accepta întreaga matrice. Și, ca singurul la un index de matrice este transferat, funcția trebuie să aibă un parametru care poate lua indicatorul.

void display (int num []]

pentru (i = 0; i<10; i++) cout <

Aici parametrul num este declarat ca o matrice de numere întregi necunoscute.

void display (int * num)

pentru (i = 0; i<10; i++) cout <

Cu toate acestea, un singur element al matricei utilizate ca argument este tratat ca o variabilă obișnuită. De exemplu, programul de mai sus ar putea fi rescris fără a utiliza o matrice întreagă:

folosind namespace std;

void display (int num);

pentru (i = 0; i<10; ++i) t[i]=i;

pentru (i = 0; i<10; i++) display(t[i]);

Asa arata rezultatele acestui program.

Lungimea liniei HELLO este: 11

Ca exercițiu, ar trebui să încercați să implementați și alte funcții de șir, de exemplu strcpy () sau strcat (). Acest test vă va arăta cât de bine ați stăpânit astfel de elemente ale limbajului C ++ ca arhiteuri, șiruri și indicii.

Argumente pentru funcția principală (): argc și argv

Argumentul liniei de comandă este informația specificată pe linia de comandă după numele programului.

Uneori devine necesar să se transmită informații la program atunci când este rulat. În mod obișnuit, acest lucru este implementat prin trecerea argumentelor liniei de comandă către funcția principal (). Argumentul liniei de comandă este informația specificată într-o comandă (linie de comandă) destinată executării de către sistemul de operare după numele programului. De exemplu, programele C ++ pot fi compilate executând următoarea comandă,

Aici elementul prog_name este numele programului pe care dorim să-l compilam. Numele programului este transmis compilatorului C ++ ca argument al liniei de comandă.

În C ++, funcția principal () definește două argumente încorporate, dar opționale, argc și argv. care obțin valorile lor din argumentele liniei de comandă. Într-un mediu de operare specific, pot fi acceptate și alte argumente (aceste informații trebuie specificate în documentația care însoțește compilatorul dvs.). Luați în considerare parametrii argc și argv în detaliu.

Pe zametku.Formalno numele parametrilor de linie de comandă, puteți selecta orice ID-uri, dar numele argc și argv sunt utilizate prin convenție, timp de mai mulți ani, și deci are sens să nu utilizeze un alt identificator pentru orice programator care va trebui să se ocupe în programul tău, ar putea le identifică rapid ca parametri de linie de comandă.

Parametrul argc are un tip întreg și este destinat pentru stocarea numărului de argumente ale liniei de comandă. Valoarea sa este întotdeauna cel puțin una, deoarece numele programului este, de asemenea, unul dintre argumentele luate în considerare. Parametrul argv este un pointer la o serie de pointeri de caractere. Fiecare pointer din matricea argv se referă la un șir care conține un argument din linia de comandă. Elementul argv [0] indică numele programului; elementul argv [1] este primul argument, elementul argv [2] este pe cel de-al doilea și așa mai departe. Toate argumentele din linia de comandă sunt transmise programului ca șiruri de caractere, astfel încât argumentele numerice trebuie convertite în program în formatul intern adecvat.

Este important să se declare corect parametrul argv. De obicei se face așa.

Accesul la argumentele liniei de comandă individuale poate fi obținut prin indexarea array-ului argv. Cum se face acest lucru este prezentat în următorul program. Când este executat, este afișat un salut ("Hello"), urmat de numele dvs., care ar trebui să fie primul argument al liniei de comandă.

folosind namespace std;

int principal (int argc, char * argv [])

cout <<"Вы забыли ввести свое имя.\n";

cout <<"Привет, " <

Să presupunem că numele dvs. este Tom și că ați denumit acest nume de program. Apoi, dacă executați acest program, tastați numele. rezultatul muncii sale ar trebui să arate astfel: Bună, Tom. De exemplu, lucrați cu discul A și, ca răspuns la promptul de comandă, trebuie să introduceți comanda de mai sus și să obțineți următorul rezultat.

Pentru a accesa un singur caracter într-unul din argumentele liniei de comandă, adăugați cel de-al doilea index când accesați matricea argv. De exemplu, următorul program afișează toate argumentele cu care a fost denumit caracter-cu-caractere.

/ * Acest program afișează simbolic toate argumentele liniei de comandă cu care a fost apelat.

folosind namespace std;

int principal (int argc, char * argv [])

pentru (t = 0; tcout <

Nu este greu de ghicit că primul index al arrayului argv vă permite să accesați argumentul corespunzător liniei de comandă, iar al doilea la un caracter specific al acestui argument șir.

În mod obișnuit, argc și argv sunt folosite pentru a introduce în program parametrii inițiale, valorile sursă, numele fișierelor sau opțiunile de program (moduri). În C ++, puteți introduce cât mai multe argumente de linie de comandă pe care le permite sistemul de operare. Folosind argumentele din linia de comandă, programul oferă un aspect profesional și vă permite să îl utilizați într-un fișier de comandă (un fișier text executabil care conține una sau mai multe comenzi).

Transmiterea argumentelor liniei de comandă numerică

Așa cum am menționat mai sus, atunci când transferați date numerice în program ca argumente de linie de comandă, aceste date sunt primite într-o formă de șir. Programul ar trebui proiectat pentru a le converti la formatul intern adecvat utilizând una dintre funcțiile standard de bibliotecă suportate de C ++. De exemplu, următorul program afișează suma a două numere, care sunt specificate în linia de comandă după numele programului. Pentru a converti argumentele liniei de comandă la o reprezentare internă, este utilizată aici funcția standard de bibliotecă atof (). Convertește un număr dintr-un format de șir la o valoare dublă.

/ * Acest program afișează suma a două argumente numerice de linie de comandă.

folosind namespace std

int principal (int argc, char * argv [])

cout <<"Использование: add число число\n";

Pentru a adăuga două numere, utilizați linia de comandă de acest tip (presupunând că acest program are numele de adăugat).

C> adăugați 100,2 231

Conversia șirurilor numerice la numere

Biblioteca standard C ++ include mai multe funcții care vă permit să convertiți o reprezentare de șir a unui număr în formatul său intern. Pentru a face acest lucru, utilizați funcții precum atoi (). atol () și atof (). Ei convertesc șirul la o valoare intregă (de tip int), un întreg lung (de tip lung) și o valoare în virgulă mobilă (de tip dublu). Utilizați aceste funcții (pentru a le include, trebuie să includeți fișierul antet în program ) este demonstrată în următorul program.

// Demonstrați utilizarea funcțiilor atoi (), atol () și atof ().

folosind namespace std;

cout <

Rezultatele acestui program sunt următoarele.

100 100000 -0,123

Funcțiile de conversie a șirului sunt utile nu numai atunci când se transferă date numerice în program prin argumentele liniei de comandă, dar și într-o serie de alte situații.

Până acum (începând cu capitolul 2) am folosit declarația de returnare fără explicații detaliate. Rețineți că declarația de returnare efectuează două operațiuni importante. În primul rând, oferă o revenire imediată a controlului la inițiatorul apelului funcției. În al doilea rând, poate fi folosit pentru a trece valoarea returnată de funcție. Aceste două operațiuni sunt dedicate acestei secțiuni.

Articole similare