JavaJava · Chapterبەش 7 · Lectureوانە 7.3
break and continueڕستەی break و ڕستەی continue
Leaving a loop early with break and skipping one round with continue, in for, while and do-while: where control jumps, the useless i++ before break, while (true) with break, a search that stops at the first match, why while loops must update before continue (and the endless loop when they do not), break in nested loops with a labelled break as an extra, and break in a switch inside a loop.
دەرچوونی زوو لە بە break و جێهێشتنی یەک بە continue، لە for، while و do-whileـدا: کۆنترۆڵ بۆ کوێ باز دەدات، i++ـی بێسوود پێش break، while (true) لەگەڵ break، گەڕانێک کە لە یەکەم دۆزینەوەدا دەوەستێت، بۆچی دەبێت پێش continue نوێ بکەنەوە (و ئەو ئەگەر نەیکەن)، break لە لەگەڵ breakـی ناونراو وەک زیادە و break لە switchـێکی ناو .
What you will learnچی فێر دەبیت
- Use
breakto leave a loop andcontinueto skip one round, in for, while and do-while. - Predict the output of loops with
breakandcontinue, and say where control jumps. - Update the counter before
continuein while loops, and stop a search at the first match. - Explain why
breakleaves only the innermost loop or switch.
breakبۆ دەرچوون لە وcontinueبۆ جێهێشتنی یەک بەکار بهێنیت، لە for، while و do-whileـدا.- ئەو پێشبینی بکەیت کە
breakوcontinueـیان تێدایە و بڵێیت کۆنترۆڵ بۆ کوێ باز دەدات. - لە پێش
continueنوێ بکەیتەوە و گەڕانێک لە یەکەم دۆزینەوەدا ڕابگریت. - ڕوونی بکەیتەوە بۆچی
breakتەنیا لە ناوەوەترین یان switch دەردەچێت.
Leaving early or skipping a roundزوو دەرچوون یان جێهێشتنی خولانەوەیەک
Normally a loop stops only when its condition becomes false. Sometimes you want to leave it at once, or to skip the rest of one round without testing anything. Java has two statements for this, and both almost always stand inside an if: break leaves the loop; continue jumps to the next round. Python and MATLAB have the same pair (Python, MATLAB).
بە ئاسایی تەنیا کاتێک دەوەستێت کە هەڵە بێت. هەندێک جار دەتەوێت یەکسەر لێی دەربچیت، یان باقی جێبهێڵیت بێ ئەوەی هیچ بپشکنیت. Java دوو بۆ ئەمە هەیە و هەردووکیان نزیکەی هەمیشە لە ناو ifـێکدان: break لە دەردەچێت؛ continue باز دەدات بۆ دواتر. Python و MATLAB هەمان جووتیان هەیە (Python، MATLAB).


