X milik segmen. Topik: Tipe data Boolean

Pelajaran dari serial " Algoritma Geometris»

Halo pembaca yang budiman!

Hari ini kita akan mempertimbangkan masalah tipikal lain dari rangkaian algoritma geometris. Mari kita tulis fungsi yang akan memeriksa termasuk sewenang-wenang segmen garis diberikan oleh koordinat awal dan akhir.

Untuk mengimplementasikan operasi perbandingan pada data nyata, kita akan menulis dua fungsi lagi: fungsi EqPoint(), yang akan memeriksa apakah dua titik pada bidang bertepatan, dan fungsi RealMoreEq(), yang akan kita gunakan untuk memeriksa ">=" relasi (lebih besar atau sama dengan). Kita sudah tahu alasan untuk memperkenalkan fungsi khusus.

Sebuah tugas. Memeriksa, milik apakah segmen garis.

Biarkan titik menjadi titik awal dan akhir segmen. adalah titik sembarang pada bidang.

Sebuah vektor yang berawal di suatu titik dan berakhir di suatu titik akan memiliki koordinat (x2-x1, y2-y1).

Jika P(x, y) adalah titik sembarang, maka koordinat vektornya adalah: (x-x1, y - y1).

Titik P akan menjadi milik segmen jika:

Program geom3; Const _Eps: Nyata = 1e-3; (presisi perhitungan) var x1,y1,x2,y2,x,y:nyata; Fungsi RealEq(Const a, b:Real):Boolean; (sama persis) mulai RealEq:= Abs(a-b)<= _Eps End; {RealEq} Function RealMoreEq(Const a, b:Real):Boolean; {больше или равно} begin RealMoreEq:= a - b >= _EpsEnd; (RealMoreEq) Fungsi EqPoint(x1,y1,x2,y2:real):Boolean; (Apakah dua titik pada bidang bertepatan) mulai Persamaan:=RealEq(x1,x2)dan RealEq(y1,y2) berakhir; (EqPoint) Fungsi AtOtres(x1,y1,x2,y2,x,y:real):Boolean; (Memeriksa apakah titik P termasuk segmen P1P2) Mulai Jika EqPoint(x1,y1,x2,y2) Maka AtOtres:= EqPoint(x1,y1,x,y) (titik P1 dan P2 bertepatan, hasilnya ditentukan oleh kebetulan dari titik P1 dan P) Lain AtOtres:= RealEq((x-x1)*(y2-y1)- (y-y1)*(x2-x1),0)and (RealMoreEq(x,x1)and RealMoreEq(x2 ,x)Atau RealMoreEq(x ,x2)dan RealMoreEq(x1,x)) akhir; (AtOtres) begin (main) writeln(Masukkan koordinat titik: x1,y1,x2,y2,x,y"); readln(x1,y1,x2,y2,x,y); if AtOtres(x1,y1,x2 ,y2,x,y) lalu writeln("Ya.") else writeln("Tidak); akhir. (utama)

Hasil eksekusi program.

Masukkan koordinat titik: x1, y1, x2, y2, x,y
0.5 1 2.5 2.8 1.203 1.633
Ya.

Hasil pengujian dalam program GeoGebra:


Hari ini kita telah menulis fungsi AtOtres() , yang memeriksa apakah titik arbitrer termasuk dalam segmen yang diberikan oleh koordinatnya.

Dua fungsi lagi telah diperkenalkan: EqPoint() dan RealMoreEq() untuk mengimplementasikan operasi perbandingan pada data nyata. Yang pertama memeriksa apakah dua titik pada bidang itu bertepatan, yang kedua digunakan untuk memeriksa hubungan ">=".

Pada pelajaran berikutnya, berdasarkan prosedur yang telah ditulis sebelumnya, kita akan menulis prosedur untuk menentukan koordinat titik potong dua segmen.

Tentang ini saya mengucapkan selamat tinggal kepada Anda. Sampai jumpa di pelajaran berikutnya.

Variabel Boolean biasanya mendapatkan nilai melalui perbandingan dan operasi matematika (dibahas dalam pelajaran sebelumnya), serta melalui operasi Boolean tertentu.

Turbo Pascal memiliki operasi logika yang dapat diterapkan pada variabel bertipe boolean. Ini bukan, dan, atau dan operasi xor. Dalam topik ini, Anda akan melihat tiga operasi logis. Penunjukan dan hasil dari operasi ini diberikan dalam tabel. Pikirkan itu.

Operasi bukan(tidak) memiliki satu operan dan membentuk negasi logisnya. Hasil dari operasi not adalah False jika operan benar dan True jika operan salah. Jadi,

tidak Benar Salah (ketidakbenaran adalah kebohongan)

tidak Salah Benar (tidak salah benar)

Hasil operasi dan(i) benar hanya jika kedua operandnya benar, dan salah jika sebaliknya.

Hasil operasi atau(atau) benar jika salah satu operan benar, dan salah hanya jika kedua operan salah.

