Presentasi Pemrograman Pascal. Bahasa pemrograman Pascal

PASCAL PENGANTAR BAHASA PEMROGRAMAN 2006 STRUKTUR KURSUS Antarmuka dan definisi utama; struktur program; menampilkan informasi teks; masukan papan ketik; koneksi dan penggunaan modul sistem; bekerja dengan tipe data dasar (integer, real, string, array, file);bekerja dengan grafik; penggunaan subrutin (prosedur dan fungsi); penggunaan modul. 2 ANTARMUKA LINGKUNGAN PASCAL Bahasa pemrograman TurboPascal 7.0 dilengkapi alat. Ini termasuk: editor teks multi-jendela; penghubung program; debugger program; sistem bantuan; penyusun. 3 ANTARMUKA LINGKUNGAN PASCAL 4 Daftar file yang terbuka: Alt + 0 Akses cepat untuk membuka file: Alt +<№ окна> DEFINISI DASAR Kata khusus adalah kata khusus yang digunakan oleh bahasa pemrograman untuk memisahkan area logis dari suatu program. Operator adalah perintah bahasa yang melakukan beberapa tindakan (memeriksa kondisi, mengatur loop, dll.) Pengidentifikasi adalah nama yang dipilih secara bebas oleh programmer untuk elemen program. Tipe data adalah karakteristik dari pengenal yang menentukan kumpulan nilai yang dapat diambilnya (bilangan bulat atau pecahan, string karakter, ekspresi logis, dll.). 5 STRUKTUR UMUM PROGRAM Program_name; Menggunakan bagian plugin; Bagian deskripsi label dari label; bagian Const dari deklarasi konstanta; Jenis bagian yang menjelaskan tipe data asli; bagian deklarasi variabel var; Mulailah Bagian utama dari program; akhir. Kode minimum: 6 SCREEN OUTPUT Untuk menampilkan informasi di layar, digunakan operator berikut: Write atau Writeln. F9 - Kompilasi + Verifikasi Ctrl+F9 - Jalankan F9 → Ctrl+F9 - Hindari Error Menampilkan hasil eksekusi program 7 SCREEN OUTPUT Hasil pernyataan: WRITE "Empty" Pernyataan WRITELN menambahkan string kosong WRITELN 8 LATIHAN Menampilkan informasi di layar seperti yang ditunjukkan di bawah Halo! Senang bertemu Anda! panggil aku komputer Bahan yang digunakan: Pernyataan keluaran: Write, WriteLn "Empty" operator WriteLn; menyisipkan string kosong. 9 MENGHUBUNGKAN MODUL TAMBAHAN Modul tambahan memperluas kemampuan program Anda dengan memperkenalkan operator tambahan. Modul terhubung di bagian Penggunaan. ProgramSaya; Menggunakan Module1, Module2 ; ______________________________________ ________________________ ____________________________ ________________________ MODUL 1 Resource Set 1 … MODUL N Modules: System Own Resource Set N Menghapus layar teks Menunggu penekanan tombol Modul yang terhubung bernama CRT 10 RANDOM SCREEN OUTPUT GotoXY (X, Y: Integer) Di mana X, Y – keakraban koordinat di layar. X dapat mengambil nilai dari 1 hingga 80, dan Y dari 1 hingga 25. Misalnya: Program My_program; (Koneksi modul) Menggunakan Crt; Mulai (Bersihkan layar) ClrScr; (keluaran data) GotoXY(1, 1); tulis("▒"); GotoXY(80, 1); tulis("▒"); GotoXY(1, 25); tulis("▒"); GotoXY(80, 25); tulis("▒"); (penundaan layar) ReadKey; akhir. Program menampilkan simbol “▒” (kode 177) di sudut layar. 11 OUTPUT DALAM WARNA TextColor (Warna); Menentukan warna karakter. TextBackground(Warna); Menentukan warna keakraban. ProgramSayaProgram; Menggunakan crt; Mulai TextColor (Merah); TextBackGround(Biru); Write("Di luar"); TextColor(Putih); Write("rumput, "); TextColor(Hijau); TextBackGround(Kuning); Write("di rumput"); TextBackGround(Magenta); Tulis("kayu bakar. Selesai. lilac - coklat - abu-abu muda - abu-abu tua - biru - hijau muda - cyan muda - merah muda - ungu muda - kuning - putih NILAI Operasi Data IDENTIFIKASI Istilah identifier berlaku untuk konstanta, variabel, fungsi, prosedur, komponen, dan lainnya yang ditentukan pengguna objek Karakter yang diperbolehkan: Huruf latin, angka, garis bawah Pembatasan: Tidak boleh dimulai dengan angka, tetapi boleh dimulai dengan garis bawah Tidak boleh beberapa kata Tidak boleh cocok dengan kata kunci mana pun Pengidentifikasi tidak peka huruf besar/kecil . Pengidentifikasi salah: Data Nama saya 2Array Var ( ( ( ( karakter Rusia digunakan ) Ada spasi ) Mulai dengan angka ) Cocok dengan kata kunci ) angka, string karakter, ekspresi logis, dll.). 16 JENIS DATA INTEGER 17 Himpunan terbatas dari nilai yang mungkin tipe byte shortint word integer longint range 0..255 -128..127 0..65535 -32768..32767 -2147483648..2147483647 ! Di luar jangkauan menghasilkan kesalahan! size DEKLARASI VARIABEL Variabel adalah pengenal yang mampu menyimpan beberapa nilai (angka, string, dll.) dan mengubahnya selama operasi program. Sintaks: Var<имя переменной> : <тип переменной>; nama_program program; Menggunakan bagian plugin; bagian deklarasi variabel var; Mulailah Bagian utama dari program; akhir. Ruang yang dicadangkan dalam memori komputer untuk 3 variabel 18 MENGATUR NILAI KE VARIABEL Untuk mengatur nilai variabel, Anda harus menggunakan operator penugasan:= Sintaks rekam:<Переменная> := <Значение>; Nilai 3 dimasukkan ke dalam variabel (integer) bernama A 19 OPERASI DENGAN VARIABEL INTEGER 20 Operasi aritmatika: + - * / Operasi standar: div | modern | sqr Tidak dapat digunakan dengan tipe integer Variabel bernama S diset ke jumlah nilai yang disimpan dalam variabel X dan Y Nilai yang disimpan dalam variabel bernama S ditampilkan di layar LATIHAN 21 1. Tulis program yang menampilkan hasil perkalian bilangan 15 dan 20 2. Tulislah program yang menampilkan nilai fungsi f 2 x 3 y , ketika x=11, y=3 Bahan yang digunakan : Variabel dideklarasikan pada bagian Var Tipe integer disebut Integer Sintaks untuk menetapkan nilai ke variabel adalah:<Переменная> := <Значение> ; Sebuah tanda ditempatkan setelah setiap operator; (kecuali awal dan akhir terakhir) TIPE DATA NYATA Set nilai √ √ Tipe ordinal Tipe nyata Kompatibilitas satu arah: Bilangan Bulat Nyata Nyata! Di luar jangkauan dan ketidakpatuhan terhadap aturan kompatibilitas menyebabkan kesalahan! 22 OPERASI DENGAN VARIABEL NYATA 23 Operasi standar: pi | Kotak | dosa | Karena | perut | exp | Putaran Ln | Trunc (nyata → bilangan bulat) Misalnya (X, S – Tipe nyata): X:= pi/3; S:= Sin(X) * 100; Tulis(Bulat(S)); Rasio nilai yang disimpan dalam variabel X dan Y dimasukkan ke dalam variabel bernama S. Posisi angka dan jumlah karakter di bagian pecahan angka E menunjukkan kekuatan angka. 5.6E-5 = 5.6·10-5 STRING DATA TYPE 24 String adalah kumpulan karakter yang terurut. String diapit oleh apostrof. String tidak kompatibel dengan tipe integer dan real. Ketik Rentang String 255 karakter (Operator string dasar) + (rangkaian) Panjang (S); ( panjang string ) Contoh: X:= 'Vasya'; Write('Dalam nama Anda', Panjang(X), 'menyala.'); S:=X; X:=S; LATIHAN Tulislah program yang menampilkan hasil pembagian bilangan 12,89 dan 0,22 dengan hanya tiga angka penting setelah titik desimal, dengan format sebagai berikut: bilangan pertama dibagi bilangan kedua = hasil Tulis (X:1:3, 'razdelit na' , y:1 :3, ' = ' z:1:3) Bahan yang digunakan: Jenis string disebut String String diapit oleh postrophes String digabungkan dengan tanda + Pada pernyataan tampilan, tipe yang berbeda dipisahkan oleh koma 25 KEYBOARD INPUT 26 Untuk memasukkan informasi dari keyboard, Anda harus menggunakan operator input: Read atau ReadLn. Sintaks: Baca (N1, N2, ... Nn); Di mana N1, N2, ... Nn adalah variabel (integer, real, string) Di variabel X, nilai yang dimasukkan dari keyboard dimasukkan. Setelah memasukkan nilai, Anda harus menekan tombol Enter. Jika ada beberapa variabel di dalamnya operator, mereka dimasukkan dipisahkan oleh spasi atau dengan menekan tombol Enter LATIHAN 27 1. Tulis program kalkulator mini yang menghitung jumlah dua angka yang dimasukkan dari keyboard. 2. Tulis program yang menanyakan nama Anda, dan setelah Anda menulis nama Anda menampilkan salam. Misalnya, jika Anda memasukkan nama Vanya, maka program akan menampilkan kalimat: Halo, Vanya!!! Bahan yang digunakan: Pernyataan input: Baca, Baca OPERATOR OPERATOR KONDISI 29 Operator kondisional mengimplementasikan “pencabangan”, yaitu mengubah urutan eksekusi operator tergantung pada benar atau salahnya suatu kondisi. Kondisi cek NO Tindakan 1 Saya akan pergi ke pantai Hujan YA Tindakan 2 Saya akan membawa payung Tindakan 3 Saya akan pergi ke bioskop PERIKSA KONDISI Operasi perbandingan: > - more< - меньше = - равно >= - lebih besar dari atau sama<= - меньше или равно <>- tidak sama dengan 30 Operasi logis: Tidak Dan Atau - Tidak -Dan - Atau Misalnya: Jika tinggi saya > tinggi Petya, Maka saya lebih tinggi dari Petya Jika (hujan) Atau (turun salju), Maka saya akan tinggal di rumah Jika Tidak ((hujan ) DAN (angin)), maka saya akan jalan-jalan Saat menggunakan operasi logis, kondisinya diapit tanda kurung SINTAKS DARI OPERATOR KONDISI Bentuk singkat: Jika<условие>Kemudian<оператор>; Misalnya, jika nilai pada variabel X kurang dari 0, maka nilai 1 dituliskan pada variabel yang sama: Jika X<0 Then X:= 1; Полная форма: If <условие>Kemudian<оператор_1>kalau tidak<оператор_2>; Contoh: Jika X>5 Maka X:= X - 1 Else X:= X + 1; Hanya satu operator yang dapat digunakan setelah kata Then dan Else Sebelum kata Else, tanda; hilang 31 LATIHAN 32 1. Tulis sebuah program yang menerima jumlah input dalam dolar dan jumlah dalam euro, dan kemudian menampilkan dalam mata uang mana jumlahnya lebih besar (1 dolar = 28 rubel, 1 euro = 35 rubel) 2. Tulis program , yang mengambil tiga angka sebagai input, dan kemudian menampilkan jumlah maksimumnya. Bahan yang digunakan: Bentuk operator kondisional: Jika<условие>Kemudian<оператор>; Jika<условие>Kemudian<оператор_1>Kalau tidak<оператор_2>; Tanda Sebelum Lain; tidak diatur Operasi perbandingan: >< = <> >= <= Логические операции: Not Or And ОПЕРАТОРНЫЕ СКОБКИ Если после слов Then или Else необходимо записать несколько операторов, то их заключают в операторные скобки (составной оператор). Операторные скобки начинаются словом Begin, а заканчиваются словом End; Например: If Z >0 Lalu Mulai X:= 1; Y:= -1; WriteLn('Informasi diterima'); End Else WriteLn('Kesalahan'); 33 OPERATOR PILIH KASUS Pernyataan pilihan digunakan untuk menggantikan konstruksi pernyataan bersyarat bersarang. Sintaks notasi kasus<порядковая_переменная>dari<значение_1> : <оператор_1> ; <значение_2> : <оператор_2> ; ……… <значение_N> : <оператор_N>Kalau tidak<оператор_N+1>; akhir; Anda dapat menggunakan tanda kurung dalam pernyataan pilih String opsional 34 PILIH PERNYATAAN KASUS Kasus Tinggi siswa 16..30: Anda adalah siswa sekolah dasar; 31,32,33 : Kamu kelas 5-6; 34..50: Anda adalah siswa sekolah menengah Koma digunakan untuk mencantumkan nilai, titik dua digunakan untuk memilih rentang Lain Anda jelas bukan siswa; akhir; Kasus x dari -128..-1: writeln('Negatif'); 0: writeln('Nihil'); 1..127: writeln('Positive') Else WriteLn('Out of range'); akhir; 35 LATIHAN Tulislah sebuah program yang, diberi nomor, menampilkan hari yang sesuai dalam seminggu. Misalnya, masukkan angka 2, program harus menampilkan 'Tuesday'. Jika angkanya di luar 1..7, maka harus ditampilkan pesan bahwa tidak ada hari seperti itu. Bahan yang digunakan: Operator seleksi: Kasus<порядковая_переменная>dari<значение_1> : <оператор_1> ; ……… <значение_N> : <оператор_N>; Kalau tidak<оператор_N+1>; akhir; 36 SIKLUS 37 Algoritma disebut siklik, di mana eksekusi beberapa operator dilakukan berulang kali dengan data modifikasi yang sama (misalnya, prosedur untuk mengalikan angka melalui penjumlahan bergandanya). Ada tiga pernyataan loop dalam Pascal: For (loop dengan parameter atau untuk jumlah pengulangan yang ditentukan) While (WHILE loop) Repeat (BEFORE loop) Jika jumlah pengulangan diketahui, maka lebih baik menggunakan operator loop dengan sebuah parameter. LOOP WITH PARAMETER 38 Loop untuk jumlah pengulangan tertentu dengan menaikkan atau menurunkan nilai parameter For (param) := (start_value) To (end_value) Do (operator) ; Loop body Keterangan Parameter adalah tipe bilangan bulat; Anda dapat menggunakan tanda kurung operator dalam satu lingkaran; Anda tidak dapat mengubah parameter loop di badan loop; Parameter siklus bertambah satu; Nilai awal > nilai akhir, jika tidak, badan loop akan diabaikan; Untuk mengurangi parameter, sebagai ganti To, gunakan DownTo. LOOP DENGAN PARAMETER 39 Tulislah program yang meminta bilangan bulat (a,b), dimana a := <нач_зн>Ke<кон_зн>Melakukan<оператор>; Parameternya adalah tipe integer (biasanya Integer); Anda dapat menggunakan tanda kurung operator dalam satu lingkaran; Parameter loop bertambah satu 40 WHILE LOOP Perulangan While pertama-tama menguji kondisi, dan hanya jika true akan mengeksekusi badan perulangan. while (kondisi) do (pernyataan); Di badan kode yang ditulis di bawah ini, loop tidak akan pernah dieksekusi: x:=1; Sementara x>1 lakukan x:=x-1; Anda bisa mendapatkan loop tak terbatas. Misalnya: x:=1 While x>0 do x:=x+1; 41 WHILE LOOP Program yang menampilkan penjumlahan bilangan dari a sampai b. Meskipun tidak ditekan, lakukan begin Delay(2000); akhir; Putaran berjalan hingga variabel perubahan f menjadi lebih besar dari nilai b 42 LATIHAN 43 1. Para astronot memutuskan untuk menanam pohon birch di bulan, dan setiap tahun untuk menggandakan jumlah pohon birch, pada tahun pertama mereka menanam 3 pohon birch. Cetak di layar dalam berapa tahun jumlah pohon birch akan melebihi 10.000 2. Tulis program yang menentukan jumlah maksimum angka yang dimasukkan dari keyboard (masukan angka diakhiri dengan angka 0). Di bawah ini adalah tata letak layar yang disarankan: Masukkan angka. Masukkan 0 untuk melengkapi entri 89 15 0 Jumlah maksimal adalah 89. Material yang Digunakan: While Loop Statement: While<условие>Mengerjakan<оператор>; Perulangan While pertama-tama menguji kondisi, dan hanya jika itu benar akan mengeksekusi bagian utama perulangan. REPEAT LOOP 44 Repeat loop pertama-tama mengeksekusi loop body dan baru kemudian memeriksa kondisinya Repeat (loop_body) Hingga (kondisi); Tidak perlu menggunakan pernyataan majemuk di loop Ulangi, karena konstruksi ini menyediakan eksekusi bukan hanya satu, tetapi beberapa pernyataan yang dilampirkan di antara kata Ulangi dan Sampai. REPEAT LOOP ("Sampai nanti") Program yang menampilkan jumlah angka dari a sampai b. Loop berjalan hingga variabel yang berubah f menjadi lebih besar dari nilai b 45 PERBANDINGAN LOOP Untuk While Repeat 46 Pilihan model loop hanya bergantung pada kenyamanan penggunaannya dalam situasi tertentu. Kita hampir selalu dapat menggunakan jenis perulangan lain, bukan satu LATIHAN Hitung nilai fungsi y x 3 x 2 16 x 43 untuk x bervariasi dalam rentang dari -4 hingga 4 inklusif dengan langkah 0,5. Materi yang digunakan: Loop statement Ulangi: Ulangi<тело_цикла>Sampai<условие>Perulangan Pengulangan pertama-tama mengeksekusi badan perulangan, dan baru kemudian memeriksa kondisi 47 GANGGUAN SIKLUS 48 Prosedur digunakan untuk kontrol fleksibel operator siklik: Putus - keluar dari perulangan; Lanjutkan - penyelesaian siklus berikutnya; Contoh: Temukan angka minimum i yang jumlah angka dari 1 sampai i lebih besar dari 100. Begitu s (jumlah angka dari 1 sampai i) menjadi lebih besar dari 100, pernyataan break dipicu dan loop keluar . s:=0; for I:= 1 to 100 do begin if s>100 then break; s:= s + i; akhir; Writeln('bilangan minimum i sehingga (1+2+..+i)>100 sama dengan ',i); 10 angka dimasukkan dari keyboard dan jumlah angka positif saja yang dianggap dalam lingkaran. Jika angkanya negatif, maka pernyataan continue dieksekusi, yang memulai pengulangan berikutnya. s:=0; untuk I:= 1 sampai 10 lakukan begin Readln(k); jika k<0 then Сontinue; s:= s + k; end; Writeln (‘Сумма положительных чисел равна ’,s); МАССИВЫ МАССИВЫ 50 Простые типы: одна переменная – одно значение Структурированные типы: одна переменная – несколько значений Массив – это фиксированное количество значений одного типа. Доступ к конкретному значению осуществляется через индекс. Переменная массива Структура массива: A= Доступ к массиву: 0 1 2 3 Индекс 9 7 0 0 Значения <Имя массива> [ <Индекс>] A := 7; ARRAY Sebuah array dideklarasikan di bagian Var: (Name) : Array [ (start_value) .. (end_value) ] of (type) ; Contoh deklarasi array: Var A: Array of String; B: Susunan Nyata; C: Larik Bilangan Bulat; Contoh pengisian array dengan nilai: A:='Vasya'; A:='Petya'; A:='Masha'; A:='Olesya'; Menulis sebuah); Untuk f:=1 hingga 10 lakukan C[f] := f*2; Untuk f:=1 hingga 10 lakukan WriteLn(C[f]); 51 LATIHAN 52 Tulis sebuah program yang meminta pengguna untuk 7 bilangan bulat dan menyimpannya dalam sebuah array. Array berisi elemen maksimum dan ditampilkan di layar. Contoh: Masukkan angka ke-1: 4 Masukkan angka ke-2: 8 Masukkan angka ke-3: 9 Masukkan angka ke-4: 2 Masukkan angka ke-5: 4 Masukkan angka ke-6: 5 Masukkan angka ke-7: 0 Jumlah maksimum: 9 Material yang digunakan: Deklarasi array:<Имя>:Himpunan[<нач_зн> … <кон_зн>] dari<тип>; Akses larik:<Имя массива> [ <Индекс>] RANDOM NUMBER GENERATOR (RNG) Untuk menghasilkan angka acak dalam program, digunakan operator berikut: Randomize – Inisialisasi RNG. Itu dideklarasikan hanya di awal program; Acak - menghasilkan angka acak dari 0 hingga 1 (tipe nyata); Acak (N) - menghasilkan angka acak dari 0 hingga N-1 (tipe bilangan bulat); 53 MULTIDIMENSIONAL ARRAY 54 Daftar interval untuk setiap dimensi array (Name) : Array [ (start_value) .. (end_value) , (start_value) .. (end_value) , (etc) ] of (type) ; Contoh mendeklarasikan array dua dimensi (matriks, tabel) dengan 4 baris dan 6 kolom: Var A: Array of Integer; Contoh pengisian array: For i:=1 to 4 do For j:=1 to 6 do A := i+j; Ai , j 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8 6 7 8 9 7 8 9 10 LATIHAN Tulis program yang mengisi larik dua dimensi dengan bilangan acak dari -10 hingga 20 dan mencetak hasil penjumlahannya dari elemen yang terletak di sepanjang diagonal tabel. Bahan yang digunakan: RNG initialization: Randomize Random number from 0 to N-1: Random (N) 55 WORKING WITH FILES WORKING WITH FILES 57 [email dilindungi]$ku⌂|"Hd9v*9(L*M=BYGRMxduB █ 8e*BOtCDrTVzHGJ1aBD>@B\(r8sE) █ :wcJvAmRa"v/.Wai;$`SWI=y2]suB █ ?Hq>vF(LmBcV^Adz4P4 .6b]o(QkВ8 █ cu<6`8Z":M^1;:8ANwak;,b2-4…u5 █ 2]suB?Hq>vF(LmBcAdz4wcP]o(QkВ █ 8c8df]e"v,su>+),VAEFБjFV,W$Q- █ y0G1GjN$-eБ|sqZ0`QnВ%\BD%y █ █ █ - terminator baris █ - file terminator Variabel Membuat, membaca, menulis, menutup BEKERJA DENGAN FILE Urutan tindakan saat bekerja dengan file: 1. Mendeklarasikan variabel file (FP); 2. Mengaitkan FP dengan file; 3. Membuka file untuk membaca/menulis; 4. Operasi dengan file; 5. Menutup file (koneksi antara file dan FP juga terputus); 1. Deklarasi FP<Имя>: File dari<тип> ; <Имя>:teks; Varf: Teks; h: File bilangan bulat; 2. Asosiasi FP dengan file Assign (<ФП>, <имя файла>); Assign (f, 'c:\my\Data.ghm') 58 BEKERJA DENGAN FILE 3. Membuka file untuk membaca/menulis Reset (<ФП>); - membuka file untuk membaca Rewrite (<ФП>); - membuka file untuk menulis 4. Operasi dengan file Baca (<ФП>, <П1> , <П2>, …); - membaca ke dalam variabel<П1>, <П2>dll. satu elemen pada posisi penunjuk. Menulis(<ФП> , <П1> , <П2>, …); - menulis nilai variabel ke file<П1>, <П2>dll. satu elemen pada posisi penunjuk. Eoln(<ФП>); - mengembalikan True jika akhir string telah tercapai. EoF(<ФП>); - mengembalikan True jika akhir file telah tercapai. 5. Menutup file Tutup (<ФП>); 59 BEKERJA DENGAN FILE Sederhanakan program jika diketahui bahwa matriksnya adalah 5x5 (gunakan perulangan For) 60 LATIHAN 61 Tulis program "DOM-3". File pertama berisi nama-nama peserta dalam kasus nominatif. Yang kedua, nama yang sama, tetapi dalam akusatif. Yang ketiga - daftar ekspresi perasaan atau semacam tindakan (mencintai, tidak mencintai, mencium, ingin menggigit, mencintai, menghormati, membenci, ingin melihat, berpelukan). Program harus secara acak mengambil informasi dari file-file ini dan membuat yang baru sesuai dengan prinsip berikut:<имя в им. пад> <чувство/действие> <имя в вин. пад>Olga mencintai Sergey Oleg ingin melihat Roman Katya menghormati Nastya Dll. Materi yang digunakan : Nama operator : Assign, Rewrite, Reset, Write, Read, Close. GRAFIS GRAFIS Untuk bekerja dengan grafis di Pascal, diperlukan dua file - modul graph.tpu dan driver adaptor grafis egavga.bgi. Yang pertama ada di direktori \UNITS dan yang kedua ada di direktori \BGI. ! driver egavga.bgi. Diperlukan saat menjalankan file exe! Untuk menggambar, Anda perlu: 1. menghubungkan modul GRAPH (di bagian Penggunaan); 2. menginisialisasi grafik (InitGraph); 3. menggambar sesuatu; 4. tutup mode grafis (CloseGraph) 63 GRAPHICS Inisialisasi mode grafis Buat garis. Pena bergerak dari titik (0,0) ke titik (639, 479). PROGRAM Primer_1; Gunakan Grafik, crt; VarGd,Gm: Integer; MULAI Gd:=0; InitGraph (Gd,Gm,'d:\BP\bgi"); Line (0,0,639,479); ReadKey; CloseGraph; END. 639 px. Sistem koordinat 479 px. segitiga 2. Gambar persegi panjang di tengah layar dengan sisi dua kali lebih kecil dari sisi yang sesuai pada layar Bahan yang digunakan: Modul grafis: Grafik Inisialisasi Grafik: InitGraph Menutup mode grafik: CloseGraph;GRAPHICS + COLOR SetColor(Warna: kata);Mengatur warna pena GetColor: kata; Mengembalikan warna pena SetBkColor(warna: kata); Mengatur warna latar belakang GetBkColor: kata; Mengembalikan warna latar belakang Warna Hitam Biru Hijau Cyan Merah Magenta Brown LightGray DarkGray LightBlue LightGreen LightCyan LightRed LightMagenta Yellow White 66 - hitam - biru - hijau - cyan – merah – ungu – coklat – abu-abu muda – abu-abu tua – biru langit – hijau muda – cyan muda – merah muda – ungu muda – kuning – putih PRIMITIES GRAFIS Garis (x, y); Menarik garis dari koordinat pena saat ini ke koordinat (x,y). Pindah Ke(x, y); Setel pena ke koordinat (x,y). PutPixel(x, y, Warna); Menggambar titik pada koordinat (x,y) dengan Warna. GetPixel(x,y): kata; Mengembalikan warna titik pada koordinat (x,y). Persegi Panjang (x1, y1, x2, y2); Menggambar garis luar persegi panjang. Lingkaran (x, y, r); Menggambar lingkaran dengan pusat di (x,y) dan jari-jari r. SetLineStyle (Ln, 0, T) Mengubah parameter garis luar. Ln - gaya garis (0..3): 67 x1, y1 T - ketebalan garis: 1 = normal; 3 = tebal. FillEllipse(x, y, xr, th); Menggambar elips terisi yang berpusat di (x,y) dengan jari-jari Xr dan Yr. SetFillStyle(Tipe, Warna); Mengatur tipe (0..11) dan warna penetasan dari bentuk tertutup ClearDevice; Membersihkan layar grafis melukisnya dengan warna latar belakang saat ini x2, y2 PRIMITIF GRAFIS 68 LATIHAN 69 1. Tulis program menggambar rumah di layar monitor; 2. Tulis program yang menggambar langit berbintang di layar monitor dengan bintang dengan radius acak (dari 1 hingga 5 piksel) dan lokasi acak. Warnanya juga acak (putih, abu muda, abu tua); Bahan yang digunakan: SetColor(Warna: kata); - Mengatur warna gambar SetBkColor (warna: kata); - Mengatur warna latar belakang saat ini. baris(x, y); - Menarik garis dari koordinat pena saat ini ke koordinat (x,y). Pindah Ke(x, y); - Mengatur pena ke koordinat (x,y). PutPixel(x, y, Warna); - Menggambar titik dengan koordinat (x,y) dengan Warna. Persegi Panjang (x1, y1, x2, y2); - Membangun garis persegi panjang dari garis warna saat ini. Lingkaran (x, y, r); - Menggambar lingkaran dengan pusat di (x,y) dan jari-jari r. FillEllipse(x, y, xr, th); - Menggambar elips terisi yang berpusat di (x,y) dengan jari-jari Xr dan Yr. GRAFIS + ANIMASI Jeda dalam mdetik. 70 SUBPROGRAM SUBPROGRAM Subrutin memungkinkan Anda memilih bagian berulang dari kode ke dalam fragmen terpisah dan memasukkannya ke tempat yang diperlukan dalam program. Fungsi, tidak seperti prosedur, mengembalikan hasil panggilan. Prosedur Fungsi Subrutin: ditulis di antara kata kunci Mulai Akhir; diidentifikasi dengan nama, yang ditulis sesuai dengan aturan untuk menentukan pengidentifikasi; dapat memiliki parameter input dan output; ulangi sepenuhnya struktur program utama. 72 Program Saya; Subrutin 1 [Kode subrutin 1] Subrutin 2 [Kode subrutin 2] Mulai Subrutin 2 Subrutin 1 Contoh rutinitas sistem: Write("OK"); ClrScr; Panjang (S); acak; // // // // prosedur dengan satu parameter prosedur tanpa parameter fungsi dengan satu parameter fungsi tanpa parameter Subrutin 2 Akhir. SUBPROGRAM (SPR) Penyusunan subprogram Program Subprogram 1 Subprogram 3 Subprogram 4 Subprogram 2 . Nama variabel yang dijelaskan dalam DEP mungkin sama dengan nama variabel dari DEP lain (variabel yang sama dapat dideklarasikan di setiap DEP). Nama variabel yang dijelaskan dalam PPR melindungi variabel dengan nama yang sama dari PPR yang menyertakan variabel yang diberikan (jika variabel yang sama dideklarasikan dalam PPR1 dan PPR3, maka variabel ini akan menjadi unik di setiap PPR). Variabel program disebut global, dan variabel subprogram disebut lokal. PROSEDUR TANPA PARAMETER Rekam sintaks: Prosedur (nama prosedur); (Bagian variabel, konstanta, tipe, label, modul) Begin (Prosedur tubuh); akhir; Contoh penggunaan prosedur tanpa parameter: 74 PROSEDUR TANPA PARAMETER Contoh variabel keluar dengan nama yang sama: Program My_program; Menggunakan crt; varA:string; // Deskripsi prosedur Prosedur_Prosedur Saya; varA:string; Mulai A:= "Subrutin"; WriteIn(A); akhir; Mulai A:= "Tubuh"; WriteIn(A); prosedur_saya; WriteIn(A); akhir. // Pemanggilan prosedur 75 PROSEDUR DENGAN PARAMETER 76 Untuk membuat subrutin lebih universal, digunakan mekanisme khusus untuk pertukaran data antara program dan subrutinnya. Prosedur sistem dengan parameter: SetColor (Merah); ( Prosedur dengan Rectangle (0, 0, 639, 479); ( Prosedur dengan InitGraph (Gd,Gm,'d:\BP\bgi"); ( Prosedur dengan ( parameter satu parameter ) beberapa parameter ) beberapa tipe berbeda ) ) Perekaman prosedur sintaks dengan parameter Prosedur (Nama) ((Area variabel input) Var (Area variabel output (setiap variabel memiliki Var sendiri))); Struktur area: Variabel_1, Variabel_2, … : Jenis; .. ......... ............. Variable_N-1, Variable_N, ... : Type; Setiap daerah mungkin tidak ada PROSEDUR DENGAN PARAMETER Menggunakan parameter input Prosedur untuk menggambar persegi panjang yang membatasi layar, warna yang ditentukan Tanpa parameter Dengan parameter Prosedur Cir; Begin SetColor (i); SetBkColor (b); Rectangle (0, 0, 639, 479); End; Prosedur Cir (i, b:Integer); Begin SetColor (i); SetBkColor (b); Rectangle (0, 0, 639, 479); End; Memanggil prosedur dalam program: Memanggil prosedur dalam program: i:=6; b:=12; Cir; Cir (6, 12);77 PROSEDUR DENGAN PARAMETER Menggunakan parameter output dari Prosedur ra mengubah sudut dari derajat ke radian. PROGRAM EX_26_3; VAR x,a: nyata; PROSEDUR Rad(alfa: nyata; var betta: nyata); (variabel keluaran) BEGIN Betta:= pi*alfa/180; AKHIR; BEGIN Write("Masukkan sudut dalam derajat: "); readln(x); Rad(x, a); (Pemanggilan prosedur) Writeln("Dia sama dengan sudut dalam radian = ",a:6:4); AKHIR. 78 LATIHAN 79 1. Tulis prosedur menggambar segitiga dengan format berikut: Segitiga (x1,y1, x2,y2, x3,y3, Warna) 2. Tulis prosedur menghitung luas persegi panjang berikut ini format: SRect (a, b, S) dimana, S adalah parameter output dari prosedur. Bahan yang digunakan: Prosedur (Nama) ((Area variabel input) Var (Area variabel output)); Struktur area: Variable_1, Variable_2, … : Type; ............... ......... Variable_N-1, Variable_N, … : Type; FUNGSI 80 Sintaks fungsi Fungsi ((Area variabel input) Var (Area variabel output)): (Tipe) ; Desain prosedur Desain fungsi Prosedur S(a,b:nyata; var s:nyata); Mulai s:= a+b; akhir; Fungsi Jumlah(a,b: nyata): nyata; Jumlah Awal:= a+b; akhir; Pemanggilan prosedur Pemanggilan fungsi S(10, 20, A); Menulis sebuah); J:= S(10, 20); WriteLN(A); WriteLN (S(20, 30)); Dianjurkan untuk merancang beberapa subrutin sebagai fungsi hanya jika beberapa hasil pekerjaannya diharapkan. Jika subrutin difokuskan hanya untuk melakukan urutan tindakan tertentu (menampilkan, menggambar, dll.), Lebih baik menuliskannya sebagai prosedur. LATIHAN Tulis fungsi untuk menghitung luas persegi panjang dengan format berikut: SRect (a,b) Bahan yang digunakan: Fungsi (Nama) ((Input variabel luas) Var (Output variabel luas)): (Tipe) ; Struktur area: Variable_1, Variable_2, … : Type; ........................ Variable_N-1, Variable_N, … : Type; 81 MODUL MODUL 83 Unit (UNIT) adalah unit program independen yang sumber dayanya (prosedur dan fungsi) dapat digunakan oleh program lain. ProgramMy1; Menggunakan Module1, Module2 ; ________________________________________ __________________________ ________________________________ __________________ MODUL 1 Resource Kit 1 … Program My2; Menggunakan Module1, Module2 ; ________________________________________ __________________________ ________________________________ __________________ MODUL N Resource set N Modul terhubung ke program melalui bagian USES MODULES. STRUKTUR 84 Modul ini terdiri dari bagian-bagian berikut: 1. Header modul. 2. Bagian antarmuka. (deskripsi objek yang terlihat) 3. Bagian Implementasi. (deskripsi objek tersembunyi) 4. Bagian inisialisasi (opsional). Satuan (nama Modul); Antarmuka ( Bagian variabel global, konstanta, tipe) ( Modul ) ( Daftar header prosedur dan fungsi ) Implementasi ( Bagian variabel lokal, konstanta, tipe) ( Implementasi prosedur dan fungsi ) Mulai ( Bagian inisialisasi ) Akhir. ! Nama header modul harus cocok dengan nama file modul! MODUL Contoh modul: Unit My_Unit; Varms Antarmuka: Array Nyata; ( Array global ) Fungsi Cub(x:integer):Integer; ( Fungsi Cub = x^3 ) Fungsi ext4(x:integer):Integer; ( Fungsi ext4 = x^4 ) Fungsi Implementasi Cub(x:integer):Integer; ( Implementasi fungsi Cub ) Begin Cub:= x*x*x; akhir; Fungsi Ext4(x:bilangan bulat):Bilangan bulat; ( Implementasi fungsi ext4 ) Begin Ext4:= x*x*x*x; akhir; akhir. 85 LATIHAN 86 Menulis modul dengan satu fungsi dan satu prosedur: ( Perhitungan fungsi X1=1/x ) X1(a:real):real; ( Tata cara mencetak kata S pada layar, pada posisi X, Y WriteXY(S: String; X, Y: Iteger); Bahan yang digunakan (struktur modul): Unit (Nama modul); Antarmuka ( Bagian dari variabel global, konstanta, tipe) ( modul ) ( Daftar tajuk prosedur dan fungsi ) Implementasi ( Bagian variabel lokal, konstanta, tipe) ( Implementasi prosedur dan fungsi ) Mulai ( Bagian inisialisasi ) Akhir. )

