Sabtu, 16 Juli 2011

mengenal pascal

Pemula panduan untuk Pascal

Salah satu hal aneh adalah bahwa istilah pencarian paling umum untuk blog ini adalah Turbo Pascal, yang telah saya sebutkan sekali (sekarang dua kali) dalam sejarah pribadi saya komputasi . Saya akan mencoba untuk menghormati dengan posting panduan pemula kecil untuk Pascal. Semua kode disajikan di sini harus tersedia untuk di-download di link ini .

Toolset, kompilator dan editor

Aku tidak akan menggunakan Turbo Pascal 6.0 yang lama lingkungan untuk contoh-contoh ini. Ini tidak berarti bahwa diakses sekarang seperti itu 15 tahun lalu ketika saya mulai belajar pemrograman. Sebaliknya saya merekomendasikan editor teks dengan sintaks pascal atau delphi untuk dan kompilator Free Pascal . Ini harus tersedia untuk lingkungan sistem operasi yang paling.

Anda program pertama

Aku tidak tahu mengapa Anda ingin belajar Pascal. Hal ini cukup banyak bahasa mati dan hanya tinggal di dalam Delphi, yang juga menurun. Aku hanya bisa berasumsi bahwa Anda perlu belajar Pascal sebagai tugas pemrograman di sekolah. Jika Anda seperti sintaks Pascal dan ingin menemukan bahasa yang sama lebih up to date saya akan menyarankan Anda akan melihat ke Ada atau Delphi. Kedua bahasa jauh lebih up to date standar dan cocok untuk penggunaan produksi hari ini. Dengan
1
2
3
4
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program HelloWorld;</span> Program HelloWorld;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('Hello World!');</span> Writeln ('Hello World! ");</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
  1. Nama program, ingat semi-colon pada akhir (;)
  2. Listing program utama dimulai di sini
  3. Menulis Hello World! untuk konsol keluaran
  4. Akhir daftar program, akhir utama memiliki sebuah titik bukan koma (.) (;)
Ketika saya kompilasi ini saya mendapatkan satu. O file objek dan satu eksekusi. Jika saya menjalankan executable saya akan mendapatkan "Hello World!" ditulis untuk jendela konsol. Keren!
 fpc src / helloworld.pas -obin/helloworld 
Hal ini akan mengkompilasi kode sumber ke bin / helloworld (gunakan helloworld.exe jika Anda berada dalam lingkungan DOS32).

Variabel

Sebuah variabel adalah sebuah identifier yang memiliki nilai. Anda menggunakan mereka untuk menyimpan nilai ke dalam memori untuk kemudian diproses. Ada 6 jenis utama dalam bahasa pemrograman Pascal.
Jenis Contoh
bilangan bulat Nomor: 3, 34, 0, -345
nyata Bilangan desimal dengan: 3,0, -0,05, 3,14
arang Karakter tunggal: a, F, 2,!
tali Beberapa karakter:! Hello World, Ceria, anjing saya adalah Sam
boolean Benar atau salah: true, false
pointer lebih lanjut tentang ini nanti
Pertama, Anda mendeklarasikan variabel pengenal dan jenis, maka Anda dapat menetapkan nilai ke variabel, dan mereka Anda siap untuk menggunakan variabel.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program Variables;</span> Program Variabel;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var width : integer;</span> var Lebar: integer;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var height : integer;</span> var tinggi: integer;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var area : integer;</span> var area: integer;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">width := 12;</span> width: = 12;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">height := 4;</span> tinggi: = 4;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">area := width * height;</span> area: = lebar * tinggi;</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('With the width ' +);</span> Write ('Dengan lebar' +);</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(width);</span> Menulis (lebar);</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(' and the height ');</span> Write ('dan tingginya');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(height);</span> Menulis (tinggi);</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(' you have the area ');</span> Write ('Anda memiliki luas');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln(area);</span> Writeln (area);</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
Dan Anda akan mendapatkan output yang diharapkan.
 Dengan lebar 12 dan 4 ketinggian Anda memiliki area 48 
Jika Anda memiliki nilai yang tidak pernah berubah, Anda harus menggunakan konstan, bukan variabel. Berikut contoh dengan konstanta PI.
1
2
3
4
5
6
7
8
9
10
11
12
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program Constants;</span> Program Konstanta;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">const pi = 3.14;</span> const pi = 3.14;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var radius, area : real;</span> var radius, luas: real;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">radius := 5.0;</span> radius: = 5.0;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">area := radius * radius * pi;</span> area: = radius * radius * pi;</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('With the radius ');</span> Write ('Dengan jari-jari');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(radius:1:0);</span> Menulis (radius: 01:00);</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(' we have the area ');</span> Write ('kami memiliki luas');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln(area:6:2);</span> Writeln (luas: 6:2);</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
  1. Notasi aneh adalah format. Ini berarti bahwa kita harus menggunakan 1 ruang untuk nomor dan menampilkan 0 desimal.
  2. Dengan cara yang sama ini berarti, menggunakan 6 ruang untuk nomor dengan 2 desimal.
Output yang diharapkan adalah
 Dengan jari-jari 5 kita memiliki luas 78,50 

Membaca masukan dari user

Anda dapat dengan mudah membaca input dari pengguna dengan readln.
1
2
3
4
5
6
7
8
9
10
11
12
13
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program ShoeSize;</span> Program ShoeSize;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var name : string;</span> var nama: string;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var size : real;</span> var ukuran: real;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('What is your name: ');</span> Write ('Siapa nama Anda:');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Readln(name);</span> Readln (nama);</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('What is your shoe size: ');</span> Write ('Apa ukuran sepatu Anda:');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Readln(size);</span> Readln (ukuran);</span>
  
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('Hello '); Write(name);</span> Write ('Hello'); Write (nama);</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(', your shoesize is '); Writeln(size:3:1);</span> Write (', shoesize Anda adalah'); writeln (ukuran: 3:1);</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
Dan output terlihat seperti ini. Tanda kuning adalah input dilakukan oleh pengguna.
 Apa nama Anda: Mikael
 Apa ukuran sepatu: 41,5
 Hello Mikael, shoesize Anda 41,5 

Kontrol aliran

Waktu untuk melihat jika-maka-lain dan perulangan konstruksi dalam Pascal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program GuessTheNumber;</span> Program GuessTheNumber;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">const Max = 1000;</span> const Max = 1000;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var number, guess, guesses : integer;</span> var angka, tebak, tebakan: integer;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('The number is between 1-1000.');</span> Writeln ('nomor adalah antara 1000-1000.');</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Initialize variables *)</span> (Variabel Inisialisasi * *)</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">number := Random(Max) + 1;</span> nomor: = Acak (Max) + 1;</span> 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">guess := -1;</span> menebak: = -1;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">guesses := 0;</span> tebakan: = 0;</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">while guess <> number do begin</span> sementara menebak <> Nomor lakukan mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('Guess the number: ');</span> Write ('Tebak angka:');</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Readln(guess);</span> Readln (guess);</span>
 
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">if guess > number then</span> jika menebak nomor> kemudian</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('Your guess was too high')</span> Writeln ('menebak Anda terlalu tinggi')</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">else</span> lain</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('Your gess was too low');</span> Writeln ('gess Anda terlalu rendah');</span>
 
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">guesses := guesses + 1;</span> tebakan: = tebakan + 1;</span> 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('You found the number in ');</span> Write ('Anda menemukan nomor di');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(guesses);</span> Write (tebakan);</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln(' tries.');</span> Writeln ('mencoba.');</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
  1. Rand (Max) akan mengacak sejumlah 0-999. Kami menambahkan 1 untuk mendapatkan nomor acak 1000-1000.
  2. Loop sementara tidak akan keluar sampai menebak sama dengan nomor. Mulailah menandai awal dari sebuah blok kode.
  3. Menjalankan ekspresi berikutnya jika menebak lebih besar dari jumlah, jika tidak menjalankan kasus lain.
  4. Perhatikan bahwa titik koma (;) hilang ketika ada kasus lain.
Output yang diharapkan adalah
 Nomor antara 1-1000.  Tebak nomor: 500 gess Anda terlalu rendah Tebak nomor: 800 menebak Anda terlalu tinggi Tebak nomor: 750 Anda menebak terlalu tinggi Tebak nomor: 650 Anda menebak terlalu tinggi Tebak nomor: 550 menebak Anda terlalu tinggi Tebak nomor: 525 gess Anda terlalu rendah Tebak nomor: 535 gess Anda terlalu rendah Tebak nomor: 545 gess Anda terlalu rendah Tebak nomor: 548 gess Anda terlalu rendah Tebak nomor: 549 gess Anda terlalu rendah Anda menemukan nomor 10 mencoba. 
Seperti yang Anda perhatikan, kode akan memberitahu kita bahwa "rasa Anda terlalu rendah" bahkan ketika kita sedang di posisi tepat. Bagaimana kita memperbaiki bug?

Untuk loop

Loop untuk dimulai pada nomor dan jumlah itu sampai mencapai max.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program Pyramid;</span> Program Piramida;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var i, j : integer;</span> var i, j: integer;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var height : integer;</span> var tinggi: integer;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('Height of pyramid: ');</span> Write ('Tinggi piramida:');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Readln(height);</span> Readln (tinggi);</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for i := 1 to height do begin</span> untuk i: = 1 dengan ketinggian lakukan mulai</span>
   
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Write empty spaces before building blocks *)</span> (* Menulis spasi kosong sebelum blok bangunan *)</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for j := 1 to (height - i) do</span> untuk j: = 1 to (tinggi - i) melakukan</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(' ');</span> Write ('');</span>
 
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Write building blocks *)</span> (* Menulis blok bangunan *)</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for j := 1 to (i + (i - 1)) do</span> untuk j: = 1 untuk (i + (i - 1)) lakukan</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('*');</span> Menulis ('*');</span>
 
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln();</span> Writeln ();</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
  1. Akan loop "tinggi" beberapa kali. Pertama kali saya akan menjadi 1, kedua kalinya itu akan menjadi 2 dan seterusnya. Perhatikan mulai yang menandai awal dari sebuah blok yang berakhir pada baris 19.
  2. Ini ok untuk memiliki batin untuk loop dan menggunakan ekspresi aritmatika untuk menghitung batas atas.
