Tatal untuk bertukar halaman
Computer Science Principles · AP Computer Science Principles
kolaborasi, reka bentuk dan penyahpepijatan
Aturcara tidak ditulis dalam satu laluan. Ia disiasat, direka bentuk, dibina secara kasar, diuji, dan dikaji semula, pusingan demi pusingan, sehingga ia melakukan apa yang diperlukan penggunanya.
Rajah menjalankan satu proses pembangunan yang biasa: menyiasat dan merefleksi, designing, prototyping and testing. Bola merah ialah kerja yang sedang dilakukan; di setiap stesen ia boleh menghantar pasukan kembali ke fasa terdahulu. Setiap pusingan menjadikan aturcara (biru) lebih lengkap: versi 3 selepas 3 pusingan.
Proses boleh tersusun dan disengajakan, mengikut fasa dalam pelan, atau bersifat penerokaan, mencuba idea dan mengekalkan yang berkesan. Terdapat banyak proses; empat fasa ini lazim bagi kebanyakannya.
Bab ini ialah Idea Besar 1 AP Computer Science Principles, Pembangunan Kreatif: 10–13% daripada peperiksaan aneka pilihan. Ia merangkumi bekerja bersama (1.1), apa yang dilakukan oleh aturcara dan dengan input serta output apa (1.2), bagaimana aturcara direka bentuk, dibina dan didokumenkan (1.3), dan bagaimana ralat dijumpai dan dibaiki (1.4). Ia juga kerja bagi tugasan prestasi Create, halaman terakhir bab ini.
dan perspektif yang memperbaikinya
Satu inovasi pengkomputeran mengandungi aturcara sebagai bahagian penting fungsinya.
Ia boleh fizikal, seperti kereta pandu sendiri; perisian pengkomputeran bukan fizikal, seperti perisian penyuntingan gambar; atau konsep pengkomputeran bukan fizikal, seperti e-dagang.
Inovasi diperbaiki melalui kolaborasi. Kolaborasi yang berkesan menghasilkan inovasi yang mencerminkan kepelbagaian bakat dan perspektif orang yang mereka bentuknya, dan perspektif yang pelbagai membantu mengelakkan bias: pasukan yang semua ahlinya berkongsi satu pengalaman cenderung membina untuk pengalaman itu.
Rajah ialah pasukan hipotesis yang menyenaraikan kes yang mesti dikendalikan oleh aplikasinya. Pembangun A seorang sahaja memikirkan 5 daripada 12. Tiga pembangun bersama-sama memikirkan 10. Selebihnya datang daripada merujuk kepada pengguna: 12 daripada 12.
Itulah sebabnya perundingan dan komunikasi dengan pengguna penting. Maklumat yang dikumpulkan daripada bakal pengguna membantu pembangun memahami tujuan aturcara daripada pelbagai perspektif, dan membina aturcara yang menggabungkannya sepenuhnya.
pengaturcaraan berpasangan, alat dalam talian, kemahiran interpersonal
Kumpulan membangunkan inovasi dengan model kolaborasi yang biasa. Satu ialah pengaturcaraan berpasangan.
Dua pengaturcara berkongsi satu komputer. Pemandu (merah) menaip kod; juru arah (biru) menyemak setiap baris semasa ditulis, mengesan kesilapan dan berfikir ke hadapan. Separuh jalan melalui rajah mereka bertukar: peranan mengikut papan kekunci, bukan orangnya. Aturcara yang mereka tulis ialah yang pada halaman seterusnya.
Alat dalam talian menyokong kolaborasi dengan membolehkan pengaturcara berkongsi idea dan dokumen serta memberi maklum balas padanya, sama ada mereka bekerja dalam bilik yang sama atau tidak.
Pasukan yang berkesan mengamalkan kemahiran interpersonal, termasuk tetapi tidak terhad kepada:
apa yang dilakukan oleh aturcara, dan bagaimana
Satu aturcara ialah koleksi pernyataan aturcara yang melaksanakan tugas tertentu apabila dijalankan oleh komputer. Aturcara sering dirujuk sebagai perisian.
total ← 0 REPEAT 3 TIMES { n ← INPUT() total ← total + n } DISPLAY(total / 3) Satu segmen kod ialah koleksi pernyataan aturcara yang menjadi sebahagian daripada aturcara: di sini, gelung pada baris 2–6 (biru dalam rajah).
Aturcara boleh diperihalkan secara umum, mengikut apa yang dilakukannya: “ia memaparkan purata tiga nombor yang ditaip pengguna.” Atau dengan lebih terperinci, mengikut apa yang dilakukannya dan bagaimana pernyataannya melakukannya: “ia menetapkan total kepada 0; tiga kali, ia membaca nombor ke dalam n dan menambahnya kepada total; kemudian ia memaparkan total / 3.”
Aturcara perlu berfungsi untuk pelbagai input dan situasi. Rajah menjalankannya dua kali:
| input | jumlah selepas gelung | dipaparkan |
|---|---|---|
| 4, 8, 9 | 21 | 7 |
| −2, 0, 5 | 3 | 1 |
Kelakuannya ialah cara ia berfungsi semasa pelaksanaan, selalunya diperihalkan mengikut cara pengguna berinteraksi dengannya: pengguna menaip tiga nombor, dan satu nombor muncul.
Setiap inovasi mempunyai tujuan: menyelesaikan masalah, atau meneruskan minat melalui ekspresi kreatif. Pembangun yang memahami tujuan itu lebih mampu membangunkan aturcara.
data masuk, data keluar, dalam pelbagai bentuk
Input aturcara ialah data yang dihantar kepada komputer untuk diproses oleh aturcara. Output aturcara ialah sebarang data yang dihantar dari aturcara ke peranti.
Kedua-duanya wujud dalam pelbagai bentuk: sentuhan (satu sentuhan, satu getaran), audio (perkataan yang dituturkan, bunyi), visual (imej kamera, skrin) atau teks. Rajah menghantar satu input bagi setiap bentuk secara bergilir ke dalam aturcara, dan satu output bagi setiap bentuk keluar daripadanya.
Input boleh datang daripada pengguna atau daripada aturcara lain; output teks di bahagian kanan bawah pergi kepada aturcara lain, yang menjadikannya input.
Input biasanya mempengaruhi output yang dihasilkan aturcara. Dan output biasanya berdasarkan input aturcara atau keadaan terdahulunya: nilai yang telah disimpannya. Aturcara ini menyimpan kiraan (biru) input yang telah diterimanya, jadi sentuhan yang sama pada skrin boleh menghasilkan output yang berbeza pada kali kedua.
Dalam aturcara purata pada halaman lepas, tiga panggilan kepada INPUT() ialah inputnya, dan DISPLAY menghantar outputnya ke skrin.
pernyataan dijalankan apabila dicetuskan
Satu peristiwa dikaitkan dengan tindakan dan membekalkan data input kepada aturcara.
Peristiwa dijana apabila kekunci ditekan, tetikus diklik, aturcara dimulakan, atau mana-mana tindakan lain yang ditakrifkan berlaku yang menjejaskan aliran pelaksanaan.
Dalam pengaturcaraan dipacu peristiwa, pernyataan aturcara dilaksanakan apabila dicetuskan dan bukan melalui aliran kawalan berjujukan. Tiada apa-apa dijalankan baris demi baris dari atas: setiap peristiwa menjalankan prosedur yang mengendalikannya, dan aturcara menunggu peristiwa seterusnya.
PROCEDURE onStart() { count ← 0 DISPLAY(count) } PROCEDURE onClick() { count ← count + 1 DISPLAY(count) } PROCEDURE onKeyPress() { count ← count - 1 DISPLAY(count) } Helaian rujukan peperiksaan tidak mempunyai sintaks peristiwa, jadi di sini setiap pengendali ialah prosedur dan persekitaran hipotesis memanggilnya apabila peristiwanya berlaku. Dalam rajah, aturcara bermula, butang diklik tiga kali, satu kekunci ditekan dan butang diklik sekali lagi. Nilai yang dipaparkan ialah 0, 1, 2, 3, 2, 3.
count kepunyaan seluruh aturcara, jadi output setiap klik bergantung pada peristiwa sebelumnya.
lelaran dan tokokan
Proses pembangunan boleh tersusun dan disengajakan, atau bersifat penerokaan. Terdapat banyak proses; kebanyakannya menggunakan fasa menyiasat dan merefleksi, mereka bentuk, membuat prototaip dan menguji.
Proses yang berlelaran memerlukan penghalusan dan semakan berdasarkan maklum balas, ujian atau refleksi sepanjang proses. Ini mungkin memerlukan fasa terdahulu dikunjungi semula. Pada baris bawah, seluruh aturcara wujud sejak laluan pertama, secara kasar; setiap pusingan maklum balas (merah) menghantarnya kembali, dan setiap bahagian menjadi lebih lengkap.
Proses yang bertokokan memecahkan masalah kepada bahagian yang lebih kecil dan memastikan setiap bahagian berfungsi sebelum menambahnya kepada keseluruhan. Pada baris atas, satu bahagian dibina dan diuji pada satu masa, dan menyertai keseluruhan hanya apabila ujiannya lulus.
Keduanya bukan berlawanan. Kebanyakan pasukan melakukan kedua-duanya: mereka membina bahagian demi bahagian, dan menyemak semula setiap bahagian, dan keseluruhannya, apabila maklum balas tiba.
keperluan, spesifikasi, papan cerita, modul
Reka bentuk aturcara bermula dengan penyiasatan, untuk menentukan keperluannya.
Penyiasatan mengenal pasti kekangan aturcara, dan kebimbangan serta minat orang yang akan menggunakannya. Ia boleh dilakukan dengan surveys, ujian pengguna, interviews and pemerhatian langsung.
Keperluan aturcara memerihalkan cara aturcara berfungsi, dan mungkin termasuk huraian interaksi pengguna yang mesti disediakannya. Spesifikasi aturcara mentakrifkan keperluannya. Bagi aplikasi hipotesis yang menempah bilik belajar perpustakaan: (1) pengguna memilih tarikh; (2) pengguna melihat bilik yang kosong pada hari itu; (3) pengguna menempah satu dan mendapat kod.
Fasa reka bentuk menggariskan cara menyempurnakan spesifikasi. Ia mungkin termasuk:
Rajah melukis dua daripadanya: papan cerita antara muka, satu skrin bagi setiap langkah, dengan ketukan pengguna membawa mereka dari skrin ke skrin; dan aturcara yang disusun ke dalam modul, satu bagi setiap keperluan.
dan mengakui kod daripada orang lain
Dokumentasi aturcara ialah huraian bertulis tentang fungsi segmen kod, peristiwa, prosedur atau aturcara, dan tentang cara ia dibangunkan.
Komen ialah satu bentuk dokumentasi yang ditulis ke dalam aturcara untuk dibaca oleh manusia; ia tidak menjejaskan cara aturcara berjalan. Tidak semua persekitaran pengaturcaraan menyokong komen, dan helaian rujukan peperiksaan tidak mempunyainya, jadi dalam rajah dokumentasi setiap prosedur diletakkan di sebelahnya.
PROCEDURE average(numList) { total ← 0 FOR EACH num IN numList { total ← total + num } RETURN(total / LENGTH(numList)) } PROCEDURE isEven(n) { RETURN(n MOD 2 = 0) } average([6, 9, 3, 10]) memulangkan 7. Dokumentasi ditulis sepanjang pembangunan: kad bagi average bertambah bersama kodnya. Ia membantu dalam membangunkan dan menyelenggara aturcara yang betul, bersendirian atau dalam pasukan, kerana pembaca seterusnya (selalunya penulis, kemudian) dapat melihat kegunaan setiap bahagian.
Adalah penting untuk mengakui sebarang segmen kod yang dibangunkan secara kolaboratif atau oleh sumber lain. Pengakuan itu boleh berada dalam dokumentasi aturcara, dan harus termasuk asal usul atau nama pengarang asal. Dalam rajah, isEven (biru) datang daripada sumber lain, dan kadnya menyatakan sedemikian.
bila setiap satu menunjukkan dirinya
Tiga atur cara, setiap satu bertujuan memaparkan setiap markah dalam [90, 75, 82]; setiap satu mempunyai satu kesilapan.
Ralat sintaks ialah kesilapan dalam atur cara apabila peraturan bahasa pengaturcaraan tidak dipatuhi. Dalam atur cara pertama, baris 5 tiada kurungan penutup. Atur cara tidak berjalan langsung: tiada baris dijalankan, dan tiada apa-apa dipaparkan.
Ralat masa larian ialah kesilapan yang berlaku semasa atur cara dilaksanakan; setiap bahasa pengaturcaraan mentakrifkan ralat masa larian sendiri. Atur cara kedua menambah 1 pada i sebelum memaparkan, jadi ia memaparkan 75 and 82, kemudian meminta scores[4]. Pada lembaran rujukan, indeks yang kurang daripada 1 atau lebih besar daripada panjang senarai ialah ralat, dan atur cara ditamatkan.
Ralat logik ialah kesilapan dalam algoritma atau atur cara yang menyebabkannya berkelakuan secara salah atau tidak dijangka. Atur cara ketiga mengulang satu kali terlalu sedikit. Tiada apa-apa yang menghentikannya: ia berjalan hingga akhir, tetapi hanya memaparkan 2 daripada 3 markah. Hanya dengan membandingkan outputnya dengan output yang dijangka, ralat itu kelihatan.
scores ← [90, 75, 82] i ← 1 REPEAT LENGTH(scores) - 1 TIMES { DISPLAY(scores[i]) i ← i + 1 } Setelah dibetulkan, baris 3 ialah REPEAT LENGTH(scores) TIMES.
nombor di luar julat
Satu ralat limpahan (overflow) berlaku apabila komputer cuba mengendalikan nombor yang berada di luar julat nilai yang ditakrifkan.
Banyak bahasa pengaturcaraan menyimpan integer dalam bilangan bit yang tetap, yang menghadkan julat nilai. Ambil bahasa hipotesis yang menyimpan nombor bulat dalam 4 bit: yang terbesar yang boleh disimpannya ialah 1111, iaitu 15.
Rajah mengira naik dari 12. Setiap langkah membalikkan bit yang berubah. Pada 15, menambah 1 memerlukan bit kelima (16 ialah 10000), dan stor hanya mempunyai 4: satu limpahan. Apa yang berlaku seterusnya bergantung pada bahasa: ada yang berhenti dengan ralat, yang lain mengekalkan bit yang muat dan meneruskan dengan nilai yang salah (di sini, 0).
Bahasa sebenar menggunakan lebih banyak bit, jadi hadnya jauh lebih besar, tetapi ia tetap had. Bahasa pada helaian rujukan peperiksaan berbeza: di sana, saiz integer hanya dihadkan oleh memori komputer.
input yang ditakrifkan, output yang dijangka
Pengujian menggunakan input yang ditentukan untuk memastikan sesuatu algoritma atau aturcara menghasilkan keputusan yang dijangkakan. Pengaturcara menggunakan keputusan itu untuk menyemaknya semula.
Keperluan sebuah panggung hipotesis: bagi umur di bawah 13, atau 65 dan ke atas, harga tiket ialah $8; semua orang lain membayar $12. Keperluan inilah yang memberitahu penguji input mana yang perlu dicuba dan apa yang dijangkakan bagi setiap satu.
PROCEDURE price(age) { IF(age < 13 OR age ≥ 64) { RETURN(8) } RETURN(12) } Input ujian yang baik menunjukkan keputusan jangkaan yang berbeza dan terletak pada atau tepat di luar nilai ekstrem (minimum dan maksimum) data input, iaitu tempat kesilapan sering berlaku: di sini 12 dan 13 di kedua-dua belah satu sempadan, 64 dan 65 di kedua-dua belah sempadan yang satu lagi, serta umur terkecil, 0.
| umur (input) | dijangka | sebenar | |
|---|---|---|---|
| 0 | $8 | $8 | pass |
| 12 | $8 | $8 | pass |
| 13 | $12 | $12 | pass |
| 40 | $12 | $12 | pass |
| 64 | $12 | $8 | gagal |
| 65 | $8 | $8 | pass |
Ujian pada 64 gagal: kod itu menulis age ≥ 64 sedangkan keperluan bermaksud age ≥ 65, iaitu ralat logik. Ujian pada umur biasa seperti 40 tidak akan menemuinya.
penjejakan, visualisasi, penyahpepijatan, paparan
Cara berkesan untuk mencari dan membetulkan ralat: kes ujian, penjejakan tangan, visualisasi, penyahpepijat, dan menambah pernyataan output tambahan.
findMax sepatutnya memulangkan nombor terbesar dalam sebuah senarai. Apabila diuji pada [-3, -7, -2], ia memulangkan 0, bukan −2. Untuk mengetahui sebabnya, pengaturcara menambah DISPLAY(max) dalam gelung (biru): satu pernyataan output tambahan.
PROCEDURE findMax(numList) { max ← 0 FOR EACH num IN numList { IF(num > max) { max ← num } DISPLAY(max) } RETURN(max) } Penjejakan tangan bagi aturcara itu, satu baris bagi setiap elemen:
| num | num > max? | max selepas | DISPLAY memaparkan |
|---|---|---|---|
| −3 | false | 0 | 0 |
| −7 | false | 0 | 0 |
| −2 | false | 0 | 0 |
max tidak pernah berubah: tiada elemen yang lebih besar daripada 0. Penyahpepijat menunjukkan perkara yang sama dengan menjeda aturcara dan memaparkan pemboleh ubahnya (sel dalam rajah, satu visualisasi keadaannya). Ralat itu terdapat pada baris 3: max bermula pada 0, lebih besar daripada setiap elemen dalam senarai yang semuanya negatif.
Pembetulannya ialah max ← numList[1]: mulakan daripada satu elemen dalam senarai. Larikan semula, output tambahan menunjukkan −3, −3, −2, dan ia memulangkan −2. Kemudian DISPLAY tambahan itu dibuang.
aturcara anda sendiri, dan soalan tentangnya
Tugasan prestasi Create ialah bab ini yang dipraktikkan: sebuah aturcara pilihan anda sendiri, dibangunkan dengan proses, dokumentasi dan pengujian daripada 1.1–1.4.
Anda menghantar tiga perkara dalam AP Digital Portfolio: kod aturcara anda, sebuah video aturcara itu berjalan, dan sebuah Rujukan Projek Peribadi (PPR). Anda diberi sekurang-kurangnya 9 jam masa kelas untuknya. Aturcara anda mesti mengandungi unsur tertentu, seperti senarai dan prosedur.
Pada hari peperiksaan datang jawapan bertulis: 60 minit, 2 soalan tentang kod dalam PPR anda sendiri, yang boleh anda lihat semasa menjawab.
Tugasan dan jawapan bertulis bersama-sama merupakan 30% daripada skor AP; peperiksaan aneka pilihan (70 soalan dalam 120 minit) ialah 70% yang selebihnya.
Oleh itu soalan bab ini kembali tentang aturcara anda sendiri: apakah tujuan dan fungsinya, apakah input dan outputnya, apa yang anda uji dan dengan input yang mana, dan apakah ralat yang anda temui dan betulkan.