Latihan . Cobalah untuk menentukan arti operasi boolean untuk pernyataan:

  1. Seorang anak sekolah tinggal di rumah selama liburan musim dingin atau pergi ke suatu tempat untuk beristirahat.
  2. Philip Kirkorov adalah penyanyi dan operator kombinasi.
  3. Anak sekolah adalah laki-laki dan perempuan.

Operasi logis, relasional, dan aritmatika sering terjadi dalam ekspresi yang sama. Dalam hal ini, relasi di kiri dan kanan tanda operasi logika harus diapit tanda kurung, karena operasi logika memiliki prioritas lebih tinggi. Secara umum, prioritas operasi berikut diadopsi:

  • dan, *, /, div, mod
  • atau, +, -
  • operasi relasi.

. Operasi logika dan disebut juga dengan perkalian logis, dan operasi logika atau disebut juga dengan penjumlahan logis.

Selain itu, urutan operasi dapat diubah dengan tanda kurung. Misalnya, dalam ekspresi logis, kami mengatur urutan tindakan

A atau B dan bukan (A atau B)

Tanda kurung atau operator dieksekusi terlebih dahulu, diikuti oleh not, dan, atau operator. Jika kita mengganti nilai True dan False alih-alih variabel A dan B, maka, dengan menggunakan prosedur yang sudah dipertimbangkan, kita mendapatkan nilai seluruh ekspresi yang sama dengan True.

Latihan . Tulis di buku catatan Anda dan hitung nilai ekspresi untuk a=10, b=20, c=true, d=false:

  • (a>5) dan (b>5) dan (a<20) and (b<30);
  • tidak a<15) or not (b<30);
  • c atau d dan (b=20);

Perhatian! Di Pascal, tidak ada cara untuk memasukkan data boolean menggunakan pernyataan read. Namun, output dari nilai variabel tipe boolean disediakan menggunakan operator tulis.

Misalnya, setelah mengeksekusi pernyataan tulis (5>2), True akan ditampilkan di layar.

kerja mandiri

Pilih dengan guru tugas untuk melakukan pekerjaan mandiri dari latihan di bawah ini.

  1. Hitung nilai ekspresi:

    a) kuadrat(x)+kuadrat(y)<=4 при x=0.3, y=-1.6;

    b) k mod 7 = k div5-1 pada k=15;

    c) ganjil(trunc(10*p)) pada p=0,182;

    d) tidak ganjil(n) untuk n=0;

    e) t dan (p mod 3=0) pada t=benar, p=101010;

    e) (x*y<>0) dan (y>x) dengan x=2, y=1;

    g) (x*y<>0) atau (y>x) saat x=2, y=1;

    h) a atau (bukan b) dengan a=Salah, b=Benar;

  2. Tulis relasi dalam Pascal yang benar jika kondisi yang ditentukan terpenuhi dan salah jika tidak:

    a) bilangan bulat k habis dibagi 7;

    b) titik (x,y) terletak di luar lingkaran berjari-jari R berpusat di titik (1,0);

    c) bilangan asli N adalah kuadrat dari bilangan asli;

    d) 0

    e) x=maks(x,y,z);

    e) setidaknya satu dari variabel logis a dan b Benar;

    g) kedua variabel logis a dan b adalah Benar.

  3. Tentukan urutan operasi yang dilakukan saat mengevaluasi ekspresi:

    a) a dan b atau tidak c dan d;

    b) (x>=0) atau tidak c dan d.

  4. Evaluasi ekspresi berikut dengan a=True, b=False:

    a) a atau b dan bukan a;

    b) (a atau b) dan bukan a;

    c) bukan a dan b;

    d) tidak (a dan b)

  5. Tulis ekspresi dalam Pascal yang benar jika kondisi yang ditentukan terpenuhi dan salah jika tidak:

    a) x milik segmen;

    b) x terletak di luar segmen;

    c) * x milik segmen atau [-1, 1];

    d) * x terletak di luar segmen dan [-1, 1];

    e) masing-masing bilangan x, y, z positif;

    g) tidak ada bilangan x, y, z yang positif;

    h) hanya satu dari bilangan x, y, z yang positif;

    i) variabel boolean a bernilai True, variabel boolean b bernilai False;

    j) * tahun dengan nomor urut y adalah tahun kabisat (tahun adalah tahun kabisat jika angkanya kelipatan 4, tetapi dari kelipatan 100, hanya kelipatan 400 yang merupakan tahun kabisat, misalnya 1700, 1800 dan 1900 adalah tahun non-kabisat, 2000 adalah tahun kabisat).

  6. Gambarlah pada bidang (x, y) sebuah area di mana dan hanya di mana ekspresi yang ditentukan benar:

    a)* (y>=x) dan (y+x>=0) dan (y<=1);

    b) (persegi(x)+persegi(y)<1) or (y>0) dan (abs(x)<=1);

    c) (trunc(y)=0 dan (round(x)=0);

    d)* (perut(x)<=1)>(abs(y)>=1);

    e) (persegi(x)+persegi(y)<=4)=(y<=x).

  7. Ada operator bersyarat:
    jika d<>10
    kemudian
    writeln('hore!')
    kalau tidak
    writeln('buruk...');

    Apakah mungkin untuk menggantinya dengan pernyataan berikut:

  8. Apa yang akan menjadi nilai variabel j, k setelah eksekusi pernyataan bersyarat:
    jika j>k
    kemudian
    j:=k-2
    kalau tidak
    dek(k,2);
    jika nilai awal variabel sama:
    a) j=3, k=5;
    b) j=3, k=3;
    c) j=3, k=2.

