Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzamen_KhIO_I_semestr_-_shpori.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.07 Mб
Скачать

4. Інтеграли з заданою точністю.

//---------------------------------------------------------------------------

#include <vcl.h>

#include <math.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int i, N;

double a,b,h,eps;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

double f(double x)

{

return 1.0/(1+x+x*x);

}

//---------------------------------------------------------------------------

double sum(int m, double x)

{

int i;

double s=0;

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

{

s=s+f(x);

x=x+h;

}

return s;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

a=StrToFloat(Edit1->Text);

b=StrToFloat(Edit2->Text);

N=StrToInt(Edit3->Text);

eps=StrToFloat(Edit4->Text);

h=(b-a)/N;

double S,So;

switch (ComboBox1->ItemIndex) {

case 0: {

S=0;

do

{

So=S;

S=h*sum(N,a+h/2);

N++;

}

while(fabs(S-So)<eps);

Edit5->Text=FloatToStr(S);

return;

}

case 1: {

S=0;

do

{

So=S;

S=h*0.5*(f(a)+f(b)+2*sum(N-1,a+h));

N++;

}

while(fabs(S-So)<eps);

Edit5->Text=FloatToStr(S);

return;

}

case 2: {

S=0;

do

{

So=S;

S=h*(f(a)+f(b)+2*sum(N-1,a+h)+4*sum(N,a+h/2))/6;

N++;

}

while(fabs(S-So)<eps);

Edit5->Text=FloatToStr(S);

return;

}

default:

ShowMessage("Спочатку оберіть метод обчислення");

}

}

//---------------------------------------------------------------------------

Білет 7

  1. Функції

Подібно процедурам, опис функції складається із заголовка і тіла. Однак опис заголовка має 2 відмінності: перш за все, для функцій використовується ключове слово function. Крім того, оскільки функції завжди повертають результат, завершується рядок заголовка типом значення, що повертається. Таким чином, для оголошення функції ми отримуємо наступний синтаксис:

function <Ім'я> [(параметри)]: <тип результату>;

Повертає значення може бути будь-якого типу, крім файлового. Що стосується подальшого опису функції, то воно повністю аналогічно такому для процедур. Єдиним доповненням є те, що в тілі функції обов'язково має бути присутня хоча б одна операція присвоювання, в лівій частині якої повинно бути або ім'я функції, або ключове слово result. Саме цей вислів і визначає повертане функцією значення.

Розглянемо приклад функції, яка повертатиме куб числа, переданого їй як аргумент:

function cube (value: integer): integer;

result: = value * value * value;

}

Тут визначена функція, що має параметр value типу цілого числа, яке вона зводитьу третю ступінь шляхом триразового множення, і результат присвоюється спеціальної змінної result. Таким чином, щоб у будь-якому місці програми обчислити значення числа в 3-го ступеня, достатньо написати такий вираз:

x = cube (3);

В результаті виконання цього виразу змінної x буде присвоєно значення 27. Даний приклад ілюструє використання функцій в класичному випадку - для явного обчислення значення змінної. Однак функції можуть використовуватися у виразах і безпосередньо. Наприклад, можна поставити виклик функції cube в якомусь місці арифметичного виразу подібно звичайної змінної:

x: = a + cube (b) / 2;

Подібно процедурам, функції так само можуть бути вбудованими. Крім того, функції можуть включати в себе не тільки локальні функції, але і процедури. Втім, вірно і зворотне - в процедурах можуть використовуватися локальні функції. Наприклад, у тій же процедурі TriplePrint можна було б використовувати не процедуру, а функцію PrepareStr, яка б приймала рядок і повертала її ж в лапках:

procedure TriplePrint (str: string);

function PrepareStr (s: string): string;

begin

result: = '"' + s + '"';

end;

var

i: integer;

begin

for i: = 1 to 3 do begin

writeln (PrepareStr (str)); / / функція використана як змінна

end;

end;

Як уже зазначалося, крім спеціальної змінної result, у функціях можна використовувати іншу автоматично оголошується змінна, ім'я якої відповідає імені функції. Так, для функції cube ім'я змінної також буде cube:

function cube (value: integer): integer;

cube: = value * value * value;

}

В даному випадку обидва варіанти будуть вести себе повністю аналогічно. Розбіжності виявляються лише в тому випадку, якщо використовувати таку змінну у виразах в тілі функції. У подібних випадках слід використовувати саме змінну result, а не ім'я функції, оскільки іспольз0ованіі імені функції у виразі всередині самої функції призведе до її рекурсивному викликом.

2.Скаляні типи даних у С++

УС/C++ змінні повинні бути описані, а їхній тип специфікований до того, як ці змінні будуть використані. При описі змінних застосовується префіксний запис, при якому спочатку вказується тип, а потім — ім'я змінної. Якщо змінних одного типу є декілька, то вони можуть бути записані в одному рядочку через кому. Наприклад:

float weight; int exam_score, max, min, i; char ch, c, symbol;

З типом даних зв'язуються і набір визначених значень, і набір операцій, які можна виконувати над змінними даного типу. Змінні можна ініціалізувати в місці їхніх описів, наприклад:

int height = 71; float income = 26034.12;

Найпростішими скалярними типами, визначеними в С, є:

сhar — представляється як однобайтове ціле число; int — двобайтове ціле; long — чотирибайтове ціле; float — чотирибайтове раціональне; double — восьмибайтове раціональне;

Основні скалярні (прості) типи даних можна розділити на цілі та раціональні. Кожен тип даних характеризується діапазоном значень, обсягом пам’яті, який займає змінна цього типу та додатковими властивостями, таким як точність для чисел з плаваючою комою та можливість зберігати інформацію про знак числа для цілих чисел (додатні і від’ємні чи тільки додатні). цілі: unsigned char | 8 біт | 0..255 char | 8 біт | 128..127 enum | 16 біт | -32,768..32,767 unsigned int | 16 біт | 0..65,535 short int | 16 біт | -32,768..32,767 int | 16 біт | -32,768..32,767 unsigned long | 32 біт | 0..4,294,967,295 long | 32 біт | -2,147,483,648..2,147,483,647 дійсні: float | 32 біт | double | 64 біт | long double | 80 біт |

Порівняння з Delphi

Порівняльна таблиця типів даних:

Цілочисельні

Delphi C++ кількість байт

Byte unsigned char 1

ShortInt char 1

Word unsigned short int 2

SmallInt short int 2

Integer int 4

Cardinal unsigned int 4

Int64 (зі знаком) 8

(відсутній тип) unsigned long 8

Дійсні

Single float 4

Double double 8

Extended long double 10

Логічний тип

Boolean bool 1

Відсутність типу

Відсутнє поняття void

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]