Output dari ini harus
 Tinggi piramida: 5
     *
    ***
   *****
  *******
 *********
Dan kita juga bisa menghitung mundur, dengan kata kunci downto.
1
2
3
4
5
6
7
8
9
10
11
12
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program Factorial;</span> Program Faktorial;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var i, n, result : integer;</span> var i, n, hasil: integer;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('Calculate factor of: ');</span> Write ('Hitung faktor:');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Readln(n);</span> Readln (n);</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">result := 1;</span> hasil: = 1;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for i := n downto 1 do</span> untuk i: = n downto 1 lakukan</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">result := result * i;</span> hasil: = hasil * i;</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(n); Write('! = '); Writeln(result);</span> Write (n); Write ('='); writeln (hasil);</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
Output ini akan
 Hitung faktor: 5
 5!  = 120 
Kasus-lain bisa sangat berguna untuk membangun pilihan menu.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program Menu;</span> Program Menu;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var input : integer;</span> var input: integer;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Initialize variables *)</span> (Variabel Inisialisasi * *)</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">input := 0;</span> masukan: = 0;</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">while input <> 5 do begin</span> sementara input <> 5 lakukan mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('Welcome, please select any of the following');</span> Writeln ('Selamat datang, silahkan pilih salah satu dari berikut');</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('1. Vegetables');</span> Writeln ('1 'Sayuran.);</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('2. Fruit');</span> Writeln ('2 Buah '.);</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('3. Gardening tools');</span> Writeln ('3 alat Berkebun '.);</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('4. Electronic equipment');</span> Writeln ('4 peralatan elektronik '.);</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('or 5 to quit');</span> Writeln ('atau 5 untuk berhenti');</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('> ');</span> Write ('>');</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Readln(input);</span> Readln (input);</span>
 
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">case input of</span> kasus input</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">1..2 : Writeln('You selected food');</span> 1 .. 2: writeln ('Anda memilih makanan');</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">3, 4 : Writeln('You selected a tool');</span> 3, 4: writeln ('Anda memilih alat');</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">5 : Writeln('Thank you, and welcome back')</span> 5: writeln ('Terima kasih, dan selamat datang kembali')</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">else</span> lain</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('Error: Unrecognized option');</span> Writeln ('Error: opsi tidak dikenal');</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>  
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
  1. Anda dapat meraup kasus berdasarkan rentang nilai.
  2. atau Anda dapat menggunakan nilai diskrit
  3. Perhatikan bahwa baris ini tidak memiliki berakhir koma, karena ada yang lain pada baris berikutnya.
  4. Pernyataan kasus telah berakhir; bahkan tanpa dimulai.
