Лабораторная работа №1
( для выполнения лабораторной работы необходимо проработать материал данной методички, а также разобрать приведенные примеры )
Основные правила оформления программ... 4
Что надо знать до создания первой программы.. 6
Выполнение 1-ой лабораторной работы.. 9
Что надо знать для выполнения работы.. 9
Правила программирования алгебраических выражений. 9
Правила работы с данными вещественных типов. 10
Арифметические операции. 11
Встроенные математические функции и константы.. 12
Операция присваивания. 14
Понятие стандартного программного контекста. 14
Стандартные программные контексты присваивания. 14
Запись простейших алгебраических выражений. 15
!!! Обратить внимание. 16
Операции инкремента и декремента. 17
Операции равенства. 18
Операции отношения (сравнения) 19
Синтаксис условного оператора if 20
Стили оформления отступов при написании условных операторов. 22
Тернарная условная операция. 23
Логические операции. 24
Логические выражения сложных высказываний. 26
Вычисление логических выражений, особенности их интерпретации. 27
Примеры записи логических выражений. 28
Формулирование высказываний для логических выражений. 30
Ошибки в условном выражении из-за неправильной записи условных операторов. 30
Ошибки использования оператора ||. 30
Ошибки использования оператора &&.. 31
Поразрядные логические операции. 32
Поразрядное логическое умножение. 33
Поразрядное логическое сложение. 33
Сложение по модулю 2 (исключающее или) 33
Логический сдвиг 33
Организация циклов. 34
Понятие цикла. 34
Операторы цикла в С++: 35
Цикл с предусловием.. 35
Цикл с постусловием.. 36
Цикл со счетчиком (параметрический цикл) for 36
Ручная трассировка логики решения задачи с циклом.. 38
Вложенные циклы.. 40
Корректная организация циклов. 40
Контексты смысловых интерпретаций переменных в цикле. 41
Переменная-счетчик. 41
Переменная-накопитель. 42
Переменная-минимум (максимум) 43
Переменная-признак. 44
Переменная – защелка. 46
Стандартные программные контексты циклов. 47
Первый, последний, максимальный, минимальный из возможных. 47
Поиск – полный перебор. 48
Предыдущий, текущий, следующий. 48
Результат цикла – место его остановки. 49
Вложенные циклы и принцип относительности. 49
Свойства всеобщности и существования. 50
Эквивалентные преобразования логических выражений. 51
Циклические алгоритмы.. 52
Цикл с параметром.. 52
Итерационные циклы.. 56
Примеры выполнения заданий 1-ой лабораторной работы.. 58
Программа для вычисления значения выражения (задание 1.1) 58
Проверка вводимого значения переменной (задание 1.1) 61
Программы с использованием условия (задание 2.2) 66
Программа, определяющая принадлежность точки некоторой области. 70
(задание 2.3) 70
Вычисление значения выражения с побитовыми логическими операциями. 73
(задание 2.5) 73
Вычисление на отрезке значений функции с условием и оформление результатов в виде таблицы (задание 3.1) 75
Цикл while, вывод в стиле С. 75
Цикл while, вывод в стиле С++. 76
Цикл do while, вывод в стиле С. 78
Цикл for, вывод в стиле С. 78
Вычисление значения многочлена (задание 3.3) 80
Вычисление значения многочлена в точке. 80
Вычисление значения многочлена по схеме Горнера на отрезке. 81
Вычисление суммы ряда (задание 4.1, 4.2) 82
Разложение функции в ряд Тейлора в точке. 82
Разложение функции в ряд Тейлора на отрезке. 83
Пример выполнения тестового задания (задание 5.1.) 84
Дополнительные материалы.. 85
Примеры организации ввода/вывода. 85
Вывод в стиле С. 85
Вывод в стиле С++. 91
Ввод в стиле С++. 96
Приостановка выполнения программы; очистка окна вывода. 98
Визуальное представление неграфических символов. 99
Определение констант. 99
Примеры использования операций. 100
Операция присваивания. 100
Арифметические операции. 102
Арифметические операции над переменными символьного типа. 103
Операции отношения и равенства. 104
Операции инкремента и декремента. 104
Тернарная условная операция. 107
Запись алгебраических выражений. 109
Примеры записи условных операторов. 111
Запись оператора присваивания внутри условия. 112
Оптимизация записи условий. 113
Примеры использования оператора switch. 114
Примеры вычисления логических выражений. 117
Более сложное использование поразрядных логических операций. 117
Примеры организации циклов с параметром.. 119
Цикл while в циклах с параметром.. 119
Вычисление суммы чисел натурального ряда от 1 до 10. 119
Определение наибольшей степени целого числа 100, которую можно вычислить, пользуясь типом long. 119
Цикл do-while в циклах с параметром.. 120
Вычисление суммы чисел натурального ряда от 1 до 10. 120
Калькулятор. 120
Цикл for в циклах с параметром.. 121
Генерирование случайных чисел. 121
Генерирование случайных целых чисел. 121
Генерирование случайных целых чисел в заданном диапазоне [k, m+k) 121
Генерирование случайных вещественных чисел в интервале (0.0, 1.0) 122
Генерирование случайных целых чисел, начиная с заданного числа. 122
Вычисление суммы слагаемых натурального ряда. 123
Вычисление суммы слагаемых знакочередующегося ряда. 123
Вывод на экран кодов символов. 124
Приостановка выполнения программы на n секунд. 124
Получение натуральных делителей числа N.. 124
Проверка, является ли число простым.. 124
Организация работы с последовательностью чисел. 125
Оптимизация программы.. 126
Дополнительные возможности организации ввода/вывода. 127
Ввод/вывод в стиле С. 127
Ввод/вывод в стиле С++. 133
Контроль правильности ввода. 135
Перекодировка кириллицы.. 138
Кодовые таблицы.. 140
Таблица 1. ASCII-Коды (символы с кодами 0-127) 141
Таблица 2. Кодовая таблица 866 – MS-DOS. 142
Таблица 3. Кодовая таблица 1251 – MS Windows. 143
Литература.. 144
График выполнения заданий 1-ой лаб. работы.. 144
Основные правила оформления программ
Имена
· Идентификатор – имя переменной (константы) – последовательность символов произвольной длины из латинских букв, цифр, символа подчеркивания, не начинающаяся с цифры. С++ различает прописные (верхний регистр) и строчные (нижний регистр) буквы. Ключевые слова языка пишутся строчными буквами. Для обеспечения переносимости определяйте идентификатор длиной не более 31 символа. Не следует начинать идентификатор с символа(ов) подчеркивания, так как компилятор использует такие имена для собственных целей.
· Имена переменных должны:
· быть осмысленными и понятными (на основе латинского алфавита);
· избегать аббревиатур, в крайнем случае, использовать только общепринятые аббревиатуры:
§ row – индекс строки;
§ col – индекс столбца;
§ cur – текущий;
§ max – максимум (обычно в качестве префикса или суффикса);
§ min – минимум (обычно в качестве префикса или суффикса);
· не состоять целиком из заглавных букв;
· могут записываться с использованием Венгерской нотации:
| для типа | описание типа | использовать префикс | пример идентификатора |
| char | символ – 1 байт | c, ch | chGrade |
| char[] | строка из 1-байтных символов | sz, str | szBuffer[] |
| short | знаковый, целый, 2 байта | s | sIndex |
| int | знаковый, целый, размер зависит от ОС | n, i | nLength |
| unsigned | беззнаковый, целый, размер зависит от ОС | u | uSize |
| long | знаковый, целый, 4 байта | l | lSum |
| unsigned long | беззнаковый целый, 4 байта | ul | ulFreeSpace |
| float | плавающая точка | flt | fltResult |
| double | dbl | dblResult | |
| long double | ldbl | ldblResult | |
| void* | указатель | p | pDoc |
| void** | указатель на указатель | pp | ppDoc |
· Имена констант должны быть:
· быть осмысленными и понятными;
· состоять целиком или из заглавных или из строчных букв латинского алфавита (без смешения стилей) и сепараторов ‘_’.
Описание переменных
· Переменная – это область памяти компьютера, в которой хранится некоторое значение, используемое в программе. Переменные в программе должны быть описаны (объявлены или определены) до того, как на них будет осуществлена ссылка. Место описания переменной может находиться в начале функции (блока), независимо от места ссылки на нее или же быть приближено к нему.
· Описание каждой переменной на отдельной строке позволяет вставить рядом с ним комментарий о назначении переменной. Помещайте пустую строку между описанием переменной и последующими операторами программы.
Операции
· помещайте пробелы с двух сторон от знака бинарной операции;
· не ставьте пробелы после операций определения размера объекта sizeof, логического отрицания!, побитовой инверсии ~, префиксных ++ и –, символа препроцессорной директивы #, адреса операнда &, после) в операторе приведения типа, операции разыменования *;
· не ставьте пробелы перед операциями запятая, постфиксными ++ и --.
Форматирование
Форматирование – один из лучших инструментов документирования программы. Для хорошего форматирования используем приемы:
· в начале программы помещаем комментарий с именем её исходного файла и объяснением ее назначения;
· основная часть документации программы – комментарии – не секретный код, не подтверждение очевидного, а информация, необходимая для сопровождения программы; располагаются в блоках, выровнены по вертикали; самый эффективный комментарий – пустое место (отступы, пустые строки, пробелы);
· Символы кириллицы используются только в комментариях. Для их отображения в программу необходимо включить строки:
#include <locale.h>
setlocale (LC_ALL, ".1251"); // номер кодовой таблицы Windows
или
#include <locale.h>
setlocale (LC_ALL, "rus");
· логические блоки программы разделяем пробелами, отступами (3 пробела на каждый уровень отступов), комментариями,
· строки текста не должны выходить за пределы ширины экрана; в каждой строке программы (не более 70 символов) пишем только один оператор;
· точке с запятой ‘;’ не должны предшествовать пробел и табуляция;
· операторы комментария /* и // должны отделяться от текста пробелом;
· inline комментарии (//) располагаются справа от комментируемого кода;
· конец длинного составного оператора или блока помечается комментарием;
· используем аккуратные столбцы в программе для описания переменных;
· строки, начинающиеся с символа #, – это директивы препроцессора;
директива # include включает в программу содержимое указанного в ней заголовочного файла (он содержит прототипы функций, описания констант); наличие заголовочного файла улучшает структурированность программы.






