Программа на языке Си это текстовый файл с расширением. c
Текст программы имеет определенную структуру:
1. заголовок
2. включение необходимых внешних файлов
3. ваши определения для удобства работы
4. объявление глобальных переменных
Перед использованием переменной в Си её необходимо объявить! Т.е. указать компилятору какой тип данных она может хранить и как она называется.
Глобальные переменные объявляются, вне какой либо функции. Т.е. не после фигурной скобки {. Они доступны в любом месте программы, значит можно читать их значения и присваивать им значения там, где требуется.
5. описание функций - обработчиков прерываний
6. описание других функций используемых в программе
7. функция main - это единственный обязательный пункт !
Это не жесткий порядок, а ориентировочный!
Иногда п. 6 - это прототипы функций, а сами функции описываются полностью после п. 7.
Прототип функции - показывает образец того, как применять функцию в программе, какие значения в нее передаются и, если она возвращает какое-то значение, то прототип указывает тип возвращаемых данных. Прототип не имеет скобок { }, а после скобок ( ) ставится знак ;.
Функция - имеет { "тело" } в фигурных скобках. Тело - это код на Си определяющий то, что делает функция. Знак «;» после функции не ставится.
Программа на Си начинает работу с функции main(), по необходимости из main() вызываются другие функции программы, по завершении работы функции программа возвращается в main(), в то место, откуда функция была вызвана.
main(){
... какой то код программы ...
вызов функции_1; /* программа перейдет в функцию_1 строка программы */
// будет выполнятся после
// возврата из функции_1
... какой то код программы ...
}
Функции могут вызываться не только из main(), но и из других функций.
Ключевые слова
Borland С++ включает в себя все ключевые слова, определенные в языке С, и добавляет к ним ряд новых ключевых слов, показанных в таблице. Нельзя использовать ключевые слова в качестве имен переменных или функций. Ключевое слово __rtti является специфическим для Borland С++ и не определено в проекте стандарта ANSI С++.
asm |
mutable |
this |
Таблица: Ключевые слова Borland С++ |
Два новых типа данных
Просматривая список ключевых слов таблицы, можно заметить добавление двух новых встроенных типов: bool и wchar_t. Тип данных bool предназначен для булевых величин. Они могут принимать только два значения — true и false. Значения true и false также являются ключевыми словами и служат частью языка С++. При употреблении булевых типов в небулевых выражениях они автоматически преобразуются к типу целых чисел. Хотя С++ определяет тип данных bool, он продолжает полностью поддерживать фундаментальную концепцию о том, что ненулевые целые числа соответствуют значению истина, а нулевое значение соответствует значению ложь.
Тип wchar_t поддерживает широкие символы, обычно являющиеся 16-битовыми значениями. Они обычно используются для представления набора букв в языках, для которых недостаточно 255 символов. Тип wchar_t поддерживается в С путем определения типа с использованием typdef. В С++ этот тип стал ключевым словом.
Алфавит языка СИ
1. Прописные и строчные буквы латинского алфавита;
2. Цифры от 0 до 9;
3. Спецзнаки (-, /, ., [], (), +, -) и др.;
4. В комментариях, строках и символьных константах могут использоваться русские буквы.
Комментарий формируется как последовательность знаков ограниченных слева символами /*, а справа */. Комментарий может отделяться слева символом // (в этом случае комментарий может быть записан только в одну строку).
Пример:
/* Курсивом я пишу комментарий к программе в Си он может быть написан в несколько строк */
// или в одну строку, после двух черточек. Курсив взят условно, для лучшей усвояемости.
// Курсив взят условно, для лучшей усвояемости.
Идентификатор – это последовательность букв, цифр и символов подчеркивания, которые начинаются с буквы или символа подчеркивания.
Прописные и строчные буквы различаются идентификаторами, обозначающими служебные слова, константы, строковые константы, знаки операций, знаки пунктуации.
Служебные слова – это зарезервированные в языке идентификаторы, которые нельзя выбирать в качестве имен переменных и констант.
Примеры служебных слов:
- double
- goto
- void
Идентификаторы
Идентификатор является последовательностью символов использованных, чтобы определить следующие объекты:
· объекты или имена переменных
· классы структуры и объединения
· члены классов, структур, объединений и перечислений
· функции или функции классов
· имена typedef
· метки
· имена макросов
· параметры макросов
Имена идентификаторов могут состоять из символов:
_ a b c d e f g h i j k l m
n o p q r s t u v w x y z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
И чисел:
0 1 2 3 4 5 6 7 8 9
Специфика Microsoft. Значимыми являются только первые 274 символа.
Первый символ должен быть обязательно либо символом в любом регистре либо знаком подчеркивания _. В C++ регистр символов различается. Вот пример с двумя различными переменными.
int Name;
int name;
Идентификаторы не должны совпадать с ключевыми словами. Например, нельзя создать идентифкатор int, так как int это ключевое слово.
Старайтесь не использовать двойное подчеркивание __, так как это может вызвать конфликты в текущих или будущих версиях.
Комментарии
Комментарии - это текстб который игнорируется при интерпритации, что бывает полезно программистам для пояснения тех или иных участков кода. Компилятор обрабатывает комментарии как пустое пространство. Комментарии можно использовать и для временного отключения части кода при отладке.
В C++ есть два типа коментариев.
· Стандартное комментирование блока /* ... */ как в C
· Комментирование линии с использованием //
Пример комментария в стиле C:
#include"stdafx.h"
#define asb 100
int main(int argc,char* argv[])
{
/*
printf("Hello C++\n");
return -1;
*/
printf("Hello World!\n");
return 0;
}
То же самое используя новую возможность C++:
#include"stdafx.h"
#define asb 100
int main(int argc,char* argv[])
{
//printf("Hello C++\n");
//return -1;
printf("Hello World!\n");
return 0;
}
Комментарии C можно использовать и в середине строки, а вот комментарии C++ отрезают сроку до конца от места своего появления. Поэтому надо выбирать когда удобно пользовать тот или иной способ. Вот пример демонстрирующий разный подход.
#include"stdafx.h"
#define asb 100
int main(int argc/*количенство */,char* argv[])
{
//printf("Hello C++\n");
//return -1;
printf/*функция печати*/("Hello World!\n");
return 0; // возврат программы
}
Кстати у коментария // есть еще одно интересное свойство. Данный код скомпилируется с ошибкой:
int main(int argc, // \
char* argv[])
{
printf("Hello World!\n");
return 0;
}
А этот нет, но с предупреждением:
int main(int argc, // \
это коментарий
char* argv[])
{
printf("Hello World!\n");
return 0;
}