Цикли в C

увеличение и намаление

Преди да научите за циклите, трябва да се запознаете с често използвания C метод за увеличаване/намаляване на променливи с единица. Разбира се, в C има такива форми на промяна на стойности като например a += 1 или a -= 1. Въпреки това, операторите за нарастване (операторът за увеличение "++") и операторите за намаляване (операторът за намаляване "--") се използват по-често: i++ или ++i, i-- или --i. В резултат на тези операции променливите се увеличават или намаляват с единица.

Не забравяйте, че когато видите изрази като ++i или i++, те променят стойността на i като резултат. Не го правете така: i = ++i. Това е напълно излишно.

Когато знакът за увеличение или намаление предшества променливата, тогава имаме префиксната форма на операцията (++i, --i), а когато след променливата, тогава постфиксната форма (i++, i--). Когато тези изрази не участват в изграждането на по-сложни изрази, тогава няма разлика между префиксната и постфиксната форма: какво е i++, какво е ++i - няма разлика, като резултат ще получим стойността на i още един.

Въпреки това, когато тези изрази участват в изграждането на по-сложни, разликата между префиксната и постфиксната форма се появява и се състои в следното: променливата, върху която се извършва операцията за увеличаване или намаляване в постфиксната форма, първо се използва в сложния израз, както е, и едва след това се увеличава с единица; ако имаме работа с префиксна форма, тогава променливата първо се променя и след това се използва. Например код:

, ще се покаже на екрана:

Този резултат се обяснява по следния начин:

стойността на променлива a е увеличена с единица, след което тази стойност е присвоена на променлива c;

стойността на променлива b първо беше присвоена на променлива d и едва след товаувеличен с един.

Още един пример:

Екранът ще покаже:

Това е резултат от булеви изрази, където 0 означава невярно, а 1 означава вярно. В този случай, когато x се сравнява с нула, стойността му все още не е увеличена, а когато се сравнява y, стойността му вече е по-голяма от нула.

Можете също така да приложите операторите за увеличаване и намаляване към променливи от реален тип.

докато цикъл

Цикълът while в езика за програмиране C работи точно както в други езици за програмиране. Подобно на условния израз в оператора if, условният израз в while е ограден в скоби. Ако тялото на цикъла включва няколко израза, разделени с точка и запетая, тогава цялото тяло е затворено във фигурни скоби.

Мисия

  1. Задайте звезда на 0. Докато звездата достигне 55, показвайте по една звездичка (*) на ред.
  2. Използвайте цикъл while, за да програмирате показване на цифрови кодове и стойности на таблицата с ASCII символи от 31 до 127 включително. В този случай след всеки десети знак преминавате на нов ред. (Съвет: за да преминете към нов ред, трябва да използвате оператор if в цикъла while, в който остатъкът от 1 след разделянето на 10 се сравнява с нула.)
    цикъла
  3. Използвайте външните и вложените цикли while, за да организирате показването на таблицата за умножение на екрана.
    стойността

1 Операцията за намиране на остатъка от деление в езика C се обозначава със знака за процент (%).

do-while цикъл

Цикълът do-while се различава от while само по това, че тялото му ще бъде изпълнено поне веднъж, независимо от състоянието на цикъла. Синтаксисът на цикъла do-while може да бъде описан по следния начин (къдрави скоби могат да бъдат пропуснати, ако има само един израз):

Този цикъл се нарича цикълпостусловие. Използва се много по-рядко от обичайното време. По принцип почти винаги можете да го направите без него, но в определени ситуации използването му опростява кода. Да предположим, че искате да покажете отделни цифри от число. Всяко число се състои от поне една цифра, дори числото 0. Можете да разрешите този проблем с помощта на цикъл while:

Но в този случай, ако a е 0, тогава цикълът никога няма да се изпълни. Ще трябва да използваме оператор if преди цикъла, в който сравняваме променливата с 0. Използването на цикъла do-while решава този проблем, тъй като тялото му ще бъде изпълнено веднъж, дори ако стойността на променливата е нула:

Нека си представим синтаксиса на заглавката на цикъла for в езика за програмиране C, както следва:

за (част1; част2; част3)

Заглавието на цикъла for има три части, разделени с точка и запетая; освен това всяка част може да бъде сложна, т.е. се състои от няколко израза, разделени с обикновена запетая. Първата част обикновено определя променливите и често техните начални стойности; във втория с помощта на логическия израз(и) се задават условията, при които се изпълнява тялото на цикъла; третата част съдържа изрази, които се изпълняват в края на всяка итерация на цикъла (най-често тук се променя стойността на променливата, посочена в първата част на заглавката).

Ето как ще изглежда програмният код, който показва таблицата със символи на екрана, който използва for цикъла:

Мисия

Напишете програма, използвайки for цикъл, който показва таблицата за умножение (Съвет: както при while, трябва да използвате два цикъла, външен цикъл и вложен цикъл.)

прекъсване и продължаване на изявления

Командата break ви позволява да прекъснете изпълнението на цикъла, а continue - да прекъснете текущата итерация (преминаване) на цикъла. Почти винаги можете да минете без тяхоператори, но понякога тяхното използване ви позволява да опростите програмния код и да го направите по-разбираем.

Нека да разгледаме няколко примера. Да предположим, че искате да проверите масива за наличието на поне един елемент със стойност 0. Щом се намери нула, няма смисъл да проверявате останалата част от масива. Следователно, за да не се извършват ненужни итерации, се използва командата break.

Втори пример. Изисква се да копирате от един масив в друг само числа, които са по-големи от 0. Можете да използвате continue, за да прекъснете итерацията на цикъла, ако следващият елемент е по-малък или равен на нула.

В този случай използването на continue изобщо не е очевидно от гледна точка на необходимостта, т.к Можете лесно да се справите без него, ако промените условието if на обратното, премахнете continue и поставите останалия код в тялото на оператора if.