Catatan . Sebagai hasil dari pernyataan dec (k,2), nilai variabel k berkurang 2.

Pilih dengan guru tugas untuk melakukan pekerjaan mandiri dari latihan di bawah ini.

1. Hitung nilai ekspresi:

a) kuadrat(x)+kuadrat(y)<=4 при x=0.3, y=-1.6;

b) k mod 7 = k div5-1 pada k=15;

c) ganjil(trunc(10*p)) pada p=0,182;

d) tidak ganjil(n) untuk n=0;

e) t dan (p mod 3=0) pada t=benar, p=101010;

e) (x*y<>0) dan (y>x) dengan x=2, y=1;

g) (x*y<>0) atau (y>x) saat x=2, y=1;

h) a atau (bukan b) dengan a=Salah, b=Benar;

2. Tulis dalam Pascal sebuah relasi yang benar jika kondisi yang ditentukan terpenuhi dan salah jika sebaliknya:

a) bilangan bulat k habis dibagi 7;

b) persamaan tidak memiliki akar real;

c) titik (x,y) terletak di luar lingkaran berjari-jari R berpusat di titik (1,0);

d) bilangan asli N adalah kuadrat dari bilangan asli;

e) x=maks(x,y,z);

dan) (jangan gunakan operasi not)

h) setidaknya satu dari variabel logis a dan b adalah Benar;

i) kedua variabel logis a dan b adalah Benar.

3. Tentukan urutan operasi yang dilakukan saat mengevaluasi ekspresi:

a) a dan b atau tidak c dan d;

b) (x>=0) atau tidak c dan d.

4. Hitung ekspresi berikut dengan a=True, b=False:

a) a atau b dan bukan a;

b) (a atau b) dan bukan a;

c) bukan a dan b;

d) tidak (a dan b)

5. Tulis ekspresi dalam Pascal yang benar jika kondisi yang ditentukan terpenuhi dan salah jika tidak:

a) x milik segmen;

b) x terletak di luar segmen;

c) * x milik segmen atau [-1, 1];

d) * x terletak di luar segmen dan [-1, 1];

e) masing-masing bilangan x, y, z positif;

g) tidak ada bilangan x, y, z yang positif;

h) hanya satu dari bilangan x, y, z yang positif;

i) variabel boolean a bernilai True, variabel boolean b bernilai False;

j) * tahun dengan nomor urut y adalah tahun kabisat (tahun adalah tahun kabisat jika angkanya kelipatan 4, tetapi dari kelipatan 100, hanya kelipatan 400 yang merupakan tahun kabisat, misalnya 1700, 1800 dan 1900 adalah tahun non-kabisat, 2000 adalah tahun kabisat).

6. Gambarlah pada bidang (x, y) area di mana dan hanya di mana ekspresi yang ditentukan benar:

a)* (y>=x) dan (y+x>=0) dan (y<=1);

b) (persegi(x)+persegi(y)<1) or (y>0) dan (abs(x)<=1);

c) (trunc(y)=0 dan (round(x)=0);

d)* (perut(x)<=1)>(abs(y)>=1);

e) (persegi(x)+persegi(y)<=4)=(y<=x).

7) Ada operator bersyarat:

writeln('hore!')

writeln('buruk...')

Apakah mungkin untuk menggantinya dengan pernyataan berikut:

a) jika d=10 b) jika tidak (d=10)

writeln ('hore!') writeln ('hore!')

writeln('buruk...'); writeln('buruk...');

c) jika tidak (d=10) d) jika tidak (d<>10)

writeln('buruk...') writeln('buruk...')

writeln('hore!'); writeln('hore!');

8) Apa yang akan menjadi nilai variabel j, k setelah eksekusi pernyataan bersyarat:

jika nilai awal variabel sama:

Catatan. Sebagai hasil dari pernyataan dec (k,2), nilai variabel k berkurang 2.

. X milik segmen;
x terletak di luar segmen;
x milik segmen atau [-1,1];
x terletak di luar segmen atau [-1,1].
3.
Jelaskan struktur dan aturan untuk mengeksekusi pernyataan bersyarat.
4.
Tulis tindakan yang ditentukan sebagai pernyataan bersyarat tunggal:
karena
2
x, pada 0x pada =
1-dosa
2
x, jika tidak.
5.
z
int z=0, x=1, y=

1;

80 Memprogram algoritma linier dalam sistem Pembangun C++
jika (x>0) jika (y>0) z=1; lain z=2;
6.
Berapa nilai yang akan dimiliki variabel z setelah mengeksekusi pernyataan:
int z=0, x=