Topik pelajaran: Bahasa pemrograman "PASCAL" Editor teks bahasa.

IT-guru

Sekolah GBOU No. 293 dinamai menurut namanya. PADA. TVardovsky, Moskow

Bakhtinova Natalia Valerievna


Tujuan pelajaran :

  • Untuk membentuk informasi pertama tentang bahasa Pascal; Pelajari cara menggunakan editor teks Pascal .

Informasi sejarah tentang bahasa Pascal

  • Bahasa pemrograman Pascal mendapatkan namanya untuk menghormati matematikawan dan fisikawan Prancis yang hebat Blaise Pascal, yang pada tahun 1642. menemukan mesin hitung untuk operasi aritmatika, yang disebut "roda Pascal". Pada akhir tahun 1968, Profesor Wirth dan kolaboratornya di Institut Teknologi Federal Swiss di Zurich mengembangkan versi pertama bahasa Pascal. Dua tahun kemudian - versi pertama dari kompiler. Pada tahun 1971, Wirth menerbitkan deskripsi bahasanya.

Blaise Pascal - ahli matematika, mekanik, fisikawan, penulis, dan filsuf Prancis


Menciptakan Pascal Wirth mengejar dua tujuan:

  • pertama, untuk mengembangkan bahasa yang sesuai untuk pengajaran pemrograman sebagai suatu disiplin yang sistematis;
  • kedua, implementasi bahasa harus efisien dan dapat diandalkan.
  • Salah satu kelebihan bahasa Pascal adalah sepenuhnya mewujudkan gagasan pemrograman terstruktur, yang intinya terletak pada kenyataan bahwa dengan bantuan beberapa konstruksi, pada prinsipnya, algoritma apa pun dapat diekspresikan.

