Что полезно знать начинающему в Си/Си++, грамматика языка Си/Си++. Часть 2

Всем, доброго, с вами Мирра Андрюхан. В прошлой статье мы с вами разобрались с первой частью грамматики Си/Си++. Разобравшись с основными моментами Си/Си++ и типами данных, мы также поняли, как объявляют, определяют и инициализируют переменные. После этого у вас, врядли возникнут проблемы по созданию переменных, если конечно вы не пытаетесь освоить что-то новое и у вас, разумеется не все сразу получается. Например, такое может быть с определением и инициализацией объекта класса, где объект это переменная, но об этом либо позднее, либо в следующем цикле статей.

А теперь, предлагаю, разобраться в работе основных операторах языка программирования Си/Си++ и работе с функциями. Этого, с лихвой хватает на уровне начинающего в программировании на Си/Си++. И не забывайте, давать себе времени на прочтение, т.к. эти статьи залпом лучше не читать, иначе толку будет меньше. К тому же, на этот раз примеры будут в каждой части статьи, а не как в прошлой, т.е. теории и практики будет в равных пропорциях. А также полагаю, что вы применяете на ОС Линукс указанные примеры, чтобы самолично удостовериться в результате выполнения программ, а не просто пролистать. Практика, всегда полезна.

Введение.

Само понятие функции возникло задолго до появления операторов, т.к. в те времена вызов нужного куска программы был важнее, а операторов еще не было. Можно, сказать, что не было и ПК в привычном виде. А если операторы были, то только простые, но все это времена ассемблера. И в ассемблере к тому же, можно было вызвать подпрограмму, которая была, либо процедурой, либо функцией, причем функция могла принять аргументы и вернуть значения. Однако, времена шли, потребности росли и менялись, и со временем появились формальные языки высокого уровня, например такие как Си. А Си стал включать в себя такие операторы, как: оператор присвоения, математический оператор, логический оператор (булева логика, математическая логика), оператор преобразования типов данных, операторы адресации и прочие операторы.

Понимаю, что операторов что-то многовато для начинающего, но это только основные операторы, есть еще операторы для работы с классами и объектами и т.д. с миру по нитке. Но о них, мы либо не будем упоминаться, либо позднее в данном цикле статей, т.к. еще в начале данного цикла статей мы определили предел обучения, направление и цель, для которой все это рассказываем. Как говорится обо все не расскажешь за один заход, как ни пытайся. Однако, для расширения кругозора тут будут предъявлены большинство операторов языка Си/Си++, которые могут когда-нибудь пригодиться.

Математические операторы

Данные операторы в особом пояснении не нуждаются, поэтому предлагаю посмотреть на наглядный пример ниже. Однако, обратите внимание, декремент и инкремент. И в тоже время, не забывайте что остаток от целочисленного деления не выполняется с численными типами данных с плавающих запятой, для них есть отдельные функции в стандартных библиотеках. Но, об этом в следующей статье.

Как собирать пример выше, вы уже знаете, поэтому объяснять не стану, если что смотрите в начале статьи по ссылке на прошлые статьи из данного цикла статей. И далее в этой статье мы не будем упоминать исходный код файла «makefile», т.к. он останется без изменений.

Логические операторы

Также в особом представлении не нуждаются, поэтому посмотрим все в примере ниже.

Операторы адресации и преобразования типов

Операторы адресации передают ссылку на переменную для передачи ее указателю или ссылке в качестве аргумента функции. В таком варианте ссылки вам пригодятся чаще всего, при работе с функциями из стандартной библиотеки, поэтому мы о них упомянем в этой статье. А также, преобразование типов работает в том случае, если значение переменной в нынешнем типе данных не выходит за пределы значений, а также известно компилятору Си/Си++ о том, как преобразовывать определенный тип данных. К тому же компилятор изначально знает, как приводить основные типы данных, чего не скажешь о классах в Си++. В этом, случае такие допустимые преобразования прописываются в самом классе, тогда преобразование работает. В обще-то вы можете не замечать, когда преобразование типов может сработать, это нормально на вашем уровне развития. Просто, раскладывайте выражение с преобразованием в  несколько строк выражений и проверяйте каждую часть при отладке программы. А теперь, давайте посмотрим на пример.

Оператор присвоения

Оператор присвоения выполняет заполнение переменной итоговым значением выражения справа, при этом некоторые присваивания могут иметь сокращенный вид. Например, как это видно в примере.

Приоритеты выражений.

В принципе в приоритетах выражений в Си/Си++ нет ничего сложного. Достаточно помнить, вызовы функций и круглые скобки выполняются первыми, а потом все остальное. При этом, математика выполняется как принято в математике, а в математической логике в принципе также, но сначала выполняются скобки и логическое «НЕ», а уже потом логическое «И» и после логическое «ИЛИ», а знаки сравнения равно и т.д. выполняются последними. Так, что скобками мы повышаем приоритет выполнения  части выражения.

И да, по сути как ранее упоминалось в основных моментах Си/Си++, вы основном пишете исходный код выражениями, которые всегда заканчиваются знаком «;». А компилятор их переводит в понятных компьютеру язык исполнения программного кода.

А теперь, посмотрим наглядный пример.

Помимо обычных и простых операторов в языке программирования Си/Си++ есть еще оператор условия и операторы цикла.

Оператор условия

Оператор условия из себя не представляет ничего сложного, достаточно помнить что это оператор ветвления алгоритма, т.е. при выполнении логического выражения выполняется одна часть исходного кода, в противном случае другая. Например, как это видно на примере ниже.

Операторы цикла

Всего операторов цикла в языке программирования Си/Си++, три. Это перечисление численной переменной и два цикла с условием, причем первый сначала проверяет условие, а потом выполняет, а второй сначала выполняет, потом проверяет условие на выполнение.

Функция в языке программирования Си/Си++

Функции в Си/Си++ тоже не так уж сложны, как это может показаться и они очень часто применяются в программировании, как на Си, так и в Си++.

Для создания функции, необходимо задать возвращаемое ею значение, имя самой функции и в круглых скобках перечислить принимаемые аргументы через запятую, а уже потом в фигурных скобках написать выполнение функции, причем завершение функции будет оператор «return», как это показано на примере ниже.

Также напомню, что исходный код, который повторяет два и более раз, рекомендуют переносить в отдельную функцию. А также напомню, что срок жизни переменных определенных в функции, ее же и ограничиваются.

Этого достаточно знать по части грамматики в языке Си/Си++, чтобы применять язык программирования для самоизучения его по любым книжкам по нему, например по такой. Понимаю, не этого вы от меня ожидали, но блог не является учебником, он только знакомит вас с языком и помогает сделать первые шаги в этом деле. 

В заключение

По грамматике языка программирования Си/Си++ можно много чего сказать, но это выходит далеко за пределы ведения сие блога. Однако, напомню вам о том, что полезно еще раз прочесть про основные моменты в Си/Си++ в прошлой статье и посмотреть на пример ниже.

Поздравляю вас с прохождением основных моментов в грамматике языка программирования Си/Си++. Теперь, вы можете браться за любой учебник по этому языку, что для школьников, что для студентов и программировать в свое удовольствие. Теперь, вы знаете все, что вам нужно. Однако, в следующей статье мы с вами пройдемся по основным моментам установки и удаления программ созданных языком программирования Си/Си++.

 163 total views,  2 views today