Bagian dari output terlihat seperti ini
 Selamat datang, silahkan pilih salah satu dari berikut
 1.  Sayuran
 2.  Buah
 3.  Alat berkebun
 4.  Elektronik peralatan
 atau 5 untuk berhenti
 > 88
 Error: opsi tidak dikenal 

String dan array

String adalah array karakter. Anda dapat menentukan panjang string ketika Anda mendefinisikan mereka, atau meninggalkan panjang keluar dan telah diatur ke 255. Siapa yang membutuhkan string lebih lama dari itu pula?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program Encrypt;</span> Program Enkripsi;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">const Alphabet = 25;</span> Alphabet const = 25;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var data, result : string; (* char array of 255 characters *)</span> Data var, hasil: string; (* char array dari 255 karakter *)</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var encKey, i : integer;</span> var encKey, i: integer;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var encChar : char;</span> var encChar: char;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('Enter the encryption key: ');</span> Write ('Masukkan kunci enkripsi: ");</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Readln(enckey);</span> Readln (enckey);</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('Enter the phrase to encrypt (capital letters): ');</span> Write ('Masukkan frase untuk mengenkripsi (huruf kapital):');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Readln(data);</span> Readln (Data);</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">result := '';</span> hasil: ='';</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for i := 1 to Length(data) do begin</span> untuk i: = 1 to Length (data) do begin</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Add the encryption key digit to all characters *)</span> (* Tambahkan kunci enkripsi digit untuk semua * karakter)</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">encChar := Chr(((Ord(data[i]) + encKey) mod Alphabet) + Ord('A'));</span> encChar: = Chr (((Ord (Data [i]) + encKey) mod Abjad) + Ord ('A'));</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">result := result + encChar;</span> hasil: = hasil + encChar;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('Encrypted phrase: ');</span> Write ('frase Encrypted:');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln(result);</span> Writeln (hasil);</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
  1. Length (data) fungsi akan mengembalikan panjang dari array, atau string dalam kasus ini.
  2. Ord (c) akan mendapatkan nomor ascii untuk karakter, mod adalah operator modulus dan Chr (i) akan mendapatkan char untuk nomor ASCII. Hasilnya adalah karakter dienkripsi.
