Составить блок–схему и программу вычисления требуемых значений.
| № | Необходимо вычислить | Исходные данные | Выводимые значения |
| Для массива вещественных чисел К (5,6) найти максимальный по модулю элемент max и номера его индексов m и n. | Массив К | Max, m, n | |
| Для массива вещественных чисел М (4,7) найти произведение положительных элементов Р и сумму отрицательных элементов S. | Массив М | Р, S | |
| В массиве вещественных чисел N (6,6) найти наибольший элемент max, среди тех, что расположены ниже главной диагонали. | Массив N | max | |
| Для массива вещественных чисел L (4,7) найти количество положительных (к 1), отрицательных (к 2) и нулевых (к 3) элементов. | Массив L | K1,k2,k3 | |
| Для массива целых чисел Z (5,6) найти количество отрицательных элементов n, среди расположенных выше главной диагонали. | Массив Z | n | |
| Для массива целых чисел X (5,5) найти сумму S элементов, находящихся на его диагоналях. | Массив X | S | |
| Для массива целых чисел Т (5,6) найти минимальный элемент min среди положительных и номера его индексов k, n. | Массив Т | Min, k, n | |
| Для массива вещественных чисел К (5,6) найти отношение m минимального элемента min к максимальному max. | Массив К | m | |
| Для массива целых чисел W (5,3) найти количество элементов к не равных n. | Массив W, n | K | |
| Для массива целых чисел A (5,4) найти сумму отрицательных элементов S 1 и сумму положительных S 2 элементов. | Массив А | S1, S2 |
4. Программирование на Си++
Язык Си был создан в 1972 году во время работы над операционной системой UNIX. Си – язык, облегчающий труд программиста. Программы на Си отличаются компактностью и быстротой выполнения.
Си используют для создания ОС, средств программирования, языков программирования, программного обеспечения, программ физического, технического и экономического назначения, компьютерных игр, мультфильмов и т.п. Си – язык структурного программирования. Он позволяет создавать программы, имеющие простую структуру, хорошо читаемые и легко модифицируемые.
4. 1. Базовые средства языка
Текст на любом естественном языке состоит из следующих элементов: символы, слова, словосочетания, предложения.
В алгоритмическом языке а лфавит языка, или его символы – это основные знаки, с помощью которых пишутся все тексты на языке. Лексема, или элементарная конструкция – минимальная единица языка, имеющая самостоятельный смысл. Выражение задает правило вычисления некоторого значения. Оператор задает законченное описание некоторого действия. Для описания сложного действия требуется последовательность операторов.
Операторы могут быть исполняемые и неисполняемые. Исполняемые операторы задают действия над данными. Неисполняемые операторы служат для описания данных.
Объединенная единым алгоритмом совокупность описаний и операторов образует программу. Для выполнения программы ее необходимо перевести на язык понятный процессору – в машинные коды. Этот процесс состоит из нескольких этапов.
Программа передается процессору, который выполняет директивы [1], содержащиеся в тексте. Получившийся полный текст программы поступает на вход компилятора, который выделяет лексемы, а затем на основе грамматики языка распознает выражения и операторы. При этом компилятор выявляет синтаксические ошибки и в случае их отсутствия строит объектный модуль. Компоновщик, или редактор связей, формирует исполняемый модуль, в том числе содержащий функции библиотек. Если программа состоит из нескольких исходных файлов, они компилируются по отдельности и объединяются на этапе компоновки.
Алфавит языка
Алфавит Си включает:
· прописные, строчные латинские буквы и знак подчеркивания;
· арабские цифры от 0 до 9;
· специальные знаки:
“ { }, |, [ ] () + – / % *. \ ‘:? < = >! & # ~; ^
· символы пробела, табуляции и перехода на новую строку.
Ключевые слова языка
Ключевые слова это зарезервированные слова, которые имеют специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены.
Идентификаторы
Идентификатор – имя программного объекта. Имя состоит из латинских букв, цифр и символа подчеркивания. Прописные и строчные буквы различаются. Например, ABC, abc, Abc – разные имена. Первый символ в имени – буква или знак подчеркивания. Имя не должно совпадать с ключевыми словами языка.
Идентификатор создается на этапе объявления переменной, функции, константы и т.п. и используется в последующих операторах программы.
Комментарии
Комментарий – это текст, который компилятором игнорируется. Начинается он либо с символов // и заканчивается переходом на новую строку:
//Это комментарий
либо заключается в скобки: /* Это комментарий */
Типы данных Си
В любой программе выполняется обработка каких-либо данных. Данные различного типа хранятся и обрабатываются по разному.
Тип данных определяет внутреннее представление данных в памяти компьютера; множество значений, которые могут принимать величины этого типа; операции и функции, которые можно применять к величинам этого типа.
Данные в языке Си описываются в начале функции. Обязательное описание типа позволяет компилятору проводить проверку допустимости различных конструкций программы.
Типы языка Си можно разделить на основные и составные.
Основные типы данных:
char – символьный,
int – целый,
float – вещественный,
double – вещественный с двойной точностью,
bool – логический,
void – без типа (бестиповый).
Спецификаторы типов [2]:
short – короткий;
long – длинный;
signed – знаковый;
unsigned – беззнаковый.
Символьный тип (char)
Под величину символьного типа отводится количество байт, достаточное для размещения одного символа. Как правило, это 1байт (табл. 1).
Таблица 1. Данные символьного типа
| Тип | Диапазон | Размер |
| char | –128…127 | 1 байт |
| unsigned char | 0…255 | 1 байт |
| signed char | –128…127 | 1 байт |
Целый тип (int)
Размера типа int зависит от компьютера и компилятора (табл. 2). Для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного – 4 байта. Спецификатор short перед именем типа указывает компилятору, что под число следует отвести 2 байта не зависимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. По умолчанию все целые типы считаются знаковыми, т.е. спецификатор signed можно не указывать.
Таблица 2. Данные целочисленного типа
| Тип | Диапазон | Размер |
| int | -32767…32767 | 2 байта (4 байта) |
| unsigned int | 0…65535 | --- |
| signed int | -32767…32767 | --- |
| short int | -32767… 32767 | 2 байта |
| long int | -2147483647 2147483647 | 4 байта |
| unsigned short int | 0 … 65535 | 2 байта |
| Тип | Диапазон | Размер |
| signed short int | -32767… 32767 | 2 байта |
| long long int | –(263–1) …(263–1) | 8 байт |
| signed long int | -2147483647 2147483647 | 4 байта |
| unsigned long int | 0…...4294967295 | 4 байта |
| unsigned long long int | 0 … 264–1 | 8 байт |
Типы с плавающей точкой (float, double)
Внутреннее представление вещественного числа в памяти компьютера отличается от представления целого числа. Число с плавающей точкой представлено в экспоненциальной форме mE±p, где m – мантисса (целое или дробное число с десятичной точкой), p – порядок (целое число). Для того чтобы перейти от экспоненциальной формы к обычному представлению с фиксированной точкой, необходимо мантиссу умножить на десять в степени порядок. Например,
-6.42Е+2 = -6.42.102 = -642, 3.2E-6 = 3.2.10-6 =0.0000032
Таблица 3. Данные вещественного типа
| Тип | Диапазон | Размер |
| float | 3.4Е-38…3.4E+38 | 4 байта |
| double | 1.7Е-308…1.7E+308 | 8 байт |
| Long double | 3.4Е-4932…3.4E+4932 | 10 байт |
Логический тип
Переменная типа bool может принимать только два значения true (истина) или false (ложь). Любое значение не равное нулю интерпретируется как true, а при преобразовании к целому типу принимает значение равное 1. Значение false представлено в памяти как 0.
Тип void
Множество значений этого типа пусто. Он используется для определения функций, которые не возвращают значения, для указания пустого списка аргументов функции, как базовый тип для указателей и в операции приведения типов.
4.1.6. Переменные в языке С++
Переменная – поименованный участок памяти, в котором хранится значение определенного типа. У переменной есть имя (идентификатор) и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменить. Перед использованием любая переменная должна быть описана:
тип список_переменных;
Например,
int a, bc, f;
float g, u, h12;
В Си могут обрабатываться структурированные типы данных: массивы, строки, записи, файлы, множества.
По месту объявления переменные в языке Си можно разделить на три класса:
· локальные (объявляются внутри функции и доступны только в ней),
· глобальные (описываются до всех функций и доступны из любого места программы),
· формальные параметры функции (описываются в списке параметров функции).
4.1.7. Константы в языке С++
Константы это величины, которые не изменяют своего значения в процессе выполнения программы. Оператор описания константы имеет вид:
сonst тип имя=значение;
Константы могут быть целыми, вещественными, символьными или строковыми. Компилятор определяет тип константы по внешнему виду, но существует возможность и явного указания типа, например:
const double pi=3.14159
Константа может быть определена до главной функции. В этом случае применяется директива #define:
#define PI 3.141592653
int main()
{…
Операции и выражения
Выражение задает порядок выполнения действий над данными и состоит из операндов (констант, переменных, обращений к функциям), круглых скобок и знаков операций:
a+b*sin(cos(x)).
Операции делятся на
· унарные (-с)
· бинарные (а+b).
Основные операции языка С++ представлены в табл. 4.
Таблица 4. Основные операции языка С++
| Операция | Описание |
| Унарные операции | |
| ++ | увеличение значения на единицу |
| -- | уменьшение значения на единицу |
| ~ | поразрядное отрицание |
| ! | логическое отрицание |
| - | арифметическое отрицание (унарный минус) |
| + | унарный плюс |
| & | взятие адресаа |
| * | разадресация |
| (type) | преобразование типа |
| Бинарные операции | |
| + | сложение |
| - | вычитание |
| * | умножение |
| / | деление |
| % | остаток от деления |
| << | сдвиг влево |
| >> | сдвиг вправо |
| < | меньше |
| > | больше |
| <= | меньше или равно |
| >= | больше или равно |
| == | равно |
| != | не равно |
| & | поразрядная конъюнкция (И) |
| ^ | поразрядное исключающее ИЛИ |
| | | поразрядная дизъюнкция (ИЛИ) |
| && | логическое И |
| || | логическое ИЛИ |
| = | присваивание |
| *= | умножение с присваиванием |
| /= | деление с присваиванием |
| Операция | Описание |
| += | сложение с присваиванием |
| -= | вычитание с присваиванием |
| %= | остаток от деления с присваиванием |
| <<= | сдвиг влево с присваиванием |
| >>= | сдвиг вправо с присваиванием |
| &= | поразрядная конъюнкция с присваиванием |
| |= | поразрядная дизъюнкция с присваиванием |
| ^= | поразрядное исключающее ИЛИ с присваиванием |
| Другие операции | |
| ?: | условная операция |
| , | последовательное вычисление |
| sizeof | определение размера |
| (тип) | преобразование типа |






