Задание 5. Задачи обработки двумерных массивов

Составить блок–схему и программу вычисления требуемых значений.

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

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: