Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. Элементы синтаксиса.
- Расмотрим следующий код:
- #include <stdio.h>
- #include <math.h>
- double root(double x) {
- return sqrt(x);
- }
- int main(int argc, char *argv[]) {
- printf("Hello, World\n");
- printf("%f\n",ro\
- ot(2));
- }
- По пунктам:
- 1. Терминалью строки является точка с запятой.
- 2. Строка кода переносится посредством вставки бэкслэша в конец строки.
- 3. Объявление функции начинается с типа возвращаемого значения. Далее следует
- её имя, в скобках идёт перечисление аргументов вместе с их типами. Тело функции
- заключается в фигурные скобки. Возвращение значения происходит по слову return.
- 4. Передача аргументов - в скобках через запятую перечисляются аргументы.
- 5. Блоки кода выделяются с помощью фигурных скобок {, }.
- 6. Для подключения внешних файлов используется директива include.
- 7.
- 2. Данные
- 1. Типизация нестрогая.
- 2. Базовые типы:
- void func() { }
- char c = 'a';
- int x = 4;
- float x = 3.5;
- double x = 3.55;
- int y[3] = { 1, 2, 3};
- Из элементов базовых типов можно составлять массивы. Делается с помощью
- добавления квадратных скобок после имени переменной. В квадратных скобках
- указывается размер массива. Чтобы инициализировать массив значениями,
- записываем в фигурных скобках начальные значения через запятую.
- char str[4] = "abc";
- Набор элементов char, оканчивающийся спец. символом '\0', называется строкой.
- Текст, заключённый в двойные кавычки, трактуется как строковая константа.
- int * a = &x;
- Ещё один тип данных - указатели. Объявление состоит из следующих частей:
- а) тип, на который указывает
- б) звёздочки
- в) имени указателя
- Указателю можно присвоить начальное значение - адрес к-л переменной. Он
- берётся с помощью амперсанда &.
- 3. Управление памятью.
- int a = 3;
- double b = 4;
- Переменные, непосредственно определённые в программе, находятся в стеке.
- int * a = malloc(sizeof(int));
- free(a);
- При помощи функций malloc() и free() можно выделять и освобождать динамическую
- память в куче.
- static int c = 4;
- Переменные, определённые с помощью ключевого слова static сохраняют своё
- значение между вызовами функций.
- 4. Пользовательские типы.
- typedef int points;
- points highscore;
- Пользователь может дать синонимы базовым типам с помощью ключевого слова typedef,
- за которым через пробел следуют имя базового типа и его синоним.
- 3. Базовые конструкции программирования.
- 1. Условия.
- бинарные:
- Выражение истинно, если оно отлично от нуля и ложно в противном случае.
- Решим следующую задачу: На вход подается целое число. Если оно четное,
- разделить на два, если нечетное, удвоить.
- int decide(int x) {
- if ((x % 2) == 0)
- return x / 2;
- else
- return x*2;
- }
- Заметим, что перед else точка с запятой ставится.
- множественные:
- Для проверки подобных условий используется операторы switch и case.
- Для иллюстрации напишем программу, которая по введенному целому числу от 1го
- до 4х пишет их эквивалент в английском языке.
- void many(int x) {
- switch(x) {
- case 1: printf("One\n");
- break;
- case 2: printf("Two\n");
- break;
- case 3: printf("Three\n");
- break;
- case 4: printf("Four\n");
- break;
- default:
- printf("Something wrong dude!\n");
- }
- }
- После switch в скобках указывается переменная, значение которой мы
- будем сравнивать с вариантами. Далее в блок заключаются операторы case.
- После case через пробел указывается значение-вариант. Затем идёт двоеточие,
- за которым указывается последовательность действий, соответствующая этому
- варианту. Если ни один из вариантов не подошёл, выполняются действия,
- описанные после ключевого слова default.
- Замечание: сравнение переменной с вариантами происходит последовательно.
- Если нужный вариант найден, дальнейшие сравнения не производятся,
- последующие операторы case и default игнорируются. Соответственно, действия
- из вариантов, описываемых этими операторами, тоже будут выполняться. Чтобы
- избежать этого, используем оператор break выхода из блока switch-case.
- 2. Итерации
- while-циклы
- Требуется написать функцию, слушающую ввод с клавиатуры до тех пор, пока в
- введенной строке не окажется символ q
- void hear() {
- char s;
- while (1) {
- s = getchar();
- if (s == 'q')
- break;
- }
- }
- Для чтения из stdin использовалась функция getchar. Она посимвольно считывает
- данные из буфера стандартного потока ввода.
- for-циклы
- Требуется вывести список чисел от 1 до 10, умноженных на 2
- int b;
- for (i = 1; i < 11; i++) {
- b = 2 * i;
- printf("%d ",b);
- }
- После ключевого слова for в скобках, через точку с запятой записываются три
- части: первая выполняется перед началом выполнения цикла, вторая содержит
- условие продолжение цикла, третья - оператор, выполняемый после каждой итерации.
- Части могут быть и пустыми, но точки с запятой в качестве разделителей
- обязательны. Например, можно определить цикл, выполняющийся бесконечно:
- for (;;) {
- printf("Infinite loop\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement