Chiziqli tuzilishli algoritmlarini dasturlash


Download 75.52 Kb.
bet1/5
Sana10.12.2020
Hajmi75.52 Kb.
#163740
  1   2   3   4   5
Bog'liq
1 lab. ishi bajarish korsatna (amaliyot)


1 laboratotiya ishi

Mavzu: "Chiziqli tuzilishli algoritmlarini dasturlash."


Maqsad: ma'lumotlarning asosiy turlarini, har xil toifadagi o'zgaruvchilarni tavsiflash usullarini, qiymat berish operatorlarini va ma’lumotlarni kirish / chiqishlarni tashkil qilishni o'rganish.

Qisqacha nazariy ma'lumotlar:

Algoritm - bu qat'iy belgilangan qoidalar bo'yicha bajariladigan harakatlar ketma-ketligi bo’lib, bu muammoni hal qilish jarayonini noyob ravishda cheklaydi va aniq bosqichda uni hal qilishga olib keladi.

Algoritmlashtirish – bu amaliy dasturni kompyuter dasturi shaklida amalga oshirish imkoniyati bilan hal qilish uchun rasmiy usulni ishlab chiqishdir.

Blok – shema ko'rinishidagi algoritmning tasviri "Algoritmlar, dasturlar, ma'lumotlar va tizimlarning sxemalari" Yagona dasturiy hujjatlar tizimining GOST 19.701-90 ga muvofiq amalga oshiriladi.

Microsoft Visual Studio uchun dastur tuzilishi.

// struct_program.cpp: Konsol ilovasi uchun kirish joyini belgilaydi.

2#include "stdafx.h"

3// bu erda biz barcha kerakli protsessor direktivalarini


4 ulaymiz

5 int main() { // main deb nomlangan asosiy funktsiyaning boshlanishi

6 // bu yerda sizning dastur kodingiz joylashadi}

1-qator konsol ilovasi uchun kirish joyiga ishora qiladi, ya'ni ushbu dastur Windows nomini ko'rsatib, buyruq satri orqali ishga tushirilishi mumkinligini anglatadi, masalan, system_program.cpp. 1-qator bir qatorli sharh, chunki u // belgilar bilan boshlanadi. 2-qatorda "stdafx.h" sarlavha fayli mavjud. Ushbu fayl konteynerga o'xshaydi, chunki asosiy protsessor ko'rsatmalari ulangan.

2-qatorda "stdafx.h" sarlavha fayli mavjud. Ushbu fayl konteynerga o'xshaydi, chunki u asosiy protsessorni o'z ichiga olgan direktivalarni o'z ichiga oladi - preprocessor direktivasi, ya'ni preprosessorga xabar. # Belgidan boshlanadigan satrlar dasturni kompilyasiya qilishdan oldin, protsessor tomonidan ishlov beriladi.

Sarlavha fayllari:

Matematik math kutubxonasi umumiy matematik operatsiyalar va ma’lumotlar toifasini o'zgarishlarni bajarish uchun bir qator funktsiyalarni belgilaydi. Matematik funktsiyalar:



1) trigonometrik funktsiyalar:

cos - radianga aylantirilgan burchak kosinusini hisoblash;

sin- radianga aylantirilgan burchak sinusini hisoblash;

tan-radianga aylantirilgan burchakning tangensini hisoblash;;

acos-arkkosinni hisoblash, natija radianlarda bo'ladi;

asin-arksini hisoblash, natija radianlarda bo'ladi;;

atan-arktangent hisoblash, qaytish qiymati radian bo'ladi.

atan2- arktangens va uning kvadrantni x va y koordinatalar bo'yicha hisoblashda qaytarilgan natija radian shaklida bo'ladi ;

2) giperbolik funktsiyalar:



cosh-giperbolik kosinusni hisoblash;

sinh-giperbolik sinusni hisoblash;

tanh-giperbolik tangensni hisoblash;

3) eksponensial va logarifmik funktsiyalar::



exp- eksponentani hisoblash;

log- natural logarifm;

log10-li logarifm;

modf- Haqiqiy qiymatni kasr va butun qiymatarga bo'lish;

4) daraja funktsiyalari:



pow-sonni darajaga ko’tarish. funktsiyadan foydalanishga misol;

sqrt- kvadrat ildiz;

5) yaxlitlash, modul va boshqa funktsiyalar:



ceil- eng kichik butun songa yaxlitlash;

fabs- modul qiymatlarini hisoblash;

floor- eng katta butun songa yaxlitlash;

fmod-suratni maxrajga bo’lgandagi qoldiq .

Funksiyalardan foydalanishga oid misollar:
#include // cout operatori uchun

#include // pow operatori uchun

int main()

{

std::cout << "5.0 ^ 4 = " << pow (5.0, 4) << std::endl;

std::cout << "2.77 ^ 9 = " << pow (2.77, 9) << std::endl;

std::cout << "12.01 ^ 11.54 = " << pow (12.01, 11.54) << std::endl;

std::cout << "sqrt(" << param << ") = "

<< sqrt(param) // kvadrat ildizni hisoblaymiz

<< std::endl;

double param = 60.0; // 60 gradusli burchak

std::cout << " Kosinus " << param

<< " gradus = " << cos(param * PI / 180) // radianga o’girilgan burchak kosinusini
// hisoblaymiz

<< std::endl;

double param = 0.5;

std::cout << " Arcsinus " << param

<< " = " << (asin (param) * 180.0 / PI) // artsinusni hisoblash

<< " gradus " << std::endl;

double val = 5.5, result;

result = log (val); // Natural logarifmani hisoblash

std::cout << "ln(" << val << ") = "<< result << std::endl;

return 0;

}
C ++ kodli fayllar (.cpp kengaytmasi bilan) loyihalar va dasturlarning yagona fayllari emas. Sarlavha fayli deb nomlangan boshqa turdagi fayl mavjud (sarlavha fayli, shu jumladan header file yoki sarlavha fayli). Ular .h kengayt-masiga ega, lekin ba'zan ularni .hpp kengaytmasi bilan ham ko'rish mumkin yoki umuman yo'q. Sarlavha fayllarining maqsadi boshqa fayllardan foydalanish uchun oldindan e'lonlarni qulay saqlashdir. Sarlavha fayli tarkibdagi barcha faillar nus -hasi * .cpp fayliga nushalanadi va barcha tarkib foydalanish uchun mumkin bo'ladi.

Sarlavha fayllari:

- stdio.h - bu kirish / chiqish operatsiyalarini bajarish uchun sarlavha fayli;

- string.h - satrlar bilan ishlash uchun sarlavha fayli;

- kirish-chiqishni tashkil qilish uchun sinflar, funktsiyalar va parametrlarga ega iostream-sarlavha fayli. Qulaylik uchun kutubxona uchta standart oqim ob'ekt-larini belgilaydi:

cin - standart kirishga mos keladigan istream sinfi ob'ekti. Umuman olganda, foydalanuvchi terminalidan ma'lumotlarni o'qishga imkon beradi;


cout - standart chiqishga mos keladigan sinf ostream ob'ekti. Umuman olganda, ma'lumotlar foydalanuvchi terminaliga chiqarilishini ta'minlaydi;
serr - bu xatolar uchun standart chiqishga mos keladigan sinf ostream ob'ekti. Biz ushbu oqimga dastur xatoligi haqida xabarlarni yuboramiz.

Chop etish odatda qayta yuklanadigan chap siljish operatori (<<) yordamida amalga oshiriladi va kirish o'ng (>>) operatori yordamida amalga oshiriladi.

Ma'lumotlarning asosiy turlari 1-jadvalda keltirilgan.

1-jadval - C ++ ma'lumot turlari


Toifa

bayt

Qabul qilingan qiymatlar oralig'i

целочисленный (логический) тип данных

bool

1

0 / 255

butun (belgi) ma'lumotlar turi

char

1

0 / 255

butun son turlari

short int

2

-32 768 / 32 767

unsigned short

2

0 / 65 535

int

4

-2 147 483 648 / 2 147 483 647

unsigned int

4

0 / 4 294 967 295

unsigned long int

4

-2 147 483 648 / 2 147 483 647

suzuvchi nuqtali ma'lumotlari turlari

float 4 -2 147 483 648.0 / 2 147 483 647.0

4

-2 147 483 648.0 / 2 147 483 647.0

long float

8

-9 223 372 036 854 775 808 .0/ 9 223 372 036 854 775 807.0

double

8

-9 223 372 036 854 775 808 .0 / 9 223 372 036 854 775 807.0


Ma'lumotni tilga kiritishning ikkita usuli mavjud:

Formatlangan kirish-chiqish yoki oqim.

Formatlangan kiritish usulida scanf operatori va ma’lumotlarni chop etish uchun printf operatorlaridan foydalanadi. Operatorlarning sintaksisi quyidagicha:

