Составить блок–схему и программу вычисления требуемых значений.
№ | Необходимо вычислить | Исходные данные | Выводимые значения |
Для массива вещественных чисел К (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 | определение размера |
(тип) | преобразование типа |