Niklaus Wirth (Jerman Niklaus Wirth, lahir 15 Februari 1934) adalah seorang ilmuwan Swiss, salah satu ahli teori paling terkenal di bidang pengembangan bahasa pemrograman. Pengembang dan pencipta bahasa pemrograman terkemuka Pascal, Modula-2, Oberon.


Meluncurkan Pascal

Untuk menjalankan bahasa Pascal, Anda perlu memuat file PASCAL.EXE yang biasanya terletak di direktori PASCAL.

Misalnya: D:\PASCAL\PASCAL.EXE



  • Pada latar belakang biru kita akan menulis sebuah program.
  • Garis petunjuk ditulis dengan latar belakang abu-abu.
  • Baris atas berisi menu tarik-turun: F pulau kecil, T teks, DI DALAM eksekusi, KE kompilasi, R mode, TENTANG pemasangan, H pengamatan.
  • Untuk masuk ke menu paling atas, tekan F10. Menekan tombol alt dan huruf pertama dari salah satu kata di menu atas akan memperluas jendela. (contoh alt + B)

  • Memasukkan program ke dalam komputer adalah memasukkan teks ke dalam komputer. Perintah yang paling umum digunakan tercantum di bawah ini. editor teks Turbo Pascal.

  • PgUp - naik satu halaman;
  • PgDn - satu halaman ke bawah;
  • Rumah - ke awal baris;
  • Akhir - sampai akhir baris;
  • Ctrl-PgUp - ke awal teks;
  • Ctrl-PgDn - ke akhir teks.

  • Backspace (←) - hapus karakter di sebelah kiri kursor;
  • Del - hapus karakter yang ditunjuk oleh kursor (di sebelah kanan kursor);
  • Ctrl-Y - hapus baris tempat kursor berada;
  • Masuk - masukkan baris baru, potong yang lama;
  • Ctrl-Q L - pulihkan baris saat ini (bertindak jika kursor tidak meninggalkan baris yang diubah).

  • Ctrl-K B - tandai awal blok;
  • Ctrl-K K - tandai akhir blok;
  • Ctrl-K Y - hapus blok;
  • Ctrl-K C - salin blok;
  • Ctrl-K V - pindahkan blok;
  • Ctrl-K W - blok tulis ke file disk;
  • Ctrl-K R - baca blok dari file disk;
  • Ctrl-K P - cetak blok;
  • Ctrl-K H - hapus pilihan blok.

  • Pada tahun berapa versi pertama dari bahasa pemrograman Pascal muncul?
  • Apa kelebihan bahasa Pascal?
  • Tombol apa yang nyaman digunakan untuk memindahkan kursor dengan cepat melalui program dari pojok kiri atas layar ke pojok kanan bawah? (Bagaimana jika sebaliknya?)
  • Apa yang perlu dilakukan untuk menyalin bagian dari suatu program?
  • Apakah mungkin mengembalikan perubahan yang dibuat pada teks program?