scanf( [, < o’zgaruvchilar ro'yxati >]);

printf( [, < o’zgaruvchilar ro'yxati >]);
Format tavsifi satri oddiy belgilar, maxsus boshqaruvchi simvollar ketma-ketliklari va format xususiyatlaridan iborat.

Oddiy belgilar va qochish ketma-ketliklari paydo bo'lishi tartibida oddiy chiqish oqimiga ko'chiriladi. Format xususiyatlari% dan boshlanadi va ko'rsatiladigan qiymat turini belgilaydigan belgi bilan tugaydi. Bundan tashqari, format xususiyatlarida ko'rsatilgan qiymatning ko'rinishini boshqarish uchun belgilar va raqamlar bo'lishi mumkin (batafsil ma'lumot uchun pastga qarang). Chiqish ro'yxati o'zgaruvchilardan va / yoki qiymatlari chiqarilishi kerak bo'lgan doimiylardan iborat. Format spetsifikatsiyalarining soni chiqish ro'yxatida ko'rsatilgan chiqish qiymatlari soniga teng bo'lishi kerak. Boshqaruv belgilar ketma-ketligi 2-jadvalda ko'rsatilgan



2-jadval - Boshqaruv belgilari

ketma-ketlik

Amal

\a

Ovozli signal

\b

Avvalgi belgini o'chirish

\n

yangi qator

\r

Avtoulovni qaytarish

\t

Gorizontal tabulyasiya

\v

Vertikal tabulyasiya

\'

Apostrof

\"

Qo’shtirnoq

\\

Orma chiziq

\ooo

Sakkizlik sanoq sistemasida ASCII belgisi

\xooo

O'n oltilik sanoq sistemasida ASCII belgisi

Ba'zida operatorlar bilan ishlashda format spetsifikatorlari qo'llaniladi (jadval 3-5). 3-jadval - printf bayonoti uchun formatlash xususiyatlari



belgi

Ko’rsatma



Belgi

%d

Butun o’nlik son

%i

Butun o’nlik son

%e

x.xx e+xx ko’rinishidagi o’nlik son

%E

x.xx E+xx ko’rinishidagi o’nlik son

%f

suzuvchi nuqtali o’nlik kasr son xx.xxxx

%g

%f yoki %e, qisqaroq

%G

%F или %E, qisqaroq’i

%o

%o sakklizlik sanoq sistemasidagi son

%s

%s belgili satr

%u

%u ishorasiz o’nlik son

%x

%x 16 saniq sistemasidai son

%X

%X 16 saniq sistemasidai son

%%

%% belgi %

%p

%p ko’rsatkich

%n

%n ko’rsatkich

Bundan tashqari, l va h modifikatorlari format buyruqlariga qo'llanilishi mumkin.

(jadval 4).

jadval 4


Belgilanish

maqsadi

%ld

long int chop etish

%hu

short unsigned chop etish

%Lf

long double chop etish

5-jadval - skanf operatori uchun formatlash xususiyatlari



Belgilar

maqsadi

%c

belgini o’qish

%d

o'nli butun sonni o'qish

%i

o'nli butun sonni o'qish

%e

suzuvchi float toifasidagi sonni o'qish (suzuvchi nuqta)

%h

short int toifasidagi sonni o’qish

%o

Sakkizlik sanoq sistemasidagi sonni o'qish

%s

Satrni o’qish

Kirish-chiqish operatorlarida kvalifikator va modifikatorlardan foydalanish misollari:



int m, n, x;

double y;

char c = '&';

char str[] = "String";

scanf("%d%d", &m, &n); // m va n o'zgaruvchilarga o'nli butun sonlarni kiritish

printf("m = %5d\nn = %5d\n", m, n); // m va n o'zgaruvchilarni o'nlik butun son shaklida chiqarishda kamida 5 ta belgi ishlatiladi

scanf("%d", &x); // O'nli butun sonni x ga kiritish

printf("%#010x\n", x); // O'n oltilik tizimda x o'zgaruvchisini10 xona aniqlik //biilan chop etish, nollar // va 0x belgilar sondan avval old tomonga qo'shiladi

scanf("%lf", &y); // Y o'zgaruvchisiga haqiqiy sonni kiritish

printf("y = %7.2lf\n", y); // Chiqish haqiqiy o'zgaruvchisi, kamida 7 xona aniqlikdar, shundan 2 - nuqtadan keyin chop etish

printf("c = %c\n", c); // Bitta belgini chop etish

printf("%.4s\n", str);

}
Ikkita sonning ko’paytmasini hisoblash dasturini c++ tilida tuzamiz.
// Standart kutubxonalarni ulanishi:

#include

#include // acos, log10, log, atan matematik funktsiyalar bilan ishlash uchun

using namespace std; // identifikatorlar aniqlanadigan nomlar fazosi

void main() // dasturning asosiy funktsiyasining sarlavhasi

{ // operator qavslari

setlocale(0, “Russian”); // rus tilida xabarlarning chiqishini sozlash

float x,y,z; // o'zgaruvchilar tavsifi (nomi va turi)

cout<<" x,y sonlarini kiriting: "< //ekranga xabarni chop etish

cin>>x>>y; // x,y o’zgaruvchilarning son qiymatini klaviaturadan kiritamiz

z=x*y;

cout<<"Произведение="< //natijani chop etamiz

system(“pause”);} //asosiy funksiyaning ohiri

Topshiriqni bajarishga na’muna misol.
Berilgan а vа α қийматлар учун y нинг қийматини хисобланг




Muammoning echish g’oyasi

Misolni echish uchun quyidagi belgilashlarni kiritamiz:

vа ifodani juda sodda ifodalarga bo’lib tashlaymiz. Chunki 4 maro- taba uchratamiz, vа uni b deb belgilaymiz. Bundan tashqari quyidagi belgilashlarni kiritamiz :
1)

2)

Download 75.52 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling