Создание библиотек подпрограмм для обработки массивов

Автор: Пользователь скрыл имя, 25 Декабря 2012 в 22:05, курсовая работа

Краткое описание

В программе на языке C++ все переменные должны быть объявлены, т.е. для каждой переменной должен быть указан ее тип. Все типы языка C++ можно |Д разделить на две большие группы: основные типы и производные.
К основным относятся char, int, float и double, а также их варианты с модификаторами short (короткий), long (длинный), signed (со знаком, подразумевается по умолчанию и обычно не пишется) и unsigned (без знака).
Объявлять переменные можно в любом месте программы перед их использованием.

Оглавление

Курсовое задание 3
Основные теоретические сведения 4
Структурные схемы 16
Окна форм 20
Меню пользователя 22
Тексты программ 23
Результаты вычислений 31
Вывод 32
Список использованной литературы 33

Файлы: 1 файл

курс 6 вар.doc

— 710.00 Кб (Скачать)

if(ch&4)... Эта проверка основывается на двоичном представлении числа 4=00000100.

Заметьте, что выражение a^b^a всегда возвращает а. Эта закономерность часто используется в растровой графике. Выражение a^a всегда возвращает 0.

Операции поразрядного сдвига » и « сдвигают биты левого операнда на число разрядов, указанное правым операндом, соответственно вправо или влево. Недостающие значения битов дополняются нулями. Сдвиг целого числа на п разрядов вправо эквивалентен целочисленному делению его на 2". Сдвиг целого числа на п разрядов влево эквивалентен умножению его на 2".

Пример: двоичное представление числа  х=9: 00001001, тогда

х=9«3        01001000

х=9»3        00000001

х=9 » 5         00000000

При применении операции сдвига может происходить потеря старших или младших разрядов. Применение операций » и « по очереди к одной и той же переменной может изменить значение этой переменной из-за потери разрядов.

 

Приоритет операций

Ниже приведена таблица  операций, расположенных в порядке  убывания их приоритетов.

( )

++ -- ~  !

*  /  %

+   -

>>     <<

<    <=   > >=

==      !=

&

^

|

&&

||




 

 

 

 

 

 

 

 

 

 

 

 

 

 

Функции языка  С

Функция описывается следующим  образом:

тип  имя_функции (список параметров)

{

тело функции

}

Тип функции Может быть любым, кроме массива и функции. Могут быть функции, не возвращающие никакого значения. Тип таких функций объявляется как void.

Список параметров состоит из имен параметров и указаний на их тип. Например:

double Sum (double XI, double X2, int A)

В этом примере параметры передаются по значению. Другой способ передачи параметров — по ссылке. В этом случае в функцию передается не сама переменная, а ее адрес, полученный операцией адресации (&). Например:

void square(int &a)

Если функция не принимает никаких  параметров, то скобки либо остаются пустыми, либо в них записывается ключевое слово void. Например:

void F 1(void) или

voidFl()

Выход из функции может осуществляться следующими образами. Если функция  не должна возвращать не какого значения, то выход из нее происходит при выполнении всех ее операторов, или при выполнении оператора return.Если же функция возвращает значение, то выход из нее осуществляется оператором:

   return выражение;

где выражение должно формировать  выходное значение и совпадать по типу с типом функции.

       Прервать выполнение  функции также можно при помощи  функции Abort. Эта функция осуществляет выход из подпрограммы и передает управление в точку вызова функции.

 

Операторы языка  С

 

Условный  оператор if

Оператор if имеет две формы: краткую и полную.

Краткая форма имеет вид:

            if(условие) оператор;

Полная форма этого оператора  следующая:

            if(условие) оператор;

             else оператор;

Если значение условия истинно, то выполняется оператор, следующий за условием. Если же условие ложно, то выполняется оператор, стоящий после  слова  else. Если else-часть отсутствует, то выполняется следующий оператор программы.

   В качестве условия может  выступать любое выражение. Если  значение-нуль, оно считается ложным. Ненулевое выражение считается истинным.

Операторы цыклов

