Ciclurile servesc pentru a repeta în mod repetat o bucată de cod.
Există patru operatori de buclă în C-Sharp: pentru că, în timp ce faceți, în timp ce foreach.
Acest ciclu este folosit atunci când se știe în avans câte repetiții trebuie făcute. Are următoarea structură:
pentru (contra-inițializare, condiție de continuare, iterație)
// bloc de cod care trebuie repetat
>
Un exemplu de program care afișează numerele 0, 1, 2, 3, 4:
static void Principal (șir [] args)
pentru (int i = 0; i <5; i++) // цикл выполнится 5 раз
Console.WriteLine (i);
>
>
În primul rând, contorul este creat și inițializat, i = 0. Apoi, condiția (i <5), если результат будет «истина», то дальше выполняется блок кода в теле цикла. В конце итерации происходит изменение значения счетчика (в данном примере увеличение на единицу). После этого вновь происходит проверка условия и так далее. Когда условие будет «ложь», цикл работу завершит.
Un exemplu de program care găsește și afișează suma elementelor de matrice:
static void Principal (șir [] args)
int [] numere = <4, 7, 1, 23, 43>;
int s = 0;
pentru (int i = 0; i
>
Console.WriteLine (e);
Console.ReadKey ();
>
Exemplu de buclă for, atunci când contorul este decrementat după fiecare iterație:
pentru (int i = 5; i> 0; i--) // executați de 5 ori
Console.WriteLine (i);
>
Contorul poate fi modificat nu numai de unul. Exemplu de program care imprimă numerele parțiale (cu numărul 50):
pentru (int i = 0; i <= 50; i+=2) //выполнится 26 раз
Console.WriteLine (i);
>
Cuvântul în timp ce se traduce ca "pentru moment", ceea ce îl caracterizează bine. Acesta continuă să fie executat până când o anumită condiție este adevărată. Are următoarea structură:
în timp ce (condiție de continuare)
// bloc de cod care trebuie repetat
>
Mai întâi, condiția este verificată și apoi blocul de cod este executat.
Un exemplu de același program care afișează numerele 0, 1, 2, 3, 4:
Bucla poate fi executată "pentru totdeauna" dacă setați întotdeauna condiția adevărată:
în timp ce (adevărat)
Console.WriteLine ("Perpetual Cycle");
>
Acest lucru este același în timp ce buclă, numai aici un bloc de cod este executat mai întâi, și apoi condiția este verificată. Aceasta garantează cel puțin o trecere de ciclu.
face
// bloc de cod care trebuie repetat
>
în timp ce (condiție de continuare);
Un exemplu de program care nu se oprește până când numărul 5 este introdus de la tastatură:
static void Principal (șir [] args)
int număr;
face
Console.WriteLine ("Introduceți numărul 5");
număr = Convert.ToInt32 (Console.ReadLine ());
>
în timp ce (numărul! = 5);
>
Vom vorbi despre buclele de foreach într-o lecție separată.
Din orice ciclu, puteți ieși din timp folosind instrucțiunea de pauză. Utilizarea acestui operator are sens după ce a îndeplinit o anumită condiție, în caz contrar bucla se va termina la prima repetare.
Un exemplu de program care verifică dacă există un multiplu de 13 în matrice. După găsirea unui astfel de număr, nu are sens să verificăm în continuare elementele rămase ale matricei și aici folosim instrucțiunea pauză:
static void Principal (șir [] args)
int [] numere = <4, 7, 13, 20, 33, 23, 54>;
bool b = fals;
pentru (int i = 0; i
b = adevărat;
pauză;
>
>
Console.WriteLine (b. "Există un multiplu de 13 în matrice." "Nu există un număr multiplu de 13 în matrice");
Console.ReadKey ();
>
Acest operator vă permite să treceți la următoarea iterație, fără a termina pe cea curentă.
Un exemplu de program care găsește suma elementelor ciudate ale unei matrice:
static void Principal (șir [] args)
int [] numere = <4, 7, 13, 20, 33, 23, 54>;
int s = 0;
pentru (int i = 0; i
continua; // mergeți la următoarea iterație
s + = numere [i];
>
Console.WriteLine (e);
Console.ReadKey ();
>
Sarcina 1. Afișați 20 de elemente din secvența 1, 4, 7, 10, 13 ...
Sarcina 2. Scrieți un program care va "cere" parola corectă, până când va fi introdusă. Parola corectă ar trebui să fie "rădăcină".
Problema 3. Sunt date două matrice de aceeași lungime (câte 10 elemente fiecare). Creați o a treia matrice care va afișa suma primelor două matrice. Primul element al celei de-a treia matrice este egal cu suma primelor elemente ale primelor două matrice și așa mai departe.
Operațiunea ciclistă în C-Sharp
Operatorul buclă de fore în C-Sharp servește pentru a enumera elementele colecției. Colecțiile includ tablouri, liste de liste și clase personalizate de colectare. În această declarație, nu este necesar să creați un contor cu variabile pentru a accesa elementele colecției, spre deosebire de alte cicluri. Declarația foreach are următoarea structură:
foreach ([tip] [variabilă] în [colecție])
// corpul bucla
>
Un exemplu de program care conține suma elementelor de matrice utilizând buclele foreach:
foreach (int în numere)
s + = el;
>
Console.WriteLine (e);
Console.ReadKey ();
>
La fiecare iterație, elementul colecției este scris succesiv la variabila el. La prima repetare, valoarea lui el este "4". pe a doua iterație - "7", etc.
Ca și în cazul altor bucle, puteți utiliza instrucțiunile de întrerupere și de continuare în foreach.
Folosind buclă foreach, afișați toate elementele dintr-o serie de numere întregi care sunt mai mari de 20 și mai mici de 50.
Funcții în C-Sharp. Declarație de retur
Funcția este o mică subrutină. Dacă pur și simplu un program este o soluție a unor probleme aplicate, atunci funcția este de asemenea o soluție, numai în cadrul programului și, prin urmare, îndeplinește sarcina "mai simplă". Funcțiile permit reducerea mărimii programului datorită faptului că nu este nevoie să re-scrieți vreun fragment de cod - sunăm doar cât doriți și unde este necesară funcția declarată.
Funcțiile din C-Sharp sunt, de asemenea, numite metode. Între aceste două concepte diferența este mică, iar aici vom folosi termenul de funcție.
[modificator de acces] [tip retur] [nume funcție] ([argumente])
// corpul funcției
>
Modificatorul de acces (scopuri) poate fi public, privat, protejat, intern. Pentru ce va fi necesar să vorbim într-o lecție separată, dar pentru moment vom folosi publicul peste tot.
Între modificator și tip, cuvântul "static" poate sta, ceea ce înseamnă că funcția va fi statică. Vom vorbi în detaliu despre funcțiile și variabilele statice într-o lecție separată. Voi spune doar că alte funcții pot fi chemați de la o funcție statică, dacă sunt și ele statice. Funcția principală este întotdeauna statică, așa că vom declara și toate funcțiile din această lecție statice.
Funcția poate returna o valoare sau nu poate reveni. Dacă funcția, de exemplu, returnează un număr întreg, trebuie să specificați tipul int. Dacă funcția nu returnează nicio valoare, atunci cuvântul cheie void este folosit pentru aceasta. Functiile care nu returneaza o valoare sunt de asemenea numite proceduri.
Funcțiile de apelare sunt astfel încât numele să reflecte esența funcției. Utilizați verbe sau combinații de cuvinte cu verbe. Exemple: GetAge (), Sortare (), SetVisibility ().
Argumentele sunt datele necesare pentru a efectua o funcție. Argumentele sunt scrise în formatul [type] [identifier]. Dacă există mai multe argumente, ele sunt separate de virgulă. Argumentele pot fi absente.
Prima linie a funcției, care specifică tipul, numele, argumentele etc. se numește antetul funcției.
Deci, există suficientă teorie, ne îndreptăm spre practică.
Exemplu de funcție care nu returnează o valoare
Să scriem o funcție simplă care va înlocui numele specificat cu altul în matricea de șir. Această funcție va avea trei argumente: un șir de șiruri de caractere, numele de înlocuit și un nume nou. Deoarece funcția nu va returna o valoare, specificați tipul gol înainte de numele funcției.
public static void ReplaceName (șir [nume, șir, string nouName)
pentru (int i = 0; i
nume [i] = nume nou;
>
>
Funcția însăși este foarte simplă. Trecem prin bucla elementelor și vedem dacă elementul este egal cu numele specificat. Dacă este așa, îl înlocuim cu un nume nou.
Funcția este scrisă și acum o folosim:
clasă
public static void ReplaceName (șir [nume, șir, string nouName)
pentru (int i = 0; i
nume [i] = nume nou;
>
>
static void Principal (șir [] args)
șir [] nume = <"Sergey", "Maxim", "Andrey", "Oleg", "Andrey", "Ivan", "Sergey">;
ReplaceName (nume, "Andrey", "Nikolay"); // apelează funcția. Toate liniile "Andrey" din tabloul vor fi înlocuite cu "Nikolay"
ReplaceName (nume, "Ivan", "Vladimir");
>
>
După apelarea de două ori o funcție a acestui program, matrice ar arata astfel: „Serghei“, „Maxim“, „Nicolae“, „Oleg“, „Nicolae“, „Vladimir“, „Serghei“.
Exemplu de funcție care returnează valori
Să scriem o funcție care va găsi numărul maxim în matrice. Argumentul pentru această funcție va fi unul - o serie de numere întregi. Tipul de returnare este un int întreg.
public statică int GetMax (int [] array)
int max = array [0];
pentru (int i = 1; i
max = array [i];
>
retur max;
>
Logica funcției este simplă. Creați o variabilă max, în care vom scrie primul element al matricei. Mai departe în ciclu, comparăm fiecare element cu o valoare în max, dacă elementul este mai mare decât max, apoi scrieți acest element la max. La sfârșitul funcției, utilizăm operatorul de retur pentru a returna rezultatul nostru.
Instrucțiunea de întoarcere trebuie să se afle întotdeauna într-o funcție care returnează o valoare.
Noi folosim funcția noastră:
clasă
public statică int GetMax (int [] array)
int max = array [0];
pentru (int i = 1; i
max = array [i];
>
retur max;
>
static void Principal (șir [] args)
int [] numere = <3, 32, 16, 27, 55, 43, 2, 34>;
int max;
max = GetMax (numere); // apela această funcție poate fi utilizată la atribuirea unei valori
Console.WriteLine (GetMax (numere)); // apelul funcției poate fi de asemenea folosit ca argument atunci când apelați o altă funcție. WriteLine () este, de asemenea, o funcție.
Console.ReadKey ();
>
>
Atunci când se întâmplă acest lucru operatorul iese din funcția și codul de mai jos (dacă există) nu va fi efectuată (de exemplu, funcția trecut la argumentul, în care nu are nici un sens pentru a îndeplini o funcție). Este similar cu declarația de pauză, care este utilizată pentru ieșirea din bucle. Acest operator poate fi de asemenea utilizat în funcții care nu returnează o valoare. Instrucțiunea de returnare poate fi utilizată de mai multe ori într-o funcție, dar acest lucru nu este recomandat.
Sarcina 1. Scrieți o funcție care va schimba toate elementele din matricea de numere întregi care sunt egale cu valoarea specificată (argument) la valoarea opusă prin semn. De exemplu, toate elementele matricei care sunt egale cu 5 se vor schimba la -5.
Sarcina 2. Scrieți o funcție care va găsi numărul minim de trei.
Sarcina 3. Scrieți o funcție care va returna elementul specificat din seria Fibonacci. Seria Fibonacci este o serie în care fiecare element următor este egal cu suma celor precedente. 1 1 2 3 5 8 13 21 ... Funcția ia numărul secvenței elementului și returnează elementul corespunzător.