Saya berasumsi bahwa Anda tidak mengakui cipher ceasar digunakan. Tidak sangat kuat, tetapi bekerja dengan baik pada berpikiran lemah.
 Masukkan kunci enkripsi: 1337
 Masukkan frase untuk mengenkripsi (huruf kapital): RAHASIA
 Encrypted frase: UGETGV 

Array

Anda dapat membuat array baru dengan mengatakan var [nama]: array [y x..] Dari [type]. Berikut adalah contoh perhitungan fibonacci.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program Fibonacci;</span> Program Fibonacci;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">const Max = 10;</span> const Max = 10;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var numbers : array[1..Max] of integer;</span> var angka: array [1 .. Max] of integer;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var i : integer;</span> var i: integer;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">numbers[1] := 1;</span> nomor [1]: = 1;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">numbers[2] := 2;</span> nomor [2]: = 2;</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Calculate fibonacci sequence *)</span> (* Hitung fibonacci * urutan)</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for i := 3 to Max do</span> untuk i: = 3 Max melakukan</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">numbers[i] := numbers[i - 2] + numbers[i - 1];</span> nomor [i]: = angka [i - 2] + angka [i - 1];</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Print out the sequence *)</span> (* Print out * urutan)</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('Fibonacci: ');</span> Write ('fibonacci:');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for i := 1 to Max do begin</span> untuk i: = 1 to Max do begin</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(numbers[i]);</span> Write (nomor [i]);</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(' ');</span> Write ('');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln;</span> Writeln;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
  1. Konstan Max digunakan untuk batas atas array dapat dengan mudah menjadi nomor. Saya menggunakan konstan di sini untuk kembali di kedua untuk laporan.