Nikolaus Wirth Tetapi salah jika berpikir bahwa Pascal adalah bahasa yang khusus untuk dipelajari. Inilah yang dikatakan N. Wirth (1984) tentang hal ini: “Telah dikemukakan bahwa Pascal dikembangkan sebagai bahasa untuk mengajar. Meskipun pernyataan ini benar, namun penggunaannya dalam pelatihan bukanlah satu-satunya tujuan. Faktanya, saya tidak percaya pada keberhasilan menggunakan alat dan teknik seperti itu selama pelatihan yang tidak dapat digunakan dalam memecahkan beberapa masalah praktis. * *


Bahasa pemrograman Pascal Sejak saat itu, Pascal menjadi semakin populer, tidak hanya sebagai bahasa untuk mengajarkan prinsip-prinsip pemrograman, tetapi juga sebagai sarana untuk membuat program yang cukup kompleks. perangkat lunak. Dalam bentuk aslinya, Pascal memiliki kemampuan yang agak terbatas, tetapi versi lanjutan dari bahasa ini, Turbo Pascal, adalah bahasa pemrograman yang kuat.


Mengapa PASCAL? Bahasa pemrograman Pascal dinamai menurut ilmuwan Prancis Blaise Pascal, yang menemukan mesin hitung mekanis pertama pada tahun 1642. Itu adalah sistem interaksi roda gigi, yang masing-masing sesuai dengan satu digit angka desimal dan berisi angka dari 0 hingga 9. Saat roda berputar penuh, yang berikutnya bergeser satu digit. Mesin Pascal adalah mesin penjumlahan.


Informasi dasar tentang bahasa pemrograman Bahasa adalah sistem tanda. Bahasa komputer (bahasa mesin) adalah sistem tanda biner. Oleh karena itu, agar komputer dapat memahami program tertulis, program tersebut harus diterjemahkan ke dalam bahasa dimengerti komputer. Proses penerjemahan ini disebut translasi.




Lingkungan terintegrasi Turbo Pascal-7.0 Peran besar dalam distribusi massal Pascal dimainkan oleh Borland International. Dia berhasil menciptakan lingkungan pengembangan Turbo yang terkenal. Itu adalah langkah maju yang besar dalam membuat proses pemrograman lebih mudah. Mengapa turbo? Turbo dalam terjemahan dari bahasa gaul bahasa Inggris berarti akselerasi. Kompiler yang merupakan bagian dari Turbo Pascal dengan sangat cepat menerjemahkan program dari bahasa pemrograman menjadi kode mesin.




Sarana utama bahasa Simbol bahasa adalah tanda-tanda dasar yang digunakan dalam penyusunan teks. Alfabet suatu bahasa adalah sekumpulan simbol semacam itu. Alfabet bahasa Turbo Pascal 7.0 meliputi: semua huruf besar latin dan huruf kecil angka arab(0 – 9) karakter + - * / =,. ; : _ () ( ) dan kata bantu lainnya (disimpan).


Untuk merekam perintah, nama fungsi, istilah penjelas Turbo Pascal 7.0, ada sekumpulan kata yang ditentukan secara ketat, yang disebut bantu atau dicadangkan (ini adalah singkatan mnemonik bahasa Inggris). Kata layanan dibagi menjadi tiga kelompok: operator (BACA, WRITELN, dll.) Nama fungsi (SIN, COS, dll.) kata kunci(VAR, BEGIN, END, dll.) Fitur bahasa dasar


Nama suatu nilai adalah penunjukannya, ini adalah kata dari huruf, angka, dan garis bawah, dimulai dengan huruf. Bilangan: bilangan bulat, nyata: titik tetap (-1,23; 654,2), titik mengambang (2, 437,). Enam operasi: + penjumlahan, - pengurangan, / pembagian, * perkalian, mod mencari sisa, pembagian bilangan bulat div.


Ekspresi aritmatika dibangun dari nama, angka, tanda operasi aritmatika, fungsi matematika. Tanda kurung digunakan untuk menunjukkan urutan operasi. Untuk mengkuadratkan, notasi sqr(x) digunakan. Untuk mengekstrak akar kuadrat, notasi sqrt(x) digunakan. Modul ini dilambangkan dengan abs(x).


Operator penugasan Nama variabel:= ekspresi aritmatika. x:= 3,24 atau x:= x+4. Tipe variabel 1. Jika variabel di sebelah kiri bertipe real, maka ekspresi aritmatika dapat bertipe integer atau real. 2. Jika variabel di sebelah kiri bertipe integer, maka ekspresi aritmatikanya hanya integer.


Struktur program di Pascal Bagian 1 - deskripsi data dan operator. Bagian 2 - blok program. Bentuk umum program: Program (nama program) label (daftar label) const (daftar nilai konstanta) tipe (deklarasi tipe data kompleks) var (deklarasi data program) mulai (awal blok program) (algoritma) akhir. (akhir program)


Nama program: tidak lebih dari 8 karakter, dimulai dengan huruf. diakhiri dengan titik. Bagian deskriptif terdiri dari 4 bagian: label, konstanta, nama dan jenis variabel. nama dan jenis variabel var: integer (bilangan bulat), nyata (nyata). Misalnya: var i, j: integer; x: nyata; Deskripsi setiap jenis diakhiri dengan titik koma. Blok program berisi operator yang menjelaskan algoritme untuk memecahkan masalah.


Pernyataan input dan output: baca (daftar nama) - menghentikan program dan menunggu pengguna mengetik angka pada keyboard (dipisahkan dengan spasi) dan tekan ENTER. Misalnya: baca(i, j); Setelah pengoperasian operator ini, kursor ditempatkan setelah angka terakhir tetapi tidak diterjemahkan ke baris baru. Untuk memindahkan kursor ke baris baru setelah memasukkan data, gunakan pernyataan readln(daftar nama). tulis (daftar keluaran) - Menulis data ke layar. Daftar keluaran - nama hasil perhitungan yang dipisahkan koma dan teks penjelasan dalam apostrof. Misalnya: tulis(x=, x); Nomor fixed-point akan dicetak di layar. Misalnya: tulis(x=, x:6:2); layar akan menampilkan angka 6 digit, dua di antaranya setelah titik desimal, (x =). Kursor dipindahkan ke baris baru oleh writeln operator keluaran kosong. readln operator input kosong






Bekerja di Turbo Pascal Alt + F10 - menu File - New - create file baru Enter - harus diletakkan di akhir setiap baris Ctrl + Y - hapus baris Enter - masukkan baris Untuk menjalankan program, pilih Jalankan di menu Penerjemah - menerjemahkan program dari Pascal ke dalam bahasa mesin dan mencari kesalahan sintaks. 1. Jika kesalahan ditemukan, maka editor akan kembali, kursor akan menunjuk ke kesalahan tersebut. 2.Jika tidak ditemukan kesalahan, program dijalankan










Terkadang, setelah kata THEN dan ELSE, Anda perlu mengeksekusi bukan hanya satu, tetapi beberapa pernyataan. Kemudian operator ini diapit oleh tanda kurung operator. Tanda kurung buka adalah kata BEGIN, tanda kurung tutup adalah kata END. Tidak ada titik koma sebelum kata ELSE. Disarankan agar setiap pasangan BEGIN - END ditulis dalam satu kolom. Kondisi IF THEN mulai pernyataan 1; operator 2; pernyataan N akhir ELSE mulai pernyataan 1; operator 2; operator M akhir ;




Program E3; var a,b: bilangan bulat; mulai tulis (masukkan dua bilangan bulat yang dipisahkan oleh spasi, lalu tekan); readln(a,b); jika mod 2 = 0 maka writeln (a genap) else writeln (a ganjil); jika b mod 2 = 0 maka writeln (b - even) else writeln (b - odd); baca akhir.


3 jika a>0 6 jika a 0 6 jika a 0 6 jika a 0 6 jika a0 6 jika a title="3 jika a>0 6 jika a


Program E31; var a, y: nyata; mulai tulis (masukkan angka lalu tekan); readln(a); jika a >0 maka y:=3 selain itu y:=6; tulis(y=,y); baca akhir. 0 lalu y:=3 selain itu y:=6; tulis(y=,y); baca akhir."> 0 then y:=3 else y:=6; write (y=,y); readln end."> 0 then y:=3 else y:=6; write (y=,y); readln end." title="Program E31; var a, y: nyata; mulai tulis (masukkan angka lalu tekan); readln(a); jika a >0 maka y:=3 selain itu y:=6; tulis(y=,y); baca akhir."> title="Program E31; var a, y: nyata; mulai tulis (masukkan angka lalu tekan); readln(a); jika a >0 maka y:=3 selain itu y:=6; tulis(y=,y); baca akhir."> !}


A+b jika a>b a*b jika a b a*b jika a b a*b jika a b a*b jika ab a*b jika a title="a+b jika a>b a* b jika a


Program E32; var a,b,x: nyata; mulai tulis (masukkan dua angka yang dipisahkan oleh spasi lalu tekan); readln(a); jika a >b maka x:=a+b selain itu x:=a*b; tulis(x=,x); baca akhir. b lalu x:=a+b lain x:=a*b; tulis(x=,x); baca akhir."> b then x:=a+b else x:=a*b; write (x=,x); readln end."> b then x:=a+b else x:=a*b; write (x=,x); readln end." title="Program E32; var a,b,x: nyata; mulai tulis (masukkan dua angka yang dipisahkan oleh spasi lalu tekan); readln(a); jika a >b maka x:=a+b selain itu x:=a*b; tulis(x=,x); baca akhir."> title="Program E32; var a,b,x: nyata; mulai tulis (masukkan dua angka yang dipisahkan oleh spasi lalu tekan); readln(a); jika a >b maka x:=a+b selain itu x:=a*b; tulis(x=,x); baca akhir."> !}




Organisasi loop Tindakan berulang dalam pemrograman disebut loop Operator lompatan tanpa syarat goto n, n adalah bilangan bulat (tidak lebih dari 4 karakter), sebuah label. Label diulang sebanyak 3 kali: 1. Pada bagian Label; 2.Dalam pernyataan goto; 3.Sebelum operator yang melakukan lompatan tanpa syarat.


Organisasi siklus dengan bantuan operator transisi bersyarat dan tidak bersyarat. Tugas. Temukan jumlah dari dua puluh angka pertama. (1+2+3….+20). a ………………20 S ………….


Algoritme Euclid: setiap kali kita akan mengurangi angka yang lebih besar dengan nilai yang lebih kecil hingga kedua angka menjadi sama. Contoh: Awal 1 langkah 2 langkah 3 langkah a= 25 b= gcd(a,b)=5


Program E5; var a, b: bilangan bulat; mulai tulis (gcd=,a); baca; akhir. tulis (Masukkan dua bilangan asli yang dipisahkan oleh spasi); readln(a,b); while ab do if a>b then a:=a-b else b:=b-a; b lalu a:=a-b lain b:=b-a;"> b lalu a:=a-b lain b:=b-a;"> b lalu a:=a-b lain b:=b-a;" title="Program E5 ;var a, b: integer;begin write(gcd=,a);readln;end.write(Masukkan dua bilangan asli yang dipisahkan oleh spasi);readln(a,b); while ab do if a>b then a:= a-b lain b:=b-a;"> title="Program E5; var a, b: bilangan bulat; mulai tulis (gcd=,a); baca; akhir. tulis (Masukkan dua bilangan asli yang dipisahkan oleh spasi); readln(a,b); while ab do if a>b then a:=a-b else b:=b-a;"> !}




B lalu a:=a-b; if b>a then b:=b-a tulis (Masukkan dua bilangan bulat positif yang dipisahkan oleh spasi); readln (a,b);" title="Program E6; var a, b: integer; mulai tulis (HOD=,a); readln; end. ulangi sampai a=b; jika a>b maka a :=a-b; if b>a then b:=b-a write (Masukkan dua bilangan asli yang dipisahkan oleh spasi); readln (a,b);" class="link_thumb"> 40 !} Program E6; var a, b: bilangan bulat; mulai tulis (HOD=,a); baca; akhir. ulangi sampai a=b; jika a>b maka a:=a-b; if b>a then b:=b-a tulis (Masukkan dua bilangan bulat positif yang dipisahkan oleh spasi); readln(a,b); b lalu a:=a-b; if b>a then b:=b-a tulis (Masukkan dua bilangan bulat positif yang dipisahkan oleh spasi); readln (a,b);"> b then a:=a-b; if b>a then b:=b-a write (Masukkan dua bilangan asli yang dipisahkan oleh spasi); readln (a,b);"> b lalu a:= a-b ; if b>a then b:=b-a tulis (Masukkan dua bilangan bulat positif yang dipisahkan oleh spasi); readln (a,b);" title="Program E6; var a, b: integer; mulai tulis (HOD=,a); readln; end. ulangi sampai a=b; jika a>b maka a :=a-b; if b>a then b:=b-a write (Masukkan dua bilangan asli yang dipisahkan oleh spasi); readln (a,b);"> title="Program E6; var a, b: bilangan bulat; mulai tulis (HOD=,a); baca; akhir. ulangi sampai a=b; jika a>b maka a:=a-b; if b>a then b:=b-a tulis (Masukkan dua bilangan bulat positif yang dipisahkan oleh spasi); readln(a,b);"> !}




slide 1

BAHASA PEMROGRAMAN PASCAL Bogdanov Vladimir Presentasi gratis http://prezentacija.biz/

slide 3

Bahasa Pascal diciptakan oleh Niklaus Wirth pada tahun 1968-1969 setelah partisipasinya dalam pekerjaan komite pengembangan standar bahasa Algol-68. Bahasa ini dinamai menurut ahli matematika, fisikawan, penulis, dan filsuf Prancis Blaise Pascal, yang menciptakan mesin mekanis pertama di dunia yang menjumlahkan dua angka. Publikasi pertama Wirth tentang bahasa tersebut bertanggal 1970, menyajikan bahasa tersebut, yang penulis tunjukkan sebagai tujuan pembuatannya - konstruksi bahasa kecil dan efisien yang mempromosikan gaya pemrograman yang baik menggunakan pemrograman terstruktur dan data terstruktur. Pekerjaan Wirth selanjutnya ditujukan untuk menciptakan bahasa pemrograman sistem berdasarkan Pascal, sambil mempertahankan kemampuan untuk melakukan kursus pelatihan pemrograman profesional yang sistematis dan holistik atas dasar itu. Hasil dari pekerjaan ini adalah bahasa Modula-2.

slide 4

UCSD Pascal Artikel utama: UCSD Pascal Pada tahun 1978, UCSD p-System dikembangkan di University of California, San Diego, yang menyertakan port compiler Wirth dari Pascal ke dalam p-code portabel, sebuah editor kode sumber, berkas sistem dan seterusnya, serta mengimplementasikan sejumlah besar ekstensi bahasa Pascal, seperti modul, string karakter dengan panjang variabel, arahan terjemahan, penanganan kesalahan I/O, mengakses file berdasarkan nama, dan banyak lagi. Selanjutnya, penerapan utama bahasa Pascal didasarkan pada dialek ini.

slide 5

Object Pascal] Artikel utama: Object Pascal Pada tahun 1986, Apple mengembangkan perluasan objek ke bahasa Pascal, menghasilkan Object Pascal. Itu dikembangkan oleh kelompok Larry Tesler, yang berkonsultasi dengan Niklaus Wirth.

slide 6

Pada tahun 1983, versi pertama lingkungan pengembangan terintegrasi Turbo Pascal Borland muncul, berdasarkan implementasi Pascal dengan nama yang sama. Pada tahun 1989, ekstensi bahasa objek ditambahkan ke Turbo Pascal versi 5.5. versi terbaru(7.0) telah diubah namanya menjadi Borland Pascal. Fasilitas objek dipinjam dari Object Pascal milik Apple, dan hanya ada sedikit perbedaan bahasa antara Object Turbo Pascal 5.5 dan Object Pascal milik Apple. Hampir bersamaan dengan Borland, Microsoft merilis versi bahasa berorientasi objek mereka Pascal.dan] Versi Pascal ini tidak digunakan secara luas. Pengembangan lebih lanjut dari implementasi Pascal dari Borland memunculkan varian Object Pascal dari Borland, kemudian dalam pengembangan lingkungan pemrograman Delphi, yang menerima nama yang sama.