break: leave the loop nowbreak: ئێستا لە خولەکە دەربچۆ
break stops a loop (or a switch) at once, and the program continues with the code after it. In Python it leaves only the innermost loop; PHP's break 2; can leave two nested loops.
break (یان switchـێک) دەستبەجێ دەوەستێنێت و بە کۆدی دوای ئەو بەردەوام دەبێت. لە Pythonـدا تەنیا ناوەکیترین خول جێدەهێڵێت؛ break 2;ـی PHP دەتوانێت دوو خولی ناوەکی جێبهێڵێت.
break ends the loop at once, without testing the condition again, and the program goes on with the first statement after the loop. It works in all three loops: for, while and do … while.
break یەکسەر کۆتایی پێ دەهێنێت (بێ ئەوەی دیسان بپشکنێت) و لەگەڵ یەکەم لە دوای بەردەوام دەبێت. لە هەر سێ کار دەکات: for، while و do … while.
public class BreakAfter {
public static void main(String[] args) {
for (int i = 0; i <= 6; i++) {
if (i == 3) {
break;
}
System.out.println(i);
}
System.out.println("The first statement after the loop");
}
}$ java BreakAfter 0 1 2 The first statement after the loop
break in while and do-whilebreak لە خولی while و خولی do...whileـدا
The same stop works in the other two loops. These versions increase i themselves, at the end of the body:
هەمان وەستان لە دوو تریشدا کار دەکات. ئەم وەشانانە خۆیان i زیاد دەکەن، لە کۆتایی :
public class BreakWhile {
public static void main(String[] args) {
int i = 0;
while (i <= 6) {
if (i == 3) {
i++;
break;
}
System.out.println(i);
i++;
}
System.out.println("After the loop, i = " + i);
}
}$ java BreakWhile 0 1 2 After the loop, i = 4
public class BreakDoWhile {
public static void main(String[] args) {
int i = 0;
do {
if (i == 3) {
i++;
break;
}
System.out.println(i);
i++;
} while (i <= 6);
}
}$ java BreakDoWhile 0 1 2
The i++ just before break does not change the output: the loop ends anyway. It changes only i, which is 4 after the loop instead of 3; that matters only if you use i later.
i++ـەکەی ڕاستەوخۆ پێش break ناگۆڕێت: هەر کۆتایی دێت. تەنیا i دەگۆڕێت، کە دوای دەبێتە 4 لە جیاتی 3؛ ئەمە تەنیا گرنگە ئەگەر دواتر i بەکار بهێنیت.
break in while and do-whilebreak لە خولی while و خولی do...whileـدا
while (true): a loop that only break can endwhile (true): خولێک کە تەنیا break کۆتایی پێ دەهێنێت
while (true) never ends by itself; a break inside decides when to leave. It fits a check that must come in the middle of a round, such as asking until the answer is valid (&&: Combining conditions):
while (true) بە خۆی هەرگیز کۆتایی نایەت؛ breakـێک لە ناوەوە بڕیار دەدات کەی دەربچێت. بۆ پشکنینێک گونجاوە کە دەبێت لە ناوەڕاستی بێت، وەک پرسیارکردن تا وەڵامەکە دروست دەبێت (&&: بەستنی مەرجەکان):
import java.util.Scanner;
public class AskAge {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int age;
while (true) {
System.out.print("Age (1-120): ");
age = input.nextInt();
if (age >= 1 && age <= 120) {
break;
}
System.out.println("Please type an age from 1 to 120.");
}
System.out.println("Thank you. Age = " + age);
}
}$ java AskAge Age (1-120): 0 Please type an age from 1 to 120. Age (1-120): 200 Please type an age from 1 to 120. Age (1-120): 35 Thank you. Age = 35
Search and stop at the first matchگەڕان و وەستان لە یەکەم دۆزینەوەدا
break is perfect for a search: check the items one by one and stop at the first one you want. This is a . The program reads up to seven night temperatures and stops at the first frost:
break بۆ گەڕان زۆر گونجاوە: دانەکان یەک بە یەک بپشکنە و لە یەکەم ئەوەی دەتەوێت بوەستە. ئەمە ـە. پلەی گەرمیی تا حەوت شەو دەخوێنێتەوە و لە یەکەم سەهۆڵبەندان دەوەستێت:
import java.util.Scanner;
public class FirstFrost {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean found = false;
for (int night = 1; night <= 7; night++) {
System.out.print("Night " + night + " temperature: ");
int t = input.nextInt();
if (t < 0) {
System.out.println("First frost on night " + night + ": " + t + " degrees");
found = true;
break;
}
}
if (!found) {
System.out.println("No frost this week.");
}
}
}$ java FirstFrost Night 1 temperature: 6 Night 2 temperature: 3 Night 3 temperature: -2 First frost on night 3: -2 degrees $ java FirstFrost Night 1 temperature: 5 Night 2 temperature: 4 Night 3 temperature: 6 Night 4 temperature: 3 Night 5 temperature: 2 Night 6 temperature: 4 Night 7 temperature: 5 No frost this week.
The variable found remembers whether the loop ended with break or ran to the end; only then can the program say No frost this week.
found لە بیری دەمێنێت کە ئایا بە break کۆتایی هات یان تا کۆتایی ڕۆیشت؛ تەنیا ئەوکات دەتوانێت بڵێت No frost this week.
continue: skip to the next roundcontinue: باز بدە بۆ خولانەوەی دواتر
continue skips the rest of the current iteration and jumps to the next one. Unlike break, the loop keeps going.
continue پاشماوەی خولانەوەی ئێستا تێدەپەڕێنێت و دەچێتە سەر خولانەوەی دواتر. جیاواز لە break، بەردەوام دەبێت.
continue ends only the current round: the rest of the body is skipped and the loop goes on with its next round. It works in all three loops and almost always sits inside an if.
continue تەنیا ئێستا تەواو دەکات: باقی تێدەپەڕێنرێت و لەگەڵ دواتر بەردەوام دەبێت. لە هەر سێ کار دەکات و نزیکەی هەمیشە لە ناو ifـێکدایە.
public class ContinueDemo {
public static void main(String[] args) {
for (int i = 0; i <= 6; i++) {
if (i == 3) {
continue;
}
System.out.println(i);
}
}
}$ java ContinueDemo 0 1 2 4 5 6
In a for loop, continue jumps to the update i++ and then to the test, so the loop moves on normally.
لە continue باز دەدات بۆ نوێکردنەوەی i++ و پاشان بۆ پشکنین، بۆیە بە ئاسایی بەردەوام دەبێت.
continue in while and do-while: update firstcontinue لە while و do-whileـدا: سەرەتا نوێکردنەوە
In a while or do … while loop, continue jumps straight to the condition test, so an update at the bottom of the body is skipped. That is why these versions increase i before continue:
لە یان continue ڕاستەوخۆ باز دەدات بۆ پشکنینی ، بۆیە نوێکردنەوەیەک لە خوارەوەی تێدەپەڕێنرێت. لەبەر ئەمە ئەم وەشانانە i پێش continue زیاد دەکەن:
public class ContinueWhile {
public static void main(String[] args) {
int i = 0;
while (i <= 6) {
if (i == 3) {
i++;
continue;
}
System.out.println(i);
i++;
}
}
}$ java ContinueWhile 0 1 2 4 5 6
public class ContinueDoWhile {
public static void main(String[] args) {
int i = 0;
do {
if (i == 3) {
i++;
continue;
}
System.out.println(i);
i++;
} while (i <= 6);
}
}$ java ContinueDoWhile 0 1 2 4 5 6
continue in while and do-while: update firstcontinue لە while و do-whileـدا: سەرەتا نوێکردنەوە
The trap, liveتەڵەکە، بە زیندوویی
Move the i++ after the if and run it. It prints 0, 1 and 2, then nothing more, and never ends: at i == 3, continue skips the only i++, so the loop tests 3 <= 6 again and again:
i++ بگوازەرەوە بۆ دوای if و جێبەجێی بکە. 0، 1 و 2 چاپ دەکات، پاشان هیچی تر و هەرگیز کۆتایی نایەت: لە i == 3ـدا continue تاکە i++ تێدەپەڕێنێت، بۆیە دووپاتە و دووپاتە 3 <= 6 دەپشکنێت:
public class ContinueTrap {
public static void main(String[] args) {
int i = 0;
while (i <= 6) {
if (i == 3) {
continue;
}
System.out.println(i);
i++;
}
}
}$ java ContinueTrap 0 1 2 ^C
Nothing more appeared; after 3 seconds we pressed Ctrl+C (the ^C).
هیچی تر دەرنەکەوت؛ دوای 3 چرکە Ctrl+Cـمان داگرت (^C).
A print at the top of the body shows what happens inside: the same line for ever.
چاپکردنێک لە سەرەوەی نیشان دەدات لە ناوەوە چی ڕوو دەدات: هەمان دێڕ بۆ هەمیشە.
public class ContinueTrapWatch {
public static void main(String[] args) {
int i = 0;
while (i <= 6) {
System.out.println("checking i = " + i);
if (i == 3) {
continue;
}
i++;
}
}
}$ java ContinueTrapWatch checking i = 0 checking i = 1 checking i = 2 checking i = 3 checking i = 3 checking i = 3 checking i = 3 …
Shortened: in 1.5 seconds it printed 1,370,775 lines, all but the first three checking i = 3, before Ctrl+C stopped it.
کورتکراوەتەوە: لە 1.5 چرکەدا 1,370,775 دێڕی چاپ کرد، هەموویان جگە لە سێ دێڕی یەکەم checking i = 3 بوون، پێش ئەوەی Ctrl+C ڕایبگرێت.
break in nested loopsbreak لە خولە ناوەکییەکاندا
break leaves only the loop it is in. Inside a nested loop it ends the inner loop, and the outer loop goes on with its next round:
break تەنیا لەو دەردەچێت کە تێیدایە. لە ناو ناوەوە کۆتایی پێ دەهێنێت و دەرەوە لەگەڵ دواتری بەردەوام دەبێت:
public class NestedBreak {
public static void main(String[] args) {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
break;
}
System.out.println("i = " + i + ", j = " + j);
}
System.out.println("end of outer round " + i);
}
}
}$ java NestedBreak i = 1, j = 1 end of outer round 1 i = 2, j = 1 end of outer round 2 i = 3, j = 1 end of outer round 3
break in a switch and in a loopbreak لە switch و لە خولدا
You met break in The switch statement, where it ends a case so that the next case does not run as well (fall-through). The rule is the same everywhere: break leaves the innermost switch or loop around it. So a break in a switch inside a loop ends the switch, not the loop. This menu does not stop at 0:
breakـت لە ڕستەی switch بینی، کە بەشێک تەواو دەکات بۆ ئەوەی بەشی دواتریش جێبەجێ نەبێت (تێپەڕین). یاساکە لە هەموو شوێنێک وەک یەکە: break لە نزیکترین switch یان دەردەچێت کە دەوری داوە. بۆیە breakـێک لە ناو switchـێکی ناو switchـەکە کۆتایی پێ دەهێنێت، نەک . ئەم لە 0ـدا ناوەستێت:
import java.util.Scanner;
public class MenuTrap {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (true) {
System.out.print("1 = tea, 2 = coffee, 0 = exit: ");
int choice = input.nextInt();
switch (choice) {
case 1:
System.out.println("Tea");
break;
case 2:
System.out.println("Coffee");
break;
case 0:
System.out.println("Bye");
break;
default:
System.out.println("No such item");
}
}
}
}$ java MenuTrap 1 = tea, 2 = coffee, 0 = exit: 1 Tea 1 = tea, 2 = coffee, 0 = exit: 0 Bye 1 = tea, 2 = coffee, 0 = exit: 2 Coffee 1 = tea, 2 = coffee, 0 = exit: Exception in thread "main" java.util.NoSuchElementException at java.base/java.util.Scanner.throwFor(Scanner.java:937) at java.base/java.util.Scanner.next(Scanner.java:1594) at java.base/java.util.Scanner.nextInt(Scanner.java:2258) at java.base/java.util.Scanner.nextInt(Scanner.java:2212) at MenuTrap.main(MenuTrap.java:8)
After Bye the loop asks again; when the input runs out, nextInt() throws a NoSuchElementException (Bad input). Let the loop condition end the menu instead:
دوای Bye دیسان دەپرسێت؛ کاتێک تەواو دەبێت، nextInt() NoSuchElementException فڕێ دەدات (نێوخستەی خراپ). لە جیاتی ئەوە با کۆتایی پێ بهێنێت:
import java.util.Scanner;
public class MenuFixed {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int choice;
do {
System.out.print("1 = tea, 2 = coffee, 0 = exit: ");
choice = input.nextInt();
switch (choice) {
case 1:
System.out.println("Tea");
break;
case 2:
System.out.println("Coffee");
break;
case 0:
System.out.println("Bye");
break;
default:
System.out.println("No such item");
}
} while (choice != 0);
}
}$ java MenuFixed 1 = tea, 2 = coffee, 0 = exit: 1 Tea 1 = tea, 2 = coffee, 0 = exit: 0 Bye
Common mistakesهەڵە باوەکان
| You wroteنووسیت | javac or the run saysjavac یان جێبەجێکردن دەڵێت | Fixچارەسەر |
|---|---|---|
break; with no loop or switch around itbreak; بێ یان switch لە دەوریدا | break outside switch or loop | break only inside a loop or a switch.break تەنیا لە ناو یان switchـدا. |
continue; with no loop around itcontinue; بێ لە دەوریدا | continue outside of loop | continue only inside a loop.continue تەنیا لە ناو . |
a statement right after break; ڕاستەوخۆ لە دوای break; | unreachable statement | Put it before break, or delete it.بیخەرە پێش break، یان بیسڕەوە. |
continue before the update in a while loopcontinue پێش نوێکردنەوە لە | never ends, no messageهەرگیز کۆتایی نایەت، بێ پەیام | Update first, or use for.سەرەتا نوێ بکەرەوە، یان for بەکار بهێنە. |
break expected to leave two nested loopsچاوەڕوانی ئەوە کە break لە دوو دەربچێت | the outer loop goes on دەرەوە بەردەوام دەبێت | A labelled break, or a boolean flag.breakـی ناونراو، یان وەک نیشانە. |
break in a switch inside a loopbreak لە switchـێکی ناو | the loop goes on بەردەوام دەبێت | End the loop with its condition.با کۆتایی پێ بهێنێت. |
The real javac messages of the first three rows:
پەیامە ڕاستەقینەکانی javac بۆ سێ ڕیزی یەکەم:
$ javac BreakOutside.java
BreakOutside.java:5: error: break outside switch or loop
break;
^
1 error
$ javac ContinueOutside.java
ContinueOutside.java:5: error: continue outside of loop
continue;
^
1 error
$ javac Unreachable.java
Unreachable.java:5: error: unreachable statement
System.out.println(i);
^
1 errorPracticeڕاهێنان
Print the numbers 1 to 20 on one line, but skip every multiple of 3.
ژمارەکانی 1 تا 20 لە یەک دێڕدا چاپ بکە، بەڵام هەموو چەندجارەکانی 3 جێبهێڵە.
Hintئاماژە
i % 3 == 0 tells you a multiple of 3.
i % 3 == 0 چەندجارەکانی 3 دیاری دەکات.
Show answerوەڵامەکە پیشان بدە
public class SkipThrees {
public static void main(String[] args) {
for (int i = 1; i <= 20; i++) {
if (i % 3 == 0) {
continue;
}
System.out.print(i + " ");
}
System.out.println();
}
}$ java SkipThrees 1 2 4 5 7 8 10 11 13 14 16 17 19 20
Read numbers until the user types 0. Skip negative numbers (say so) and print the total of the others. Use while (true), break and continue.
ژمارە بخوێنەوە تا 0 دەنووسێت. ژمارە نەرێنییەکان جێبهێڵە (ئەوە بڵێ) و کۆی ئەوانی تر چاپ بکە. while (true)، break و continue بەکار بهێنە.
Show answerوەڵامەکە پیشان بدە
import java.util.Scanner;
public class SumPositive {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int total = 0;
while (true) {
System.out.print("Number (0 to stop): ");
int n = input.nextInt();
if (n == 0) {
break;
}
if (n < 0) {
System.out.println("Skipped " + n);
continue;
}
total += n;
}
System.out.println("Total of the positive numbers: " + total);
}
}$ java SumPositive Number (0 to stop): 5 Number (0 to stop): -2 Skipped -2 Number (0 to stop): 7 Number (0 to stop): -1 Skipped -1 Number (0 to stop): 3 Number (0 to stop): 0 Total of the positive numbers: 15
Read a whole number above 1 and print its smallest divisor above 1, or say that it is prime. Stop at the first divisor.
لە 1 گەورەتر بخوێنەوە و بچووکترین دابەشکەری لە 1 گەورەتری چاپ بکە، یان بڵێ کە ژمارەیەکی سەرەتاییە. لە یەکەم دابەشکەردا بوەستە.
Show answerوەڵامەکە پیشان بدە
import java.util.Scanner;
public class SmallestDivisor {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Whole number above 1: ");
int n = input.nextInt();
int d = 2;
while (d < n) {
if (n % d == 0) {
break;
}
d++;
}
if (d == n) {
System.out.println(n + " is prime");
} else {
System.out.println("Smallest divisor of " + n + ": " + d);
}
}
}$ java SmallestDivisor Whole number above 1: 91 Smallest divisor of 91: 7 $ java SmallestDivisor Whole number above 1: 97 97 is prime
If no divisor is found, the loop ends with d == n: the number is prime.
ئەگەر هیچ دابەشکەرێک نەدۆزرایەوە، بە d == n کۆتایی دێت: ژمارەکە سەرەتاییە.
What does this loop print? Explain each continue and the break.
ئەم چی چاپ دەکات؟ هەر continueـێک و breakـەکە ڕوون بکەرەوە.
for (int i = 1; i <= 10; i++) {
if (i % 4 == 0) {
continue;
}
if (i == 7) {
break;
}
System.out.print(i + " ");
}
System.out.println();Show answerوەڵامەکە پیشان بدە
$ java BreakContinueMix 1 2 3 5 6
4 is skipped by continue; at 7 break ends the loop before the print, so 8 is never even tested.
4 بە continue تێدەپەڕێنرێت؛ لە 7ـدا break پێش چاپکردن کۆتایی پێ دەهێنێت، بۆیە 8 هەرگیز ناپشکنرێت.
Predict the output. Does break stop both loops?
پێشبینی بکە. ئایا break هەردوو دەوەستێنێت؟
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j > i) {
break;
}
System.out.print(i + "" + j + " ");
}
System.out.println();
}Show answerوەڵامەکە پیشان بدە
$ java NestedPredict 11 21 22 31 32 33
No: in outer round i the inner loop breaks when j > i, so row i has i pairs, and every outer round still runs.
نەخێر: لە دەرەوەی iـدا ناوەوە کاتێک j > i دەبێت دەوەستێت، بۆیە ڕیزی i ژمارەی i جووتی تێدایە و هەموو دەرەوە هەر جێبەجێ دەبن.
Summaryکورتە
breakends the loop at once; the program goes on after the loop. It works in for, while and do-while.continueskips the rest of one round. In for, the update still runs; in while and do-while it is skipped, so update beforecontinue.- Use
breakto stop a search at the first match, andwhile (true)+breakto ask until the input is valid. breakleaves only the innermost loop or switch; a labelled break leaves an outer loop too.
breakیەکسەر کۆتایی پێ دەهێنێت؛ لە دوای بەردەوام دەبێت. لە for، while و do-whileـدا کار دەکات.continueباقی یەک تێدەپەڕێنێت. لە forـدا نوێکردنەوەکە هەر جێبەجێ دەبێت؛ لە while و do-whileـدا تێدەپەڕێنرێت، بۆیە پێشcontinueنوێ بکەرەوە.breakبۆ وەستاندنی گەڕان لە یەکەم دۆزینەوەدا وwhile (true)+breakبۆ پرسیارکردن تا دروست دەبێت بەکار بهێنە.breakتەنیا لە ناوەوەترین یان switch دەردەچێت؛ breakـی ناونراو لە دەرەوەش دەردەچێت.
What is the difference between break and continue?جیاوازیی نێوان break و continue چییە؟
break ends the whole loop; continue ends only the current round.
break هەموو کۆتایی پێ دەهێنێت؛ continue تەنیا ئێستا.
Why can continue make a while loop endless?بۆچی continue دەتوانێت خولێکی while بێکۆتا بکات؟
It jumps to the test and skips an update written after it.
باز دەدات بۆ پشکنین و نوێکردنەوەیەک کە لە دوای ئەو نووسراوە تێدەپەڕێنێت.
A menu loop contains a switch. Why does break in case 0 not end the menu?خولێکی مێنیو switchـێکی تێدایە. بۆچی break لە case 0ـدا مێنیوەکە کۆتایی پێ ناهێنێت؟
It leaves the switch, the innermost statement around it, not the loop.
لە switchـەکە دەردەچێت، نزیکترین لە دەوریدا، نەک لە .
Lesson complete!وانەکە تەواو بوو!
Well done. Review the key terms, then go on to the next lesson.دەستخۆش. سەیرێکی زاراوە سەرەکییەکان بکەرەوە، پاشان بڕۆ بۆ وانەی داهاتوو.
Key termsزاراوە سەرەکییەکان
Methods, Parameters and Return Valuesمیتۆدەکان، پارامیتەرەکان و نرخە گەڕاوەکان
Related lecturesوانە پەیوەندیدارەکان
References and further readingسەرچاوەکان و خوێندنەوەی زیاتر
This lecture is a first edition. The Kurdish text and terminology are waiting for review by Kurdish IT teachers.ئەم وانەیە چاپی یەکەمە. دەقە کوردییەکە و زاراوەکانی چاوەڕێی پێداچوونەوەی مامۆستایانی کوردی بواری IT ن.