Dan cetakan yang diharapkan sebagai berikut.
 Fibonacci: 1 2 3 5 8 13 21 34 55 89 

Prosedur

Suatu prosedur adalah beberapa bagian dari kode yang Anda mungkin ingin untuk memotong dan memanggil beberapa kali.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program Procedures;</span> Program Prosedur;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">const Width = 33;</span> const Lebar = 33;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">procedure Title;</span> Judul prosedur;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln('*** PASCAL WILL RULE THE WORLD ***');</span> Writeln ('*** PASCAL AKAN ATURAN DUNIA ***');</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">procedure Separator;</span> Prosedur Pemisah;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var i : integer;</span> var i: integer;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for i := 0 to Width do</span> untuk i: = 0 sampai Lebar lakukan</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write('*');</span> Menulis ('*');</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln;</span> Writeln;</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Main program begins here *)</span> (* Program Utama dimulai di sini *)</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Separator;</span> Pemisah;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Title;</span> Judul;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Separator;</span> Pemisah;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
  1. Perhatikan bahwa konstan ini adalah global, yang berarti bahwa hal itu dapat dicapai dalam contoh, prosedur pada baris 12.
  2. Variabel ini i adalah lokal untuk prosedur, yang berarti bahwa itu akan dihancurkan ketika eksekusi berakhir prosedur.
Output yang diharapkan
 **********************************
 *** PASCAL AKAN ATURAN *** DUNIA
 ********************************** 
Anda dapat mengirim argumen untuk prosedur seperti yang saya lakukan dengan prosedur Swap di bawah ini. Saya menggunakan nomor array sebagai variabel global. Malu pada saya.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program BubbleSort;</span> Program BubbleSort;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">const Max = 20;</span> const Max = 20;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var numbers : array[1..Max] of integer;</span> var angka: array [1 .. Max] of integer;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Randomize digits in the array *)</span> (* Randomize digit di * array)</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">procedure Randomize;</span> Prosedur Randomize;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var i : integer;</span> var i: integer;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for i := 1 to Max do</span> untuk i: = 1 Max melakukan</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">numbers[i] := Random(100);</span> nomor [i]: = Acak (100);</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Swap two values in the array *)</span> (* Swap dua nilai di * array)</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">procedure Swap(x, y : integer);</span> Prosedur swap (x, y: integer);</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">numbers[x] := numbers[x] xor numbers[y];</span> nomor [x]: = angka [x] xor angka [y];</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">numbers[y] := numbers[x] xor numbers[y];</span> nomor [y]: = angka [x] xor angka [y];</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">numbers[x] := numbers[x] xor numbers[y];</span> nomor [x]: = angka [x] xor angka [y];</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">procedure Sort;</span> Urut prosedur;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var i, j : integer;</span> var i, j: integer;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for i := 1 to Max - 1 do begin</span> untuk i: = 1 Max - 1 lakukan mulai</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for j := i + 1 to Max do begin</span> untuk j: = i + 1 Max lakukan mulai</span>
    <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">if numbers[i] > numbers[j] then</span> jika angka [i]> angka [j] maka</span>
     <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Swap(i, j);</span> Swap (i, j);</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">procedure Print;</span> Prosedur Cetak;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var i : integer;</span> var i: integer;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for i := 1 to Max do begin</span> untuk i: = 1 to Max do begin</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(numbers[i]);</span> Write (nomor [i]);</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(' ');</span> Write ('');</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln;</span> Writeln;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Main program starts here *)</span> (* Program Utama dimulai di sini *)</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Randomize;</span> Randomize;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Sort;</span> Urut;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Print;</span> Cetak;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
  1. Anda akan mengenali terkenal algoritma XOR Swap di sini. Kita mendefinisikan dua argumen dengan integer.
  2. Kita menyebut prosedur Swap dengan argumen saya, dan j yang posisi di array yang perlu swapping.