Slide 7

Langkah penting dalam pengembangan bahasa adalah munculnya implementasi gratis dari bahasa Pascal l dan GNU Pascl, yang tidak hanya menyerap fitur dari banyak dialek bahasa lainnya, tetapi juga memastikan portabilitas yang sangat luas dari program yang ditulis di dalamnya ( misalnya, GNU Pascal mendukung lebih dari 20 berbagai platform, di bawah lebih dari 10 berbeda sistem operasi, Free Pascal menyediakan mode kompatibilitas khusus dengan berbagai dialek bahasa yang umum, seperti Turbo Pascal (kompatibilitas penuh), Delphi, dan lainnya). Sejak Delphi 2003, implementasi bahasa telah dibuat untuk platform Net, meskipun pengembang terus menggunakan Delphi dari versi sebelumnya. Tentang pengembangan komersial di Free Pascal, GNU Pascal dan TMT Pascal di saat ini sedikit yang diketahui. Selain itu, Universitas Federal Selatan telah mengembangkan PascalABC.NET, bahasa pemrograman Pascal, yang mencakup sebagian besar fitur bahasa Delphi, serta sejumlah ekstensinya sendiri. Ini didasarkan pada platform Microsoft.NT dan berisi hampir semua fitur bahasa modern: kelas, kelebihan beban operator, antarmuka, penanganan pengecualian, kelas umum dan subrutin, pengumpulan sampah, ekspresi lambda.

Slide 8

Fitur bahasanya adalah pengetikan yang ketat dan ketersediaan alat pemrograman struktural (prosedural). Pascal adalah salah satu bahasa yang pertama. Menurut Wirth, bahasa harus berkontribusi pada pemrograman yang disiplin, oleh karena itu, bersama dengan pengetikan yang kuat, kemungkinan ambiguitas sintaksis diminimalkan dalam Pascal, dan penulis mencoba membuat sintaks itu sendiri intuitif bahkan pada saat pertama kali mengenal bahasa tersebut.

Slide 9

Namun demikian, pada awalnya bahasa tersebut memiliki sejumlah keterbatasan: ketidakmungkinan meneruskan larik dengan panjang variabel ke fungsi, kurangnya sarana normal untuk bekerja dengan memori dinamis, perpustakaan I / O yang terbatas, kurangnya sarana untuk menghubungkan fungsi yang ditulis dalam bahasa lain. bahasa, kurangnya alat kompilasi terpisah, dll. Analisis terperinci tentang kekurangan bahasa Pascal waktu itu dilakukan oleh Brian Kernighan dalam artikel "Mengapa Pascal bukan bahasa pemrograman favorit saya" (artikel ini muncul di awal 1980-an, ketika bahasa Modula-2, keturunan Pascal, dibebaskan dari sebagian besar keburukannya, dan juga dialek Pascal yang lebih berkembang). Beberapa kekurangan Pascal diperbaiki dalam standar ISO 1982, khususnya, array terbuka muncul dalam bahasa tersebut, yang memungkinkan untuk menggunakan prosedur yang sama untuk memproses array satu dimensi dengan berbagai ukuran.

slide 10

Namun, banyak kekurangan dari bahasa tersebut tidak muncul atau bahkan menjadi kelebihan saat belajar memprogram. Selain itu, dibandingkan dengan bahasa pemrograman utama di lingkungan akademik tahun 1970-an (yaitu Fortran, yang memiliki kekurangan yang jauh lebih signifikan), Pascal merupakan langkah maju yang signifikan. Pada 1980-an, Pascal telah menjadi dasar bagi banyak orang kurikulum, dalam beberapa kasus, bahasa pemrograman pengajaran khusus dibuat atas dasar itu, misalnya, pada awal 1980-an di Uni Soviet untuk mengajar anak-anak sekolah dasar-dasar ilmu komputer dan ilmu Komputer Andrey Ershov mengembangkan "bahasa algoritmik pembelajaran" seperti Algolo-Pascal.

slide 11

Implementasi Pascal yang paling terkenal, yang memastikan distribusi dan pengembangan bahasa yang luas, adalah Turbo Pascal dari Borland, yang kemudian berkembang menjadi objek Pascal untuk DOS (dimulai dengan versi 5.5) dan Windows dan selanjutnya menjadi Delphi, di mana ekstensi signifikan dari bahasa diperkenalkan. Dialek Pascal yang digunakan dalam Turbo Pascal untuk DOS dan Delphi untuk Windows menjadi populer karena kurangnya implementasi komersial yang berhasil.

slide 12

Setelah penggunaan Pascal dimulai pada tahun 1970, dan munculnya implementasi yang berbeda tidak hanya dalam penambahan, tetapi juga dalam sintaksis, muncul pertanyaan tentang standarisasi bahasa. Standar bahasa dikembangkan oleh Niklaus Wirth pada tahun 1974 bersama Kathleen Jensen. Kemudian, standar internasional dari ISO dan Amerika dari ANSI diadopsi. Saat ini, ada tiga standar yang berbeda secara fundamental: Unextended Pascal (asli), Extended Pascal (extended), Ekstensi Berorientasi Objek ke Pascal (ekstensi Pascal berorientasi objek).

slide 13

slide 14

Sintaks dan konstruksi bahasa Pascal, dalam bentuk aslinya, adalah bahasa prosedural murni dan mencakup banyak struktur dan konstruksi seperti Algol dengan kata-kata khusus seperti if, then, else, while, for, dll. Namun, Pascal juga mengandung sejumlah besar fitur untuk menyusun informasi dan abstraksi yang tidak ada di Algol-60 asli, seperti definisi tipe, record, pointer, enumerasi, dan set. Konstruksi ini sebagian diwariskan atau terinspirasi dari bahasa Simula-67, Algol-64, yang dibuat oleh Niklaus Wirth AlgolW (Inggris) Rusia. dan disarankan oleh Hoare. Dalam dialek modern (Free Pascal), operasi seperti operator dan kelebihan fungsi tersedia.

slide 15

program p; mulai akhir. Program tidak melakukan apa-apa dan berisi blok pernyataan kosong. Contoh program yang mencetak string "Hello, world!":

slide 16

mulai writeln("Halo, Dunia!"); (operator keluaran jalur) akhir.

slide 17

slide 18

slide 19

slide 20

Dalam Pascal, operasi bitwise diperbolehkan pada tipe integer (byte, shortint, word, integer, longint dan rentangnya). Operasi logis pada bit: Operasi logis yang telah dibahas sebelumnya dapat dilakukan pada bit dari dua operan bilangan bulat: bukan, dan, atau, xor. Perbedaan antara operasi bitwise dan logis adalah bahwa operasi bitwise (bitwise) dilakukan pada masing-masing bit operan, dan bukan pada nilainya dalam representasi desimal (biasanya). Konsep tipe data ordinal (ordinal) dibedakan, ini termasuk tipe integer (bertanda dan tidak bertanda), logis (boolean), karakter (char), tipe enumerasi dan tipe rentang. Tipe ordinal ditentukan oleh bilangan bulat (kode), yang dapat diperoleh dengan menggunakan fungsi ord. Semua operasi yang dilakukan pada tipe ordinal dilakukan pada kodenya.

slide 21

slide 22