1,y=1;
jika (x) ( jika (y>0) z=1;) lain z=2;
7.
Berapa nilai yang akan dimiliki variabel z setelah mengeksekusi pernyataan:
int z=0, x=0, y=1;
jika (x) ( jika (y>0) z=1;) lain z=2;
8.
Berapa nilai yang akan dimiliki variabel z setelah mengeksekusi pernyataan:
int z=0, x=3, y=1;
jika (x) ( jika (y) z=1;) lain z=2;
9.
Tentukan kesalahan dalam pernyataan berikut:
jika (1
lainx=0; y+= 1;
10.
int z=0, x=0, y=1;
jika (!x) ( jika (!(y

1)) z=1;) lain z=2;
11.
Nilai apa yang akan dimiliki variabel z setelah mengeksekusi pernyataan:
int z=0, x=1, y=1;
jika (!x) ( jika (!(y

1)) z=1;) lain z=2;
12.
Temukan kesalahan dalam fragmen program:
(int n,x; sakelar (k) case + : x:=x-4 break; case

-

,

*

,x=5;
}
Aturan apa yang dilanggar dan bagaimana kesalahan dapat diperbaiki?


81
3.4
Tugas individu untuk bagian 3
Setiap siswa perlu memecahkan dua masalah tingkat pertama dan kedua kompleksitas.
Tugas tingkat kerumitan pertama.
1.
Anda diberi bilangan bulat positif empat digit. Tulis program yang mencetak BENAR atau Salah tergantung pada apakah kondisi yang ditentukan terpenuhi atau tidak: jumlah digit ke-1 dan ke-4 sama dengan produk digit ke-2 dan ke-3.
2.
Bilangan real x, y diberikan. Jika x dan y negatif, maka ganti setiap nilai dengan modulusnya; jika hanya salah satunya yang negatif, maka naikkan kedua nilai sebesar 5,5; dalam kasus lain, kedua nilai harus dikurangi 10 kali lipat.
3.
Bilangan real x, y diberikan. Jika x dan y positif, maka turunkan setiap nilai dengan faktor 5; jika kedua nilai berada dalam rentang [-3, 9], maka kedua nilai tersebut harus diganti dengan 0; jika x dan y bertambah 3.
4.
Bilangan real x, y (xy) diberikan. Ganti yang lebih kecil dari dua angka ini dengan setengah jumlah mereka, dan yang lebih besar dengan produk ganda mereka.
5.
Jika jumlah tiga bilangan real berbeda berpasangan x, y, z kurang dari 1, maka yang terkecil dari ketiga bilangan ini diganti dengan setengah jumlah dari dua lainnya; jika tidak, ganti yang lebih kecil dari x dan y dengan setengah jumlah dari dua nilai yang tersisa.
6.
Diberikan bilangan real a, b, c, d. Jika sebuah b>c>d, lalu biarkan angkanya tidak berubah; jika tidak, ganti semua angka dengan kuadratnya.
7.
Tentukan apakah bilangan bulat enam digit beruntung. (Suatu angka disebut beruntung jika jumlah tiga digit pertamanya sama dengan jumlah tiga digit terakhirnya.)
8.
BENAR atau Salah tergantung pada apakah kondisi yang ditentukan terpenuhi atau tidak: untuk bilangan real arbitrer a, b, c, tentukan apakah persamaan ax
2
+bx+c=0 setidaknya satu solusi nyata.

82 Memprogram algoritma linier dalam sistem Pembangun C++
9.
Untuk mengatasi masalah berikut, buatlah program yang mencetak: BENAR atau Salah tergantung pada apakah kondisi yang ditentukan terpenuhi atau tidak: untuk menentukan apakah jumlah dua digit pertama dari angka empat digit yang diberikan sama dengan jumlah dua angka terakhirnya.
10.
Beberapa sekolah memiliki kebijakan penerimaan berikut. Pelamar mengambil dua ujian, yang dinilai menurut
masing-masing 100 poin. Jika pemohon mencetak setidaknya 150 poin, maka ini memberikan hak untuk memasuki departemen siang hari, dari 100 hingga 149 - ke departemen malam; di bawah 100 poin berarti penolakan masuk untuk belajar. Tulis sebuah program yang, tergantung pada jumlah poin yang dicetak, memberi tahu pemohon tentang haknya untuk mendaftar.
11.
Tulis program menggunakan operator seleksi , yang memungkinkan Anda mendapatkan deskripsi verbal dari tanda. (1 - "buruk", 2 -
"tidak memuaskan", 3 - "memuaskan", 4 - "baik", 5 -
"Besar".)
12.
Untuk mengatasi masalah berikut, buatlah program yang mencetak: BENAR atau Salah tergantung pada apakah kondisi yang ditentukan terpenuhi atau tidak: untuk menentukan apakah di antara digit angka tiga digit yang diberikan adalah sama.
13.
Tulis program yang mencetak BENAR jika tanggal d1, m1 mendahului (dalam satu tahun) tanggal d2, m2 dan artinya Salah jika tidak.
14.
Tulis sebuah program menggunakan pernyataan pilih yang menampilkan nama lengkap dengan huruf pertama dari nama tersebut.
(Ivan, Peter, Nikolai, Vladimir, George).
15.
Tulis sebuah program menggunakan operator seleksi, yang diberi angka input 0≤ k≤ 5 mencetak nama gambar ini dalam bahasa Rusia dan Inggris.
16.
Diberikan sebuah bilangan bulat k (1

k

365). Tentukan apakah hari ke-k dalam setahun akan menjadi akhir pekan atau hari kerja, jika 1 Januari adalah hari Senin.
17.
Diberikan bilangan asli x. Menghitung f, jika:











dosa
,
1 0
,
0 5
2 11 2
kasus
sisanya
di
x
x
x
pada
x
x
x
pada
f

Pemrograman dengan Array Satu Dimensi
83 18.
Diberikan bilangan asli x. Buatlah program untuk menghitung f:












34 5
,
12 3
lg ln
,
3 5
1 3
2 4
kasus
sisanya
di
x
x
x
pada
x
x
x
pada
f
19.
Tulis program menggunakan operator pilih yang, dengan huruf pertama nama kota, menampilkan nama kota secara lengkap (Kursk, Moskow, Tula, Novgorod, Voronezh).
20.
Tulis program menggunakan pernyataan pilih yang menampilkan nama lengkap dengan huruf pertama dari nama belakang (Ivanov, Petrov, Sidorov, Myshkin, Shishkin).
21.
Diketahui koordinat pusat dan jari-jari lingkaran. Tentukan apakah suatu titik tertentu dengan koordinat (x,y) termasuk dalam lingkaran.
22.
Tulis program menggunakan pernyataan pilih yang mencetak nama lengkap hewan (anjing, kucing, jerapah, kuda, monyet) dengan huruf pertama nama hewan.
23.
Diberikan tiga bilangan berbeda a,b,c. Urutkan angka-angka ini dalam urutan menaik sehingga sebuah sesuai dengan bilangan terkecil, b- rata-rata, c- terbesar.
24.
Tulis sebuah program menggunakan pernyataan pilih yang, dengan nomor (dari 1 hingga 7), menampilkan nama hari dalam seminggu.
25.
Tulis sebuah program menggunakan pernyataan pilih yang, dengan nomor (dari 1 hingga 12), menampilkan nama bulan dalam setahun.
26.
Tulis sebuah program menggunakan pernyataan pilih yang, dengan huruf pertama dari nama musim dalam setahun, akan mencetak nama lengkap musim dalam setahun.
27.
Anda diberi bilangan bulat positif lima digit. Tulis program yang mencetak BENAR atau Salah tergantung pada apakah kondisi yang ditentukan terpenuhi atau tidak: jumlah digit ke-1, ke-3 dan ke-5 lebih besar dari produk digit ke-2 dan ke-4.
28.
Anda diberi bilangan bulat positif empat digit. Tulis program yang mencetak BENAR atau Salah tergantung cuaca

84 Memprogram algoritma linier dalam sistem Pembangun C++ apakah kondisi yang ditentukan terpenuhi atau tidak: mean aritmatika 1 dan
4 digit lebih dari jumlah 2 dan 3 digit.
29.
Diberikan satu digit dan tiga digit angka dalam notasi desimal. Jika angka tersebut cocok dengan angka tertinggi dari angka tersebut, maka hitunglah jumlah angka dari angka tersebut. Jika angka tersebut cocok dengan angka tengah dari angka tersebut, maka hitunglah perkalian dari angka-angka tersebut. Jika angka tersebut cocok dengan angka paling penting dari angka tersebut, maka hitung rata-rata aritmatika dari angka-angka tersebut. Jika tidak ada kondisi yang terpenuhi, maka hitung rata-rata geometrik dari angka-angka tersebut.
30.
Diberikan satu digit dan tiga digit angka dalam notasi desimal. Jika angka tersebut cocok dengan angka tertinggi dari angka tersebut, maka hitung rata-rata aritmatika dari angka-angka tersebut. Jika angka tersebut bertepatan dengan angka tengah dari angka tersebut, maka hitunglah mean geometrik dari angka-angka tersebut. Jika angka tersebut cocok dengan angka paling penting dari angka tersebut, maka hitung jumlah angka dari angka tersebut. Jika tidak ada kondisi yang terpenuhi, maka hitung produk dari angka-angka tersebut
Tugas tingkat kerumitan kedua.
1.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan terner. Tulis sebuah program yang menampilkan nama-nama digit angka dalam bahasa Rusia, jika digit tertinggi dari angka tersebut lebih besar dari yang termuda , jika tidak
- dalam Bahasa Inggris.
2.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan lima digit. Buatlah program yang menampilkan nama-nama digit angka dalam bahasa Inggris, jika angka tertinggi lebih besar dari angka terendah, sebaliknya
- dalam bahasa Rusia.
3.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan lima digit. Buatlah program yang mencetak nama-nama digit suatu bilangan dalam bahasa Inggris jika digit tertinggi dari bilangan tersebut tepat 2 kali digit terendah, jika tidak
- dalam bahasa Rusia.
4.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan terner. Tulis sebuah program yang menampilkan nama-nama digit angka dalam bahasa Rusia, jika digit tertinggi dari angka tersebut kurang dari yang terendah, jika tidak
- dalam Bahasa Inggris.

Pemrograman dengan Array Satu Dimensi
85 5.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan lima digit. Tulis program yang menampilkan nama-nama digit angka dalam bahasa Rusia.
6.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan oktal. Tulis program yang menampilkan nama-nama digit angka dalam bahasa Rusia.
7.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan oktal. Tulis program yang menampilkan, jika angka tertinggi kurang dari setengah angka terendah, nama-nama digit angka dalam bahasa Inggris, jika tidak

dalam bahasa Rusia.
8.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan septik. Tulis sebuah program yang menampilkan, jika angka-angka dalam urutan menurun, nama-nama digit angka dalam bahasa Inggris, jika tidak

dalam bahasa Rusia.
9.
Anda diberikan dua digit dalam sistem bilangan desimal. Tulis sebuah program yang menampilkan nama-nama dalam bahasa Inggris dari angka-angka dari jumlah angka-angka ini.
10.
Anda diberikan dua digit dalam sistem bilangan desimal. Tulis sebuah program yang menampilkan nama-nama dalam bahasa Rusia dari digit-digit produk dari digit-digit ini.
11.
Anda diberikan dua digit dalam sistem bilangan desimal. Tulis sebuah program yang menampilkan nama dalam bahasa Rusia dari digit modulus selisih digit-digit ini.
12.
Anda diberikan dua digit dalam sistem bilangan desimal. Tulis sebuah program yang menampilkan nama-nama angka dalam bahasa Inggris dari hasil bagi dan sisa pembagian bilangan bulat dari angka-angka ini.
13.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan desimal. Tulis sebuah program yang menampilkan, jika angka tertinggi tiga kali angka terendah, nama-nama digit angka dalam bahasa Inggris, jika tidak

dalam bahasa Rusia.
14.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan desimal. Buatlah program yang mencetak nama digit suatu bilangan yang bernilai lebih besar dalam bahasa Inggris, dan nama digit suatu bilangan yang bernilai lebih kecil,

dalam bahasa Rusia.

86 Memprogram algoritma linier dalam sistem Pembangun C++
15.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan septik. Buatlah program yang mencetak nama digit suatu bilangan yang bernilai lebih besar dalam bahasa Inggris, dan nama digit suatu bilangan yang bernilai lebih kecil,

dalam bahasa Rusia.
16.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan heksadesimal. Buatlah program yang menampilkan nama-nama digit angka dalam bahasa Inggris.
17.
Diberikan dua bilangan bulat positif dua digit dalam sistem bilangan terner. Tulis program yang menampilkan nama-nama digit jumlah angka-angka ini dalam bahasa Rusia.
18.
Dua bilangan bulat positif dua digit dalam sistem bilangan biner diberikan. Buatlah program yang menampilkan nama-nama digit dari jumlah angka-angka ini dalam bahasa Inggris.
19.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan lima digit. Tulis sebuah program yang menampilkan, jika angka-angka dalam urutan menaik, nama-nama digit angka dalam bahasa Inggris, jika tidak

dalam bahasa Rusia.
20.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan heksadesimal. Tulis sebuah program yang menampilkan, jika digit tertinggi adalah lima kali digit terendah, nama-nama digit angka dalam bahasa Rusia, jika tidak

dalam Bahasa Inggris.
21.
Dua digit diberikan dalam sistem bilangan oktal. Tulis sebuah program yang menampilkan nama-nama dalam bahasa Rusia dari digit-digit modulus selisih digit-digit ini.
22.
Dua digit diberikan dalam sistem bilangan oktal. Tulis sebuah program yang menampilkan nama-nama dalam bahasa Rusia dari angka-angka jumlah dari dua angka ini.
23.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan septik. Tulis program yang menampilkan, jika digit tertinggi tiga kali terendah, nama digit angka dalam bahasa Rusia, jika tidak

dalam Bahasa Inggris.
24.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan oktal. Tulis program yang menampilkan nama digit angka yang memiliki nilai lebih besar dalam bahasa Rusia, dan dalam

Pemrograman dengan Array Satu Dimensi
87 peringkat digit angka yang memiliki nilai terendah,

dalam Bahasa Inggris.
25.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan septik. Tulis program yang menampilkan nama digit angka yang memiliki nilai kurang dari 4 dalam bahasa Rusia, dan nama digit angka yang memiliki nilai lebih besar atau sama dengan 4,

dalam Bahasa Inggris.
26.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan heksadesimal. Tulis program yang menampilkan nama digit angka yang memiliki nilai kurang dari 3 dalam bahasa Rusia, dan nama digit angka yang memiliki nilai lebih besar atau sama dengan 3,

dalam Bahasa Inggris.
27.
Diberikan dua huruf pertama (tidak peka huruf besar/kecil, baik huruf kecil maupun huruf besar) dari nama bulan dalam setahun. Tulis sebuah program yang menampilkan nama lengkap bulan dalam setahun dalam bahasa Rusia.
28.
Diberikan dua huruf pertama (tidak peka huruf besar/kecil, baik huruf kecil maupun huruf besar) dari nama hari dalam seminggu. Tulis program yang menampilkan nama lengkap hari dalam seminggu dalam bahasa Rusia.
29.
Dalam kalender Jepang kuno, siklus 60 tahun diadopsi, terdiri dari lima sub-siklus 12 tahun. Subsiklus ditunjuk dengan nama warna: hijau, merah, kuning, putih dan hitam. Dalam setiap sub-siklus, tahun-tahun dinamai menurut nama hewan: tikus, sapi, harimau, kelinci, naga, ular, kuda, domba, monyet, ayam, anjing, dan babi (1984 - tahun tikus hijau - adalah awal dari siklus berikutnya). Tulis sebuah program yang memasukkan angka tahun tertentu di zaman kita dan mencetak namanya sesuai dengan kalender Jepang kuno.
30.
Diberikan bilangan bulat positif dua digit dalam sistem bilangan desimal. Tulis program yang menampilkan nama digit angka yang memiliki nilai lebih besar dari 5 dalam bahasa Rusia, dan nama digit angka yang memiliki nilai kurang dari atau sama dengan 5,

dalam Bahasa Inggris.

88 Pemrograman algoritma linier dalam sistem Pembangun C++
4 PEMROGRAMAN SIKLIK
ALGORITMA DALAM SISTEM C++BUILDER
Pada bagian ini, studi tentang operator loop bahasa dilakukan.
C++, memperoleh keterampilan dalam pemrograman algoritma siklik, memperkenalkan
Ya, kompilasi dan debugging program.
4.1
Konsep dasar
Di lidah Pembangun C++ Ada tiga pernyataan loop:
1.
Loop dengan prasyarat ( ketika);
2.
Perulangan dengan kondisi akhir ( melakukan);
3.
Loop dengan penghitung ( untuk).
Pernyataan loop dengan prasyarat ketika (Gambar 4.1):
ketika(kondisi) (tubuh lingkaran)
Gambar 4.1

Skema algoritma operator loop ketika
Jika hasil evaluasi kondisi adalah BENAR(true), kemudian badan loop dieksekusi dan transisi ke pemeriksaan kondisi dilakukan lagi. Jika hasil evaluasi kondisi adalah Salah(salah), maka loop keluar dan melompat ke pernyataan mengikuti pernyataan siklik ketika.
Jika, sebelum eksekusi loop pertama, nilai ekspresinya adalah Salah, badan loop tidak dieksekusi sama sekali dan transisi ke pernyataan berikutnya terjadi.
Kondisi
tubuh lingkaran
Ya
Bukan

Pemrograman dengan Array Satu Dimensi
89
Contoh:
Hitung jumlah bilangan ganjil antara 1 dan 10.
( int k=1, s=0; sementara (k ( s+=k; k+=2;
}
}
Pernyataan loop dengan postcondition melakukan (Gambar 4.2):
melakukan(tubuh lingkaran) ketika(kondisi); ya tidak ada syarat
tubuh lingkaran
Gambar 4.2

Skema algoritma operator loop lakukan ... sementara
Kondisi adalah ekspresi dari tipe boolean, badan perulangan adalah satu pernyataan sederhana atau majemuk.
Badan lingkaran pernyataan

Variabel tipe boolean dijelaskan oleh pengidentifikasi Boolean . Mereka hanya dapat mengambil dua nilai - PALSU (PALSU) dan BENAR (BENAR). Mereka juga dijelaskan di bagian deklarasi variabel. Var<имя>: Boolean;

Ekspresi Boolean dapat mencakup:

n boolean,

n operasi relasi (<- меньше, >- lagi,<=- меньше или равно, >=- lebih besar atau sama,<>- tidak sama, = - sama).

n operasi logika Dan, Atau, Tidak

n perbedaan tindakan dan fungsi


Turbo Pascal memiliki operasi logika yang dapat diterapkan pada variabel bertipe boolean. Ini bukan, dan, atau dan operasi xor.

Operasi bukan(tidak) memiliki satu operan dan membentuk negasi logisnya. Hasil dari operasi not adalah False jika operan benar dan True jika operan salah. Jadi, bukan Benar Salah (tidak benar itu bohong) bukan Salah Benar (tidak salah itu benar).

Hasil operasi dan(i) benar hanya jika kedua operandnya benar, dan salah dalam semua kasus lainnya (perkalian boolean).

Hasil operasi atau(atau) benar jika salah satu operandnya benar, dan salah hanya jika kedua operan salah (penambahan logis).

Operasi logis, relasional, dan aritmatika sering terjadi dalam ekspresi yang sama. Dalam hal ini, relasi di kiri dan kanan tanda operasi logika harus diapit tanda kurung, karena operasi logika memiliki prioritas lebih tinggi. Secara umum, prioritas operasi berikut diadopsi:

2. dan, *, /, div, mod

3. atau, +, -

4. operasi relasi (<- меньше, >- lagi,<=- меньше или равно, >=- lebih besar atau sama,<>- tidak sama, = - sama).

Selain itu, urutan operasi dapat diubah dengan tanda kurung. Misalnya, dalam ekspresi logis, kami mengatur urutan tindakan:

AorBandnot(AorB)


Tanda kurung atau operator dieksekusi terlebih dahulu, diikuti oleh not, dan, atau operator. Jika kita mengganti nilai True dan False alih-alih variabel A dan B, maka, dengan menggunakan prosedur yang sudah dipertimbangkan, kita mendapatkan nilai seluruh ekspresi yang sama dengan True.

Latihan 5: . Tulis di buku catatan dan hitung nilai ekspresi

dengan a=10, b=20, c=benar, d=salah: sebuah)(a>5) dan (b>5) dan (a<20) and (b<30);

b) tidak a<15) or not (b<30);