Output yang diharapkan
 5 27 29 38 38 42 43 47 54 54 59 60 62 64 71 84 84 85 89 96 

Fungsi dan rekursi

Perbedaan dengan fungsi dan prosedur adalah bahwa fungsi akan mengembalikan nilai yang membuatnya dapat digunakan untuk rekursi, yaitu menamakan dirinya. Fungsi berikut menggunakan rekursi untuk melakukan algoritma pencarian biner pada daftar diurutkan. Kompleksitas harus saya O (n log n).
1
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program Find; const Min = 1; const Max = 10; type Vector = array[Min..Max] of integer; var guess : integer; function CreateVector() : Vector; var v : Vector; begin v[1] := 27; v[2] := 29; v[3] := 38; v[4] := 42; v[5] := 43; v[6] := 47; v[7] := 54; v[8] := 59; v[9] := 60; v[10] := 62; CreateVector := v; end; function Exists(min, max, search : integer; v : Vector) : boolean; var middle : integer; begin (* Found *) if (search = v[min]) or (search = v[max]) then Exists := true (* Not found *) else if max - min < 2 then Exists := false (* Keep looking *) else begin middle := min + Trunc((max - min) / 2); if (search >= v[middle]) then Exists := Exists(middle, max, search, v) else Exists := Exists(min, middle - 1, search, v); end; end; (* Main program starts here *) begin Write('Test if a number is in vector: '); Readln(guess); Writeln(Exists(Min, Max, guess, CreateVector())); end.</span> Program Cari; const Min = 1; const Max = 10; Vector tipe = array [Min .. Max] of integer; menebak var: integer; fungsi CreateVector (): Vektor; var v: Vektor; mulai v [1]: = 27; v [2]: = 29; v [3]: = 38; v [4]: ​​= 42; v [5]: = 43; v [6]: = 47; v [7]: = 54; v [8]: = 59; v [9]: = 60; v [10]: = 62; CreateVector: = v end; fungsi Exists (min, max, cari: integer; v: Vector): boolean; var tengah: integer; begin (* Ditemukan *) jika (search = v [min]) atau (search = v [max]) kemudian Ada: = true (* Tidak ditemukan *) lain jika max - min <2 kemudian Ada: = palsu (* Terus mencari *) lain mulai tengah: = min + trunc ((max - min) / 2), jika (pencari> = v [tengah]) kemudian Ada: = Exists (tengah, max, cari, v) lain ada: = Exists (min, tengah - 1, cari, v) end; end; (* Program Utama dimulai di sini *) mulai Write ('Tes jika nomor dalam vektor:'); readln (guess); writeln ( ada (Min, Max, menebak, CreateVector ())); akhir.</span>
  1. Saya membuat alias ketik untuk array. Ini akan menjadi referensi lebih mudah dalam pemanggilan fungsi.
  2. Sebuah fungsi yang harus kembali Vektor
  3. Anda mengembalikan nilai dengan memberikan fungsi nilai yang Anda ingin kembali.
  4. min, max dan pencarian argumen integer, dan v adalah vektor. Hasil kembali adalah benar / salah yang menunjukkan jika nilai ditemukan.
  5. Rekursif panggilan ke fungsi yang sama yang sedang berjalan.
 Uji jika nomor dalam vektor: 38
 BENAR 

Records dan pointer - terkait daftar