Вычислительный процесс называется циклическим, если он неоднократно повторяется  до тех пор, пока не будет выполнено  некоторое условие. Группа повторяющихся  операторов называют телом цикла. Операторы цикла могут быть следующих типов:

– оператор цикла  for;

– оператор цикла с предусловием  while;

– оператор цикла с постусловием   do-while.

 

Оператор  цикла с параметром for

Синтаксис оператора следующий:

for (выражение1; выражение2; выражение3) оператор;


где выражение1 задает начальное значение параметра цикла, выражение2 является условием продолжения цикла, а выражениеЗ изменяет параметр цикла.

 

Этот оператор используется, если заранее известно число повторений. Примерами использования может быть нахождение суммы заданного количества элементов массива, поиск минимального (максимального) элементов массивов, сортировки элементов массива по возрастанию (по убыванию) и др.

Работает оператор следующим  образом: сначала выполняется выражение т. е. задается начальное значение переменной, управляющей циклом. Затем проверяется выражение. Если условие истинно (имеет ненулевое значение), то выполняется тело цикла. После завершения тела цикла выполняется выражениеЗ, определяющее обычно изменение параметра цикла. Затем опять проверяется условие, записанное как выражение2, и при истинности этого условия выполнение цикла продолжается. Как только на очередном витке цикла выражение2 примет значение false (нулевое значение), цикл прерывается и управление передается следующему оператору программы.

Существенно то, что проверка условия  всегда выполняется в начале цикла. Это значит, что тело цикла может  ни разу не выполниться, если условие  выполнения сразу будет ложным.

 

 

                                                          Вложенные циклы

Циклы могут быть вложены один в  другой. При использовании вложенных  циклов необходимо составлять программу  таким образом, чтобы внутренний цикл полностью вкладывался в  тело внешнего цикла, т.е. циклы не должны пересекаться. В свою очередь внутренний цикл может содержать свои вложенные циклы. Имена параметров внешнего и внутреннего циклов должны быть разными. Допускаются следующие конструкции:

for (k=1; k<=10; k++)   

{  … 

   for (i=1; i<=10; i++)

     { …

        for (m=1; m<=10; m++)

        {    ...

         }

       }

  }

 

 

 

 

 

Операторы  цикла c предусловием  while  и постусловием  do-while

  while  (условие)

  { последовательность ператоров };


Последовательность операторов цикла выполняется нуль или более раз до тех пор пока условие истинно (имеет ненулевое значение), а выход из цикла осуществляется тогда, когда оно станет ложным (равно нулю).

Вначале вычисляется и проверяется  условие. Если оно изначально ложно, то последовательность операторов не выполняется и управление передается на следующий оператор программы. Если условие истинно (не нуль), то выполняется последовательность операторов. Повторение выполнения тела оператора  происходит до  тех  пор, пока условие остается истинным.

 

do { последовательность операторов } while  (условие);


Последовательность операторов выполняется один или несколько раз до тех пор, пока условие станет  ложным  (равным  нулю). Оператор цикла do-while используется в тех случаях, когда необходимо выполнить тело цикла хотя бы один раз, т.к. проверка условия осуществляется после выполнения операторов.

Вначале выполняется последовательность операторов, затем вычисляется и  проверяется условие. Если условие  ложно, то оператор завершается и  управление передается следующему оператору  в программе. Если условие истинно  (не равно нулю), то тело оператора выполняется снова и снова проверяется условие. Выполнение тела оператора  продолжается до тех пор, пока условие не станет ложным.

Если тело цикла состоит из одного оператора, то операторные скобки {} не обязательны. Операторы while и do-while могут также завершиться при выполнении  операторов  break,  goto, return внутри тела.

Оператор цикла вида for (выражение1; выражение2; выражение3)  оператор;

может быть заменен оператором while следующим образом:

           выражение1;

           while (выражение2)

           {  операторы;

               выражение3;     }

Так же как и при выполнении оператора for, в операторе while вначале происходит проверка условия. Поэтому оператор while удобно использовать в ситуациях, когда тело оператора не всегда нужно выполнять.

 


 

 

 

Понятие массива

