Автор работы: Пользователь скрыл имя, 15 Февраля 2012 в 18:13, курсовая работа
Мова С++ утворилася з мови С, яка була створена на основі двох попередніх мов − ВСРL і В. Мова ВСРL була створена в 1967 році Мартіном Ричардом як мова для написання компіляторів і програмного забезпечення операційних систем. Кен Томпсон передбачив багато можливостей у своїй мові В − дублікаті ВСРL і використав В для створення ранніх версій операційної системи UNIX у Ве11 Laboratories в 1970 році на комп’ютері DЕС РDР-7. І ВСР, і в минулому «нетиповими» мовами − кожен елемент даних займав одне слово у пам’яті, тому обробка елемента даних, наприклад, як цілого або дійсного числа було задачею програміста.
Операнд 1 Оператор_порівняння Операнд2
До них відносяться наступні оператори:
Таблиця 1. − Оператори порівняння
Оператор | Назва |
< | Менше |
<= | Менше чи дорівнює |
> | Більше |
>= | Більше чи дорівнює |
== | Дорівнює |
!= | Не дорівнює |
В
результаті роботи операторів порівняння
повертається логічне значення true (істина),
якщо умова, що перевіряється записана
вірно, чи false (неправда) в протилежному
разі.
1.7. Оператори інкрименту, дикрименту
В С++ є ефективний засіб збільшення і зменшення значення операнду на одиницю – унітарні оператори інкрименту (++) і дикрименту (--).
Унітарні оператори інкрименту/дикрименту перетворюються компілятором в машинний код:
інкримент: INC N
дикримент: DEC N
де N – може бути або регістром процесора, або вміст комірки пам'яті.
У відношенні до оператора даний вид операторів може бути префіксним чи постфіксним.
Префіксний оператор застосовується до операнду перед використанням отриманого результату.
Постфіксний оператор застосовується до операнду після використання самого операнду.
Визначення префікса і постфікса має сенс тільки у виразах з присвоюванням:
х=у++; // постфікс
index=-- current; // префікс
count++; // унарна операція
Тут змінна у спочатку присвоюється змінній х, а потім збільшується на 1.
Змінна
current спочатку зменшується на 1, потім результат
присвоюється змінній index.
1.8. Функції mallok, callok, free
Виділення динамічної пам’яті для об’єкта здійснюється за допомогою наступних виразів:
Звільнення виділених ресурсів пам’яті здійснюється виразами:
Функція mallok підключається до одного із файлів заголовку stdlib.h чи alloc.h і має синтаксис:
void *mallok (size_t size);
Функція callok, крім виділення пам’яті під масив ще проводить ініціалізацію елементів масиву нульовим значенням. Функція має наступний синтаксис:
void *callok(size_t num, size_t size);
Функція звільнення пам’яті free в якості єдиного аргументу встановлює покажчик на блок об’єктів, що необхідно видалити (*block) і має синтаксис:
void free(void *block);
Оператори new и delete мають дві форми:
Синтаксис при роботі з єдиним масивом наступний:
тип_об’єкта *ім’я – new тип_об’єкта [число];
delete [] ім’я;
Число
в операторі new [] характеризує кількість
об’єктів тип_об’єкта для яких проводиться
виділення області пам’яті.
1.9. Оператор for
Оператор for забезпечує циклічне повторення деякого оператора (зокрема, складеного) в задану кількість разів. Повторюваний оператор називається тілом циклу. Повторення циклу звичайно визначається деякою керуючою змінною (лічильником), що змінюється при кожному виконанні тіла циклу. Повторення завершується, коли керуюча змінна досягає заданого значення.
Синтаксис структури for:
for (вираження 1; вираження2; вираження3) оператор;
де: вираження1 задає початкове значення змінним, керуючим циклом, вираження2 – є умовою продовження циклу, а вираження3 – змінює керуючу змінну.
Структура for працює в такий спосіб: спочатку виконується вираження1 (воно може складатися й з ряду виражень, розділених комою, тобто може використатися операція спадкування). Це вираження задає початкові значення змінної (або змінних) циклу, потім перевіряється вираження 2 − умова продовження циклу. Якщо умова істинна – (повертає true − ненульове значення), то виконується тіло циклу − оператор, записаний у структурі for. Після завершення тіла циклу виконується вираження3, що визначає звичайно зміна змінної циклу. Потім знову перевіряється умова, записане як вираження2, і при істинності цієї умови виконання циклу триває. Як тільки в якому-небудь циклі вираження2 поверне false (нульове значення), цикл переривається й керування передається операторові, розташованому слідом за структурою for.
Нижче наведені приклади використання циклу for. Наступні оператори обчислюють максимальне значення й суму елементів, розташованих у масиві цілих чисел розмірністю 10:
int Max, Sum;
Max = Sum = Data[0];
for(int i = l; i< 10; i++)
{
if (Data[i] > Max) Max = Data[i]
Sum+= Data [i]
{
Перше вираження в структурі for вводить цілу змінну «i», що є лічильником циклів, та ініціалізує її. Друге вираження перевіряє умова завершення циклу. У цьому випадку цикл повинен завершитися, коли змінна «i», використовувана в тілі циклу як індекс-масиву, прийме значення, більше 9. Третє вираження структури for збільшує після кожного виконання циклу значення «i» на 1 за допомогою операції інкременту. У цьому випадку змінна «i» оголошена в заголовку структури for. Значить її область дії тільки ця структура. Після завершення циклів змінна i віддаляється з пам’яті.
При використанні
компілятора ВСС32.ЕХЕ, що запускає з
командного рядка, подібне знищення
локальної змінної, оголошеної в
циклі, можна відзначити опцією Vd.
1.10. Оператор while
Оператор while використовується для організації циклічного виконання тіла циклу, поки виконується деяка умова.
Синтаксис структури while:
while (умова) оператор;
Структура працює в такий спосіб: спочатку обчислюється умова, що повинно повертати результат булевого типу. Якщо вираження повертає true (ненульове значення), то виконується оператор тіла циклу, після чого знову обчислюється вираження, визначальна умова. Таке циклічне повторення виконання оператора й перевірки умови триває доти, поки умова поверне false (нуль). Після цього цикл завершується й керування передається операторові, що випливає за структурою while.
Оскільки
перевірка вираження
Часто оператор while використовується для організації пошуку серед безлічі об’єктів такого, котрий має якусь певну властивість. Причому не виключається, що безліч об’єктів може бути порожнім, тобто не утримуючим жодного об’єкта. До того ж повинен бути критерій, що дозволяє перевірити, чи є поточний об’єкт останнім. Тоді тіло циклу включає оператори переходу до нового об’єкта і якоїсь його обробки, а умова while включає перевірку, чи є об’єкт не останнім і чи не володіє він властивістю, що шукають. Якщо одне із цих умов порушується (об’єкт останній або має шукану властивість), виконання циклу переривається.
1.11. Оператор do…while
Структура do...while використовується для організації циклічного виконання чи оператора доти, поки не виявиться порушеним деяка умова.
Синтаксис керуючої структури do...while:
do оператор while (умова);
Структура працює в такий спосіб: виконується оператор тіла циклу. Потім обчислюється умова - вираження, що повинна повертати результат булева типу. Якщо вираження повертає true (не нульове значення), то повторюється виконання тіла циклу й після цього знову обчислюється вираження. Таке циклічне повторення циклу триває доти, поки перевіряє вираження, що не поверне false (нуль). Після цього цикл завершується й керування передається операторові, що випливає за структурою do...while.
Оскільки перевірка вираження здійснюється після виконання тіла циклу, то цикл буде свідомо виконаний хоча б один раз, навіть, якщо вираження відразу невірне. З іншого боку, програміст повинен бути впевнений, що вираження рано або пізно поверне false. Якщо цього не відбудеться, то програма «зациклиться», тобто цикл буде виконуватися безкінчено. Іноді такі нескінченні цикли використовуються. Але в цьому випадку всередині тіла циклу повинне бути передбачене його переривання в якийсь момент, наприклад, оператором break або іншими способами.
Звичайно оператор do доцільно використати для організації пошуку серед безлічі об’єктів такого, котрий має якусь певну властивість. Причому заздалегідь повинно бути відомо, що безліч об’єктів не порожня, тобто хоча б один об’єкт у ньому є. До того ж повинен бути критерій, що дозволяє перевірити, чи не є поточний об’єкт останнім. Тоді тіло циклу включають оператори переходу до нового об’єкта і якоїсь його обробки, а умова while включає перевірку, чи є об’єкт не останнім і відсутні чи в нього шукані властивості. Якщо об’єкт останній або шукані властивості знайдені, виконання циклу переривається.
Якщо ж об’єкт
не останній і шукані властивості в нього
не знайдені, здійснюється перехід до
наступного об’єкта. Якщо безліч об’єктів,
що перевіряють, може бути порожнім, варто
використати інший оператор циклу while.
Якщо число повторень циклів заздалегідь
відомо, краще застосовувати оператор
for.
2. Спеціальний розділ
2.1.
Обчислення елементарних
Рішення багатьох математичних задач вимагає обчислення значень елементарних функцій, для тих або інших значень аргументу. Для обчислення значення елементарних функцій за допомогою ЕОМ існують стандартні програми, що реалізують алгоритми для обчислення з потрібною точністю значень цих функцій.
Степені ряди є важливим апаратом для табуляції елементарних функцій, оскільки їх застосування дозволяє звести задачу обчислень значень функції із заданою точністю до задачі обчислення багаточлена.
Елементарні функції розкладаємо в ступеневий ряд за допомогою загальної формули Тейлора:
f(x) = f(a) + (2.1)
Звичайно в ній вважають а = 0, завдяки чому виходить звичайний степеневий ряд по ступенях х.Обриваючи ряд в потрібному місці, одержимо багаточлен, що наближає дану функцію.
Найбільш споживаними є ступеневі ряди для функцій , які сходяться при будь-якому значенні х:
,
(2.2)
При обчисленні елементарних функцій за допомогою ступеневих рядів зручно користуватися рекурентними співвідношеннями, які дозволяють обчислювати черговий член ряду не безпосередньо, а через уже обчислені попередні члени. Рекурентним співвідношенням називають рівність, що зв'язує між собою два або декілька сусідніх членів послідовності або ряду. За допомогою такої рівності визначимо наступний член ряду через попередні.
Информация о работе Загальні відомості про мову програмування С++