Rekaman dapat digunakan untuk bundel primitif bersama-sama dan kombinasi yang paling berguna adalah dengan pointer. Seperti Anda dapat menggunakan pointer dari satu record untuk merekam lain dan membuat daftar terkait. Dalam potongan kode berikut saya akan menggunakan saringan Eratosthenes untuk menghasilkan 100 bilangan prima pertama.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">program Primes;</span> Program Primes;</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">type</span> Jenis</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">ListRef = ^List;</span> ListRef = ^ Daftar;</span>
 
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">List = record</span> Daftar = record</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">current : integer;</span> saat ini: integer;</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">next : ListRef;</span> berikutnya: ListRef;</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var result : ListRef;</span> var hasil: ListRef;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Build a list of integers ranging from min to max *)</span> (* Buat daftar bilangan bulat mulai dari min ke max *)</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">function Range(min, max: integer) : ListRef;</span> fungsi Range (min, maks: integer): ListRef;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var list : ListRef;</span> daftar var: ListRef;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">New(list);</span> Baru (daftar);</span>
 
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">if min = max then</span> jika min = max maka</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">list^.current := max</span> ^ Daftar sekarang:. = maks</span>
 
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">else begin</span> lain mulai</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">list^.current := min;</span> daftar ^ saat ini:. = min;</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">list^.next := Range(min + 1, max);</span> daftar ^ selanjutnya:. = Range (min + 1, max);</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Range := list;</span> Range: = daftar;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Filter all the specific factors from the list *)</span> (* Filter semua faktor tertentu dari daftar *)</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">function FilterFactors(numbers : ListRef; factor : integer) : ListRef;</span> fungsi FilterFactors (nomor: ListRef; Faktor: integer): ListRef;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">var next : ListRef;</span> var berikutnya: ListRef;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">if numbers = nil then</span> jika angka = nil maka</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">FilterFactors := numbers</span> FilterFactors: = nomor</span>  
 
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">else if numbers^.current mod factor = 0 then begin</span> lain jika nomor ^ faktor mod. saat ini = 0 kemudian mulai</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">next := numbers^.next;</span> berikutnya: = angka ^ berikutnya;.</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">numbers^.next := nil;</span> ^ nomor berikutnya:. = nil;</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Dispose(numbers);</span> Buang (nomor);</span>
 
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">FilterFactors := FilterFactors(next, factor);</span> FilterFactors: = FilterFactors (berikutnya, faktor);</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end</span> akhir</span>
 
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">else begin</span> lain mulai</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">numbers^.next := FilterFactors(numbers^.next, factor);</span> ^ nomor berikutnya:. = FilterFactors (. nomor ^ selanjutnya, faktor);</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">FilterFactors := numbers;</span> FilterFactors: = angka;</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>   
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Remove all numbers that aren't primes *)</span> (* Hapus semua angka yang tidak bilangan prima *)</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">function FilterPrimes(numbers : ListRef) : ListRef;</span> fungsi FilterPrimes (nomor: ListRef): ListRef;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">if numbers <> nil then begin</span> jika angka <> nil then begin</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">numbers^.next := FilterFactors(numbers^.next, numbers^.current);</span> . nomor ^ berikutnya: = FilterFactors (. nomor ^ berikutnya, nomor ^ saat ini.);</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">numbers^.next := FilterPrimes(numbers^.next);</span> ^ nomor berikutnya:. = FilterPrimes (. nomor ^ berikutnya);</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
   
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">FilterPrimes := numbers;</span> FilterPrimes: = angka;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Print the list *)</span> (* Cetak * daftar)</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">procedure Print(numbers : ListRef);</span> Prosedur Cetak (nomor: ListRef);</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">if numbers <> nil then begin</span> jika angka <> nil then begin</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(numbers^.current);</span> Write (nomor ^ saat ini.);</span>
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Write(' ');</span> Write ('');</span>
 
   <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Print(numbers^.next);</span> Cetak (nomor ^ berikutnya.);</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
  <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Writeln;</span> Writeln;</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end;</span> akhir;</span>
 
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">(* Main program starts here *)</span> (* Program Utama dimulai di sini *)</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">begin</span> mulai</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">result := FilterPrimes(Range(2, 100));</span> hasil: = FilterPrimes (Range (2, 100));</span>
 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Print(result);</span> Cetak (hasil);</span>
<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">end.</span> akhir.</span>
  1. Alias ​​tipe pointer Daftar untuk ListRef
  2. Tentukan catatan integer dan pointer ke item berikutnya dalam linked list
  3. Menciptakan ruang di heap untuk item daftar baru
  4. Hapus memori yang menunjuk ke pointer, untuk digunakan oleh program lain
Output seperti yang diharapkan
 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 

Tidak ada komentar:

Posting Komentar