Массив (Array) в  программировании – это упорядоченная совокупность однотипных элементов. Массивы широко используют для хранения и обработки однородной информации, например, таблиц, векторов, матриц, коэффициентов уравнений и др.

Каждый элемент  массива однозначно определяется именем и индексами. Имя массива (идентификатор) подбирают за теми же правилами, что  и для переменных. Индексы определяют местоположение элемента в массиве. Например, элементы вектора имеют один индекс – номер по порядку; элементы матриц и таблиц имеют по два индекса: первый определяет номер строки, второй - номер столбца. Количество индексов определяет размерность массива. Например, векторы в программах – это одномерные массивы, матрицы – двумерные. В этой лекции рассмотрим только одномерные массивы.

Объявление  одномерных массивов

Одномерный массив объявляется  в программе следующим образом:

тип_данных   имя_массива [размер_массива];


Имя_массива – это идентификатор массива. Тип_данных задает тип элементов объявляемого массива. Элементами массива не могут быть функции и элементы типа void. Размер_массива в квадратных скобках задает количество элементов массива. В отличие от языка Pascal в С не проверяется выход за пределы массива, поэтому, чтобы избежать ошибок в программе, следите за размерами описанных массивов. Значение размер_массива при объявлении массива может быть опущено в следующих случаях:

– при объявлении массив инициализируется,

– массив объявлен как формальный параметр функции,

– массив объявлен как ссылка на массив, явно определенный в другом файле.

Используя имя массива и индекс, можно адресоваться к элементам  массива:

имя_массива [ значение_индекса ]


Значения индексов должны лежать в  диапазоне от нуля до величины, на единицу меньшей, чем размер массива, указанный при его описании, поскольку в языке С нумерация индексов всегда начинается с нуля.

Например:   int A[10];

объявляет массив с именем А, содержащий 10 целых чисел. А[0] – значение первого элемента, А[1] – второго, А[9] – последнего.

Типу массив соответствует память, которая требуется для размещения всех его элементов. Элементы массива  с первого до последнего запоминаются в последовательных возрастающих адресах  памяти. Между элементами массива  в памяти разрывы отсутствуют. Элементы  массива  запоминаются друг за другом поэлементно. Так под размещение элементов одномерного массива   int В[5]   выделяется по 4 байта под каждый из 5 элементов массива – всего 20 байтов.

Элементы

В[0]

В[1]

В[2]

В[3]

В[4]

Байты

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20




Таким образом, чтобы получить доступ к i-тому элементу массива В, можно написать В[i]. При этом величина i умножается на размер типа int и представляет собой адрес i-го элемента массива В от его начала, после чего осуществляется выборка элемента массива В по сформированному адресу.

Идентификатор, объявляемый как  массив, представляет указатель, значение которого является адресом первого  элемента массива. Отметим, что адрес  массива не может быть изменен  во время выполнения программы, хотя значение отдельных элементов может изменяться.

 

Указатели

Указатель – переменная, которая указывает на другую переменную (содержит местоположение другой переменной в форме адреса). В этом смысле имя переменной «отсылает» к ёё значению непосредственно, а указатель – косвенно. Ссылка на значение указателя называется косвенной адресацией.

Указатели, подобно любым другим переменным, перед своим использованием должны быть объявлены. При объявлении переменной типа указатель, необходимо определить тип объекта данных, адрес которых будет содержать переменная, и имя указателя с предшествующей звездочкой (или группой звездочек). Формат объявления указателя:

тип_данных *имя_указателя 


Тип_данных задает тип объекта и может быть любого базового типа, типа структуры или совмещения (об этом будет сказано позже). Задавая вместо типа ключевое слово void, можно таким образом отсрочить спецификацию типа, на который ссылается указатель. Переменная, объявляемая как указатель на тип void, может быть использована для ссылки на объект любого типа. Однако для того, чтобы можно было выполнить арифметические и логические операции над указателями или над объектами, на которые они указывают, необходимо при выполнении каждой операции явно определить тип объектов. Такие определения типов может быть выполнено с помощью операции приведения типов.

Информация о работе Создание библиотек подпрограмм для обработки массивов