c) c atau d dan (b=20).

Perhatian ! Di Pascal, tidak ada cara untuk memasukkan data boolean menggunakan pernyataan read. Namun, output dari nilai variabel tipe boolean disediakan menggunakan operator tulis. Sebagai contoh, setelah menjalankan operator tulis (5>2), True akan ditampilkan di layar.

Pertanyaan dan tugas rumah:

1. Bagaimana variabel boolean dijelaskan dan nilai apa yang dapat diambil?

2. Apa yang dapat dimasukkan dalam ekspresi logis. Berikan contoh ekspresi logika sederhana.

3. Ceritakan tentang operasi logika di Pascal. Berikan contoh ekspresi logika majemuk.

4. Apa prioritas operasi yang berbeda di Pascal. Berikan contoh.


Tugas:

№19.

A. bilangan bulat k habis dibagi 7;

C. Setidaknya satu dari bilangan bulat x, y genap;

G. x=max(x, y, z), yaitu x adalah bilangan terbesar dari ketiga bilangan x, y, z;

D. (jangan gunakan tidak operasi)

E. setidaknya satu dari variabel logis a dan b adalah Benar;

G. Variabel Boolean a dan b keduanya Benar.

№20. Tentukan urutan operasi yang dilakukan saat mengevaluasi ekspresi:

sebuah) a dan b atau tidak c dan d; b) (x>=0) atau tidak c dan d.

№21. Evaluasi ekspresi berikut dengan a=True, b=False:

sebuah) a atau b dan bukan a; b)(a atau b) dan bukan a; di) bukan a dan b; G) bukan (a dan b)

№22. Buat program: Pada ujian masuk, pelamar lulus fisika, ilmu komputer, komposisi. Seorang pelamar akan masuk jika dia menerima 5 dalam ilmu komputer dan skor setidaknya 13 poin untuk tiga ujian Apakah benar dia masuk (cetak Benar / Salah)?

8. Memecahkan masalah dengan topik “Program linier. besaran Boolean."

Mantan. 7 . Hitung nilai ekspresi:

a) kuadrat(x)+kuadrat(y)<=4 при x=0.3, y=-1.6;

b) k mod 7 = k div5-1 pada k=15;

c) ganjil(trunc(10*p)) pada p=0,182;

d) tidak ganjil(n) untuk n=0;

e) t dan (p mod 3=0) pada t=benar, p=101010;

e) (x*y<>0) dan (y>x) dengan x=2, y=1;

g) (x*y<>0) atau (y>x) saat x=2, y=1;

h) a atau (bukan b) dengan a=Salah, b=Benar;