Untuk tipe ordinal, operasi inc, dec, succ, pred, ord, operasi perbandingan (=>

slide 23

slide 24

slide 25

Dalam Pascal Jensen dan Wirth, string direpresentasikan sebagai kumpulan karakter; oleh karena itu, mereka memiliki panjang tetap dan biasanya dilapisi dengan spasi sepanjang itu. Dalam Pascal modern, untuk bekerja dengan string, string tipe bawaan digunakan, yang mendukung penggabungan (+) dan perbandingan (> =

slide 26

Tipe string [n] atau hanya string dalam dialek bahasa tahun 1970-1990-an didefinisikan sebagai array karakter array char (n default ke 80 di UCSD Pascal dan 255 di Turbo/Borland Pascal), karakter null kode dalam representasi ini berfungsi untuk mengatur panjang string, masing-masing, yang bisa dimiliki string ukuran maksimum 255 karakter. Secara default, di Delphi dan FreePascal, tipe AnsiString digunakan sebagai String, memori yang dialokasikan dan dibebaskan secara dinamis oleh kompiler, dan ukuran string maksimum dalam implementasi saat ini adalah 2 gigabyte. Selain itu, di Delphi dan Free Pascal, tipe WideString dapat digunakan sebagai string, di mana representasi karakter 16-bit dalam pengkodean UCS-2 digunakan, sementara tidak ada cara untuk mengubah dari string byte tunggal ke string multibyte. dan sebaliknya di perpustakaan standar bahasa.

slide 27

Tipe baru dapat didefinisikan dari yang sudah ada: type (bagian deklarasi tipe) x = Integer; y=x;

slide 28

Selain itu, tipe komposit dapat dibangun dari tipe primitif: tipe ( bagian deklarasi tipe ) a = Array of Integer; ( definisi array ) b = record ( definisi record ) x: Integer; y: Char; akhir; c = File dari a; (definisi berkas)

slide 29

Jenis file dalam Pascal terbagi menjadi bertipe, teks dan file tanpa tipe. Seperti yang ditunjukkan pada contoh di atas, file yang diketik dalam Pascal adalah urutan elemen dari tipe yang sama. Untuk setiap file, ada variabel buffer pointer, dilambangkan dengan f^. Prosedur get (untuk membaca) dan put (untuk menulis) memindahkan pointer ke elemen berikutnya. Membaca diimplementasikan sehingga read(f, x) sama dengan get(f); x:=f^. Dengan demikian, penulisan diimplementasikan sedemikian rupa sehingga write(f, x) sama dengan f^ := x; letakkan (f). Teks file teks didefinisikan sebagai perpanjangan dari file tipe char dan, selain operasi standar pada file yang diketik (membaca, menulis karakter), memungkinkan input / output karakter ke file dari semua tipe data, mirip dengan input / output konsol.

slide 30

File tanpa tipe dideklarasikan sebagai variabel dari file tipe. Dengan mereka, dimungkinkan untuk melakukan operasi byte-by-byte I / O yang tidak diketik untuk beberapa blok byte dengan panjang tertentu melalui buffer; untuk ini, prosedur blockread dan blockwrite khusus (ekstensi UCSD) digunakan.

slide 31

slide 32

slide 33

slide 34

slide 35

Pointer Pascal mendukung penggunaan pointer (typed ^type dan untyped pointer): type a = ^b; b = rekam x: bilangan bulat; y: Char; z:a; akhir; var pointer_to_b:a;

slide 36

Di sini variabel pointer_to_b adalah pointer ke tipe data b, yang merupakan record. Jenis penunjuk yang diketik dapat ditentukan sebelum deklarasi jenis yang dirujuknya. Ini adalah pengecualian dari aturan bahwa segala sesuatu harus dideklarasikan sebelum dapat digunakan. Pengenalan pengecualian ini memungkinkan untuk mengatur definisi berulang dari struktur data, termasuk seperti daftar linear, tumpukan dan antrian, termasuk pointer ke entri dalam deskripsi entri ini (lihat juga: null pointer - nil). Pointer yang diketik memiliki operasi dereferensi (sintaksnya: pointer^). Untuk membuat rekor baru dan tetapkan nilai 10 dan karakter A ke bidang x dan y di dalamnya, diperlukan pernyataan berikut:

Slide 37

baru(pointer_to_b); ( alokasi pointer ) pointer_to_b^.x:= 10; (dereferensi penunjuk dan akses bidang rekaman) pointer_to_b^.y:= "A"; pointer_to_b^.z:= nihil; ... buang(pointer_to_b); (membebaskan memori dari bawah pointer)

slide 38

Anda juga dapat menggunakan pernyataan with untuk merujuk ke bidang dalam rekaman dan objek, seperti yang ditunjukkan dalam contoh: new(pointer_to_b); dengan pointer_to_b^ mulai x:= 10; y:= "A"; z:= nihil akhir; ... buang(pointer_to_b);

Slide 39

Tipe prosedural Dalam bahasa asli Pascal Jensen dan Wirth, tipe prosedural hanya digunakan saat mendeskripsikan parameter formal. Sudah di TP ada tipe prosedural lengkap. Deklarasi tipe berisi tajuk prosedur atau fungsi (tanpa nama), yang secara umum menggambarkan antarmuka subrutin. Nilai tipe ini berisi pointer ke subrutin dengan judul yang sesuai dengan yang dideklarasikan dalam deklarasi tipe. Pengidentifikasi variabel dapat digunakan untuk memanggil prosedur atau fungsi yang sesuai.

slide 40

Pascal adalah bahasa pemrograman terstruktur, yang berarti bahwa sebuah program terdiri dari pernyataan standar individual yang dieksekusi secara berurutan, idealnya tanpa menggunakan perintah GOTO.

slide 41

Sementara, untuk, jika, pernyataan kasus, sebuah blok dapat digunakan sebagai pernyataan yang dieksekusi. Konstruksi seperti itu, yang merupakan pernyataan atau blok biasa, disebut pernyataan kompleks. Di Turbo Pascal, untuk mengontrol proses kompilasi, ada arahan yang ditempatkan di komentar dan memungkinkan Anda untuk beralih mode operasi kompiler - misalnya, aktifkan dan nonaktifkan pemeriksaan operasi I / O, luapan:

slide 42

Dalam Pascal, subrutin dibagi menjadi prosedur dan fungsi: Secara sintaksis, prosedur dan fungsi terdiri dari header (berisi kata kunci prosedur atau fungsi, nama yang dapat diikuti dengan deskripsi parameter yang akan diteruskan dalam tanda kurung, tipe pengembalian, dipisahkan oleh karakter titik dua untuk fungsi, dan titik koma untuk prosedur ), header diikuti oleh badan diikuti oleh karakter ;.

slide 43

Tubuh prosedur, seperti program, pada gilirannya dapat berisi deskripsi prosedur dan fungsi. Dengan demikian, prosedur dan fungsi dapat disarangkan satu sama lain sedalam yang diinginkan, sedangkan badan program adalah yang paling atas dalam rantai. Selain itu, isi bagian deskripsi variabel, tipe, konstanta, badan eksternal (prosedur, fungsi, program) yang terletak sebelum deskripsi prosedur/fungsi tersedia di dalamnya. Juga, di sebagian besar dialek, Anda dapat mengakses parameter prosedur eksternal dari suatu prosedur. Mengikuti tajuk prosedur/fungsi, alih-alih badan, kata kunci maju dapat ditempatkan, hal ini dilakukan jika deskripsi prosedur/fungsi terletak di program setelah pemanggilannya, dan dikaitkan dengan kemungkinan kompilasi program dalam satu lintasan didukung di Pascal. Prosedur berbeda dari fungsi di mana fungsi mengembalikan nilai, sedangkan prosedur tidak.

slide 44

Sebelum munculnya modul yang terhubung di dalamnya bentuk modern beberapa implementasi modularitas yang didukung Pascal karena mekanisme untuk menyertakan file header, mirip dengan mekanisme #include dalam bahasa C: menggunakan direktif khusus yang diformat sebagai komentar semu, misalnya, ($INCLUDE "file"), isinya dari file yang ditentukan langsung dimasukkan ke dalam teks program dalam bentuk teks asli. Dengan demikian dimungkinkan untuk membagi kode pemrograman menjadi banyak fragmen, untuk kemudahan pengeditan, tetapi sebelum dikompilasi, mereka digabungkan secara otomatis menjadi satu file program, yang akhirnya diproses oleh kompiler. Implementasi modularitas ini primitif dan memiliki banyak kekurangan yang jelas, sehingga segera diganti. Implementasi Pascal modern (dimulai dengan UCSD Pascal) mendukung modul. Modul program dapat terdiri dari dua jenis: modul program utama, yang, seperti biasa, dimulai dengan kata kunci program dan badannya berisi kode yang dijalankan setelah program dimuat ke dalam memori, dan modul tambahan yang berisi tipe, konstanta, variabel, prosedur dan fungsi yang dimaksudkan untuk digunakan dalam modul lain, termasuk modul utama.

slide 45

Struktur umum plug-in di Pascal terlihat seperti ini: unit UnitName1; antarmuka ... implementasi ... mulai (dapat dihilangkan - digunakan jika pernyataan inisialisasi perlu ditempatkan) ... akhir.

slide 46

Opsi lain juga memungkinkan: unit NamaUnit2; antarmuka ... implementasi ... inisialisasi ... finalisasi .... akhir.

slide 47

Berbeda dengan program utama, file unit dimulai dengan kata kunci UNIT diikuti dengan nama unit dan titik koma. Implementasi modern cenderung membutuhkan nama modul yang sama dengan nama file Kode sumber Yang berisi modul ini. Modul berisi tiga bagian: bagian antarmuka, bagian implementasi, dan badan modul.

slide 48

Bagian antarmuka muncul lebih dulu, dimulai dengan kata kunci INTERFACE, dan berakhir pada titik di modul tempat bagian atau isi implementasi dimulai. Bagian antarmuka mendeklarasikan objek tersebut (tipe, konstanta, variabel, prosedur, dan fungsi - header ditempatkan untuknya) yang harus tersedia dari luar modul. Dalam hal ini, deklarasi tipe sebagian diperbolehkan: mereka dapat dideklarasikan tanpa menentukan struktur, hanya dengan satu nama. Saat menggunakan tipe ini dalam program eksternal, diperbolehkan untuk mendeklarasikan variabel dan parameter tipe ini, menetapkan nilai, tetapi tidak mungkin untuk mengakses detail penerapannya. Prosedur dan fungsi di bagian antarmuka dideklarasikan sebagai penerusan - header dengan parameter, tetapi tanpa badan. Komposisi bagian antarmuka modul sedemikian rupa sehingga cukup untuk menghasilkan kode yang menggunakan modul ini. Variabel yang dideklarasikan di bagian antarmuka bersifat global, yaitu ada dalam satu instance dan tersedia di semua bagian program yang menggunakan modul ini.

slide 49

Bagian implementasi mengikuti bagian antarmuka dan dimulai dengan kata kunci IMPLEMENTASI. Ini berisi deskripsi prosedur dan fungsi yang dideklarasikan di bagian antarmuka, serta deskripsi tipe, konstanta, variabel, prosedur, dan fungsi yang diperlukan untuk mengimplementasikan prosedur dan fungsi antarmuka. Deskripsi prosedur atau fungsi yang dideklarasikan di bagian antarmuka harus memiliki judul yang persis sama seperti di deklarasi. Tubuh dapat menggunakan prosedur dan fungsi lain dari modul ini, yang dideklarasikan baik di bagian antarmuka maupun di bagian implementasi. Variabel yang dideklarasikan di bagian implementasi sebenarnya bersifat global (yaitu, hanya ada satu instance dari setiap variabel tersebut di seluruh program), tetapi hanya dapat diakses dari prosedur dan fungsi yang dijelaskan di bagian implementasi modul ini, maupun dari tubuhnya. Jika ada deklarasi tipe yang disingkat di bagian antarmuka, maka tipe tersebut harus dideklarasikan sepenuhnya di bagian implementasi.

Slide 50

Badan modul dimulai dari level tertinggi bersarang dengan kata kunci BEGIN. Tubuh berisi kode program yang dijalankan sekali saat modul dimuat. Tubuh dapat digunakan untuk inisialisasi, menetapkan nilai awal ke variabel modul, mengalokasikan sumber daya untuk operasinya, dan seterusnya. Badan modul mungkin hilang. Dalam sejumlah implementasi Pascal, misalnya, di Delphi, dua bagian (juga opsional) dapat digunakan sebagai pengganti badan modul - INITIALISASI dan FINALISASI. Mereka ditempatkan di akhir modul, setelah kata kunci yang sesuai. Bagian pertama, bagian inisialisasi, berisi kode yang harus dijalankan saat modul dimuat, bagian kedua, bagian finalisasi, berisi kode yang akan dijalankan saat modul dibongkar. Bagian finalisasi dapat melakukan tindakan kebalikan dari inisialisasi - menghapus objek dari memori, menutup file, melepaskan sumber daya yang dialokasikan. Modul diakhiri dengan kata kunci END diikuti dengan titik.

slide 51

Untuk menggunakan modul, program utama atau modul lain harus mengimpor modul, yaitu berisi deklarasi penggunaannya. Deklarasi ini dibuat dengan pernyataan module include, yang merupakan kata kunci USES diikuti dengan nama modul yang akan disertakan yang dipisahkan koma. Instruksi koneksi harus segera mengikuti header program, atau setelah kata kunci INTERFACE jika koneksi dibuat dalam sebuah modul.

slide 52

Modul yang terhubung di bagian antarmuka dapat digunakan di seluruh modul - baik di bagian implementasi maupun di badan. Tetapi bagian implementasi dapat memiliki pernyataan penyertaan sendiri (mengikuti kata kunci IMPLEMENTASI) yang berisi nama-nama plugin yang tidak ada di bagian antarmuka tetapi dibutuhkan oleh bagian implementasi. Salah satu alasan menggunakan daftar koneksi terpisah untuk bagian implementasi adalah ketika dua atau lebih modul saling menggunakan. Untuk menghindari referensi melingkar dalam deklarasi penggunaan modul tersebut, setidaknya salah satu dari mereka harus menyertakan yang lain di bagian implementasi.

slide 53

Objek apa pun yang dideklarasikan di bagian antarmuka modul dapat digunakan dalam program tempat modul ini terhubung. Nama objek yang diimpor dari plug-in tetap sama dan dapat langsung digunakan. Jika dua atau lebih modul yang terhubung memiliki objek yang bernama sama, dan kompiler tidak dapat membedakannya, maka upaya untuk menggunakan objek tersebut akan menghasilkan kesalahan kompilasi - spesifikasi nama yang ambigu. Dalam hal ini, programmer harus menerapkan kualifikasi nama - tentukan nama dalam format ".".

slide 54

Masalah dapat muncul jika ada kebutuhan untuk menggunakan dua modul berbeda dengan nama yang sama di dalam program. Jika modul hanya tersedia dalam bentuk terkompilasi (artinya, tidak mungkin untuk mengubah namanya), tidak mungkin untuk mengimpornya secara bersamaan. Tidak ada solusi standar untuk tabrakan semacam itu di tingkat bahasa, tetapi kompiler khusus dapat menawarkan satu atau cara lain untuk mem-bypassnya, khususnya, cara menetapkan alias ke modul yang diimpor dan secara langsung menentukan modul mana yang akan diambil dari file mana.

Slide 55

Modul dirancang untuk dikompilasi secara terpisah - kompiler tidak harus mengkompilasi modul yang diimpor untuk mengkompilasi modul yang menggunakannya. Namun, untuk mengkompilasi modul dengan benar, kompiler harus memiliki akses ke bagian antarmuka dari semua modul yang digunakannya. Ada dua pendekatan yang berbeda, terkadang digabungkan, untuk mengatur akses tersebut. Modul dikompilasi menjadi file biner dengan format khusus (masing-masing kompiler memilikinya sendiri), di mana Informasi rinci tentang objek yang dideklarasikan di bagian antarmuka juga dapat berisi bahasa objek yang dibuat saat modul dikompilasi, tetapi hanya menggunakan bagian antarmuka modul. Jika modul perpustakaan disediakan dalam bentuk terkompilasi (tanpa teks sumber lengkap), maka bersama dengan file biner ada file terpotong dari kode sumber modul, yang hanya berisi bagian antarmuka. Ini cukup bagi kompiler untuk memproses panggilan dengan benar dari modul yang digunakan, dan pada tahap kompilasi program, linker hanya memasukkan file biner ke dalam program.

slide 56

Memuat dan membongkar modul Agar modul berfungsi dengan baik, Anda mungkin perlu melakukan beberapa tindakan sebelum mulai menggunakannya: menginisialisasi variabel, membuka file yang diperlukan, mengalokasikan memori atau sumber daya lainnya. Semua ini dapat dilakukan di badan modul, atau di bagian inisialisasi. Kebalikan dari inisialisasi dilakukan pada bagian finalisasi.

Slide 57

Urutan inisialisasi dan finalisasi modul secara tidak langsung ditentukan oleh urutan deklarasi di bagian penggunaan, tetapi untuk program yang dikompilasi secara statis (di mana modul dikompilasi menjadi satu file yang dapat dieksekusi dengan program utama, atau terletak di pustaka dinamis terpisah, tetapi dimuat pada tahap pemuatan awal), kompiler selalu menjamin bahwa inisialisasi akan dilakukan sebelum modul digunakan pertama kali. Finalisasi dilakukan pada saat program berakhir, setelah modul utama berakhir, sehingga modul yang digunakan lebih lambat daripada yang menggunakannya.

Slide 58

Dalam kasus pemuatan dinamis modul yang dikendalikan oleh pemrogram itu sendiri, penginisialisasi dijalankan saat memuat, yaitu, pada saat perintah pemuatan modul mengembalikan kontrol, penginisialisasinya telah dijalankan. Finalizer dijalankan setelah pembongkaran, biasanya saat perintah pembongkaran modul dijalankan. Jika perintah ini tidak dipanggil, modul yang dimuat secara dinamis diselesaikan dengan cara yang sama seperti yang lainnya - saat penghentian program.

Slide 59

Pemrograman berorientasi objek (OOP) adalah teknologi untuk membuat perangkat lunak kompleks yang didasarkan pada representasi program sebagai sekumpulan objek, yang masing-masing merupakan turunan dari kelas tertentu, dan kelas membentuk hierarki dengan pewarisan properti.

slide 60

Keuntungan utama OOP adalah pengurangan jumlah panggilan antar modul dan pengurangan jumlah informasi yang ditransfer antar modul. Ini dicapai dengan lokalisasi dan integrasi data yang lebih lengkap dengan rutinitas pemrosesan.

slide 61

Kelemahan utama dalam OOP adalah beberapa penurunan kinerja karena organisasi sistem perangkat lunak yang lebih kompleks, serta, sebagai aturan, peningkatan nyata dalam jumlah kode biner (terutama saat menggunakan pustaka kelas standar dalam program kecil) karena fakta bahwa sebagian besar kompiler dan penghubung modern tidak dapat mengidentifikasi dan menghapus semua kode yang termasuk dalam kelas yang tidak digunakan, metode virtual, dan elemen OOP lainnya.

Slide 62

Di Object Pascal, kelas didefinisikan menggunakan tipe objek, mirip dengan record, yang, selain bidang data, dapat berisi header prosedur dan fungsi (disebut metode). Nama-nama metode yang dijelaskan mengikuti nama kelas yang dipisahkan oleh titik.

slide 63

Konstruktor dan destruktor ditentukan sebagai prosedur normal, tetapi alih-alih pengidentifikasi prosedur, kata kunci konstruktor dan destruktor ditentukan. Karenanya, tidak seperti bahasa mirip C++, mereka memiliki nama yang berbeda dari nama kelasnya, mungkin ada beberapa destruktor dan mereka dapat memiliki parameter (dalam praktiknya, fitur ini jarang digunakan, biasanya sebuah kelas memiliki satu destruktor Hancurkan yang menggantikan virtual destruktor kelas induk).

slide 64

Warisan tunggal, polimorfisme kelas, mekanisme metode virtual didukung (kata virtual setelah header metode kelas). Ada juga metode dinamis (di TP dijelaskan dengan menambahkan bilangan bulat setelah kata virtual dan digunakan terutama untuk pemrosesan pesan; di Delphi dan FreePascal, kata pesan digunakan untuk tujuan ini, dan kata dinamis digunakan untuk membuat biasa metode dinamis), yang berbeda dalam penggunaan memori yang lebih sedikit dan kecepatan panggilan yang lebih sedikit karena kurangnya duplikasi metode dinamis nenek moyang dalam VMT anak (namun, FreePascal tidak membedakan antara metode virtual dan dinamis). Di Delphi, FPC mengimplementasikan overloading operasi, metode abstrak, arahan pribadi, dilindungi, publik, diterbitkan (secara default, anggota kelas bersifat publik):

Slide 65

Dalam dialek Delphi, kelas juga dapat dibangun menggunakan kelas kata (selain itu, pewarisan timbal balik dengan kelas objek tidak diperbolehkan) dan antarmuka (antarmuka) diperkenalkan - semua metode bersifat abstrak dan tidak dapat berisi bidang data. Semua kelas (dibuat dengan kelas) mewarisi dari TObject, semua antarmuka berasal dari IUnknown. Kelas yang dibuat dengan kelas dapat mengimplementasikan banyak antarmuka.

slide 66

Antarmuka diperkenalkan di Delphi untuk mendukung teknologi COM Microsoft. Kelas (Kelas), tidak seperti kelas biasa (Objek), tidak memerlukan alokasi / dealokasi memori eksplisit, memori untuk mereka dialokasikan secara dinamis oleh konstruktor bernama Create, dipanggil dengan nama kelas, dan dirilis ketika destruktor bernama Destroy dipanggil (mereka mungkin memiliki nama lain). Variabel dari kelas seperti itu, tidak seperti kelas objek, menyimpan alamat instance kelas dalam memori, nilai nil digunakan untuk menunjukkan referensi kosong, oleh karena itu, untuk melepaskan objek, metode bebas khusus ditentukan dalam TObject, yang mana memeriksa referensi ke nil dan memanggil destructor virtual Destroy. Kode yang menggunakan kelas tersebut akan terlihat seperti ini:

Slide 67

1 slide

PELAJARAN “KENAL DENGAN BAHASA PASCAL” TEMA: Guru matematika dan ilmu komputer, MBO USOSh No. 2, Kalach-on-Don, wilayah Volgograd Anisimova N.A.

2 slide

TUJUAN PELAJARAN: untuk mengetahui struktur program, operator, aturan format dan tanda baca dari bahasa Turbo Pascal.

3 slide

Sistem pemrograman TURBO PASCAL. Pascal adalah bahasa pemrograman universal yang memungkinkan Anda memecahkan berbagai macam masalah pemrosesan informasi.

4 slide

1) bahasa pemrograman Turbo Pascal; 2) lingkungan pemrograman terintegrasi (kompiler: menerjemahkan program menjadi kode mesin dan juru bahasa: mengeksekusi perintah) KOMPOSISI SISTEM PEMROGRAMAN TR:

5 slide

1) huruf latin - besar dan kecil; 2) huruf alfabet Rusia - besar dan kecil; 3) angka - dari 0 hingga 9; 4) tanda operasi - +, -, /, *, =, =; 5) memisahkan karakter - () ( ) ; . , ‘ _% & # dll. Alfabet bahasa pemrograman TURBO PASCAL

6 slide

7 slide

Header program Bagian deklarasi variabel Bagian pernyataan (badan utama)

8 slide

Bagian deklarasi variabel dimulai dengan kata Var diikuti dengan daftar nama variabel yang dipisahkan koma dengan tipe yang sama. Ada dua jenis angka dalam Pascal: Real dan Integer. Nama variabel terdiri dari huruf Latin dan angka, dengan karakter pertama adalah huruf. Daftar variabel VAR dengan tipe yang sama: INTEGER; daftar variabel serupa:REAL;

9 slide

Bagian operator adalah bagian utama dari program ini. Awal dan akhir bagian ditandai dengan kata layanan BEGIN dan END , yang merupakan tanda kurung operator. Di antara kata-kata ini, ditempatkan semua perintah algoritme yang ditulis dalam Pascal (operator). Pemisah operator adalah titik koma. Sebuah titik ditempatkan di akhir program. MULAI BACA (daftar masukan); READLN(daftar masukan); variabel:=ekspresi aritmatika; MENULIS (daftar keluaran); WRITELN(daftar keluaran); AKHIR.

10 slide

Input data awal dari keyboard terjadi pada operator READ atau READLN (baca). Pernyataan READLN berbeda dari READ hanya setelah memasukkan data, kursor berpindah ke awal garis baru. variabel:=ekspresi aritmatika; MENULIS (daftar keluaran); WRITELN(daftar keluaran); AKHIR. BACA (daftar masukan); READLN(daftar masukan);

11 meluncur

variabel:=ekspresi aritmatika; Operator penugasan aritmatika: di sebelah kiri adalah variabel, di sebelah kanan adalah ekspresi aritmatika yang akan dievaluasi. Karakter majemuk:= dibaca sebagai "assign". Pertama, ekspresi aritmatika dievaluasi, kemudian nilai yang dihasilkan diberikan ke variabel Contoh: a:= sqr (x) + sin (y) / (12*z + 5)

12 slide

mod div / * - + SIN (x) COS (x) SQR (x) SQRT (x) ABS (x) Sin x Cos x x 2 |x| x penjumlahan pengurangan perkalian pembagian bilangan bulat pembagian sisa pembagian

13 meluncur

Aturan penulisan ekspresi aritmatika Ekspresi aritmatika ditulis dalam string Anda tidak dapat meletakkan dua tanda operasi aritmatika dalam satu baris Anda tidak dapat menghilangkan tanda perkalian antar faktor Hanya tanda kurung yang digunakan Urutan operasi ditentukan oleh prioritasnya () F(x ) * / + - mod div

14 slide

Output dari hasil terjadi oleh WRITE atau WRITELN (write). Hasilnya ditampilkan sesuai urutan daftarnya. Perbedaan antara eksekusi pernyataan WRITE dan WRITELN adalah bahwa setelah operasi keluaran dilakukan pada pernyataan WRITELN, kursor berpindah ke awal baris baru. MENULIS (daftar keluaran); WRITELN(daftar keluaran);

15 slide

Tugas 1: AXby 6) TU154 2) R&B 3) Roda 4 4) Vasya 5) “PesBarbos” 7) 8) _ABBA 9) A+B

16 meluncur

tugas program1; var a, b: bilangan bulat; x, y: nyata; mulai a:= 5; 10:=x; y:= 7,8; b:= 2,5; x:= 2*(a + y); a:= b + x; akhir. nama variabel harus di sebelah kiri tanda:= bagian bilangan bulat dan pecahan dipisahkan oleh koma dan jenis ketidaksesuaian Jenis ketidaksesuaian TUGAS 2: Menemukan kesalahan dalam entri program.



Memuat...
Atas