Mantan. delapan. Tulis ekspresi dalam Pascal yang benar jika kondisi yang ditentukan terpenuhi dan salah jika tidak:

a) x milik segmen;

b) x terletak di luar segmen;

c) * x milik segmen atau [-1, 1];

d) * x terletak di luar segmen dan [-1, 1];

e) masing-masing bilangan x, y, z positif;

g) tidak ada bilangan x, y, z yang positif;

h) hanya satu dari bilangan x, y, z yang positif;

i) variabel boolean a bernilai True, variabel boolean b bernilai False;


j) * tahun dengan nomor urut y adalah tahun kabisat (tahun adalah tahun kabisat jika angkanya kelipatan 4, tetapi dari kelipatan 100, hanya kelipatan 400 yang merupakan tahun kabisat, misalnya 1700, 1800 dan 1900 adalah tahun non-kabisat, 2000 adalah tahun kabisat).

Mantan. 9 . Gambarlah pada bidang (x, y) sebuah area di mana dan hanya di mana ekspresi yang ditentukan benar:

a)* (y>=x) dan (y+x>=0) dan (y<=1);

b) (persegi(x)+persegi(y)<1) or (y>0) dan (abs(x)<=1);

c) (trunc(y)=0 dan (round(x)=0);

d)* (perut(x)<=1)>(abs(y)>=1);

e) (persegi(x)+persegi(y)<=4)=(y<=x).

Mantan. sepuluh ..Buku ini berharga X rubel. Pembeli memiliki uang kertas dalam denominasi 50, 10, 5, 1 rubel. Berapa banyak dan uang kertas apa yang perlu Anda bawa untuk membayar buku dengan jumlah minimum uang kertas?