Kamis, 21 Maret 2013

overview or c - chapter 2


OVERVIEW OF C

BAB TUJUAN
1.       Untuk menjadi akrab dengan bentuk umum dari C program dan elemen dasar dalam sebuah program
2.       Untuk menghargai pentingnya menulis komentar dalam program
3.       Untuk memahami penggunaan tipe data dan perbedaan antara tipe data int, double, dan char
4.       Untuk mengetahui bagaimana cara mendeklarasikan variabel
5.       Untuk memahami bagaimana menulis pernyataan tugas untuk mengubah nilai-nilai dari variabel
6.       Untuk mempelajari cara C mengevaluasi ekspresi aritmatika dan bagaimana menulis mereka di C
7.       Untuk mempelajari cara membaca nilai data ke dalam program dan hasil tampilan
8.       Untuk memahami bagaimana menulis string format untuk data entry dan display
9.       Untuk mempelajari cara menggunakan redirection untuk memungkinkan penggunaan file untuk input / output
10.   Untuk memahami perbedaan antara kesalahan sintaks, run-time kesalahan, dan kesalahan logika, dan bagaimana untuk menghindari mereka dan untuk memperbaikinya

Bab ini memperkenalkan C-bahasa pemrograman tingkat tinggi yang dikembangkan pada tahun
1972 oleh Dennis Ritchie di AT & T Bell Laboratories.Karena C dirancang sebagai bahasa di mana untuk menulis sistem operasi UNIX ®, awalnya digunakan terutama untuk pemrograman sistem.Selama bertahun-tahun, namun kekuatan dan fleksibilitas C bersama dengan ketersediaan berkualitas tinggi kompiler C untuk computer dari semua ukuran telah membuatnya menjadi bahasa populer di industri untuk berbagai macam aplikasi.
Bab ini menjelaskan unsur-unsur dari program C dan jenis data yang dapat diproses oleh C. Ini juga menggambarkan pernyataan C untuk melakukan perhitungan, untuk memasukkan data, dan untuk hasil menampilkan.Bahasa Inggris. Meskipun Anda belum tahu bagaimana menulis program Anda sendiri, Anda mungkin dapat membaca dan memahami program pada Gambar 2.1 mengulangi Angka dengan fitur dasar dari C disorot. Kami mengidentifikasi secara singkat di bawah ini, dan menjelaskan secara rinci dalam Bagian 2,2-2,4. Nomor baris yang ditunjukkan dalam kode semua angka bukan bagian dari pemrograman C.

Preprocessor Directive
The program C pada Gambar. 2.1 memiliki dua bagian: arahan preprocessor dan utama fungsi. Arahan preprocessor adalah perintah yang memberikan instruksi kepada C preprocessor, yang tugasnya adalah untuk mengubah teks dari program C sebelumdikompilasi.Sebuah direktif preprocessor dimulai dengan simbol angka (#) sebagai pertama nonblank karakter. Dua arahan yang
paling umum muncul dalam Gambar. 2.1: # include dan # define. Bahasa C eksplisit mendefinisikan hanya sejumlah kecil dari operasi: Banyak tindakan yang diperlukan dalam program komputer tidak ditentukan langsung oleh C. Sebaliknya, setiap pelaksanaan C berisi koleksi fungsi yang berguna dan simbol yang disebut perpustakaan. ANSI (American National Standards Institute) standar untuk C mensyaratkan bahwa perpustakaan standar tertentu akan disediakan di setiap ANSI C implementasi. AC sistem dapat memperluas jumlah operasi yang tersedia dengan memasok library tambahan. Perpustakaan masing-masing memiliki file header standar yang namanya berakhir dengansimbol .h.




 


# Include direktif memberikan akses program untuk perpustakaan. direktif inimenyebabkanpreprocessor untuk memasukkan definisi dari file header standar ke dalam programsebelum kompilasi. direktif
# include <stdio.h>                                                                         / * printf, definisi scanf * /
memberitahukan preprocessor bahwa beberapa nama yang digunakan dalam program (seperti scanf dan printf) ditemukan dalam <stdio.h> file header standar.
Direktif lainnya preprocessor pada Gambar. 2.1
# define KMS_PER_MILE 1.609 / * konversi
Syntax Displays for Preprocessor Directives
For each new C construct introduced in this book, we provide a syntax display that
describes and explains the construct’s syntax and shows examples of its use.


CONTOH: # include
# include <math.h>
INTERPRETASI: # include direktif memberitahu preprocessor mana untuk menemukan makna dari
standar pengidentifikasi yang digunakan dalam program. Ini makna dikumpulkan dalam file yang disebut standarfile header. The file header stdio.h berisi informasi tentang standard input dan
output fungsi seperti scanf dan printf. 

Function main
The two-line heading
int
main(void)
marks the beginning of the main function where program execution begins. EveryC program has a main function. The remaining lines of the program form the bodyof the function which is enclosed in braces {, } .A function body has two parts: declarations and executable statements. Theeclarationstell the compiler what memory cells are needed in the function (forexample, miles and kms in Fig. 2.1 ). To create this part of the function, the programmeruses the problem data requirements identified during problem analysis.The executable statements (derived from the algorithm) are translated into
machine language and later executed.The main function contains punctuation and special symbols ( *, = ). Commasseparate items in a list, a semicolon appears at the end of several lines, and braces
( {, } ) mark the beginning and end of the body of function main .





 



 



Kata Reserved
Setiap baris dari Gambar. 2,1 berisi sejumlah kata yang berbeda diklasifikasikan sebagai cadangankata, pengidentifikasi dari perpustakaan standar, dan nama untuk sel-sel memori. Semua
kata-kata reserved muncul dalam huruf kecil, mereka memiliki arti khusus dalam C dan tidak bias
digunakan untuk tujuan lainnya.
Standard Identifier
kata-kata dalam Gambar. 2,1 adalah pengidentifikasi yang datang dalam dua varietas:
standar danuser-defined. Seperti kata-kata reserved, pengidentifikasi standar memiliki arti khusus dalamC. Dalam Gambar. 2.1, pengenal standar printf dan scanf adalah nama operasididefinisikan dalam perpustakaan input / output standar. Tidak seperti kata-kata reserved, standar pengidentifikasidapat didefinisikan ulang dan digunakan oleh programmer untuk tujuan lain




ada beberapa kebebasan dalam memilih pengidentifikasi. Aturan sintaks dan beberapa berlakupengidentifikasi
Tabel 2.2 menunjukkan beberapa pengidentifikasi valid.
1. Identifier harus hanya terdiri dari huruf, angka, dan garis bawah.
2. Identifier tidak dapat dimulai dengan digit.
3. AC cadangan kata tidak dapat digunakan sebagai identifier.
4. Sebuah identifier yang didefinisikan dalam perpustakaan standar C tidak boleh didefinisikan ulang. *

 

* Rule 4 is actually advice from the authors rather than ANSI C syntax.
 
 


Huruf besar dan huruf kecil dalm surat
Programmer C harus berhati-hati dalam penggunaan huruf besar dan huruf kecilsurat karenakompiler C menganggap penggunaan tersebut signifikan. Tingkat nama,tingkat, dan RATE dipandang oleh kompilator sebagai pengidentifikasi yang berbeda. Mengadopsi konsistenPola dalam cara Anda menggunakan huruf besar dan huruf kecil sangat membantu untukpembaca program Anda. Andaakan melihat bahwa semuakata dalam C dan namadari semua fungsi perpustakaan standar hanya menggunakan huruf kecil. Salah satu gaya yang telahdiadopsi secara luas dalam industri menggunakan huruf besar semua atas nama macro konstan.Kami mengikuti konvensi dalam teks ini, karena pengenal lainnya menggunakan huruf kecil semua.
Program Gaya Memilih Nama Identifier
Suatu programyang "terlihat baik" lebih mudah untuk membaca dan memahami dari satu yang ceroboh. Kebanyakan programakan diperiksa atau dipelajari oleh orang lain selain programer aslinya.Dalam industri, programmer menghabiskan waktu jauh lebih banyak untuk pemeliharaan Program(Yaitu, memperbarui dan memodifikasi program) daripada yang mereka lakukan pada desain aslinya ataucoding.


2.2 Variable Declarations and Data Types
Variabel Deklarasi
Sel-sel memori yang digunakan untuk menyimpan data input program dan komputasiHasil disebut variabel karena nilai-nilai yang tersimpan dalam variabel dapat mengubahdansebagai program pengeksekusi. Variabel deklarasi dalam CProgram berkomunikasi dengan compiler C nama semua variabel yang digunakan dalam program.Mereka juga memberitahu compiler apa jenis informasi yang akan disimpan di setiapvariabel dan bagaimana informasi yang akan diwakili dalam memori.
double miles; /* input - distance in miles. */
double kms; /* output - distance in kilometers */
memberikan nama dua variabel (mil, km) digunakan untuk menyimpan bilangan real. Perhatikan bahwa Cmengabaikan komentar di sebelah kanan dari setiap baris menggambarkan penggunaan masing-masing variabel.Sebuah deklarasi variabel dimulai dengan identifier (misalnya, ganda) yang memberitahucompiler C jenis data (seperti bilangan real) disimpan dalam variabel tertentu.
Anda dapat mendeklarasikan variabel untuk semua jenis data.C mengharuskan Anda untuk menyatakan setiapvariabel yang digunakan dalam program.

 


Tipe Data
Sebuah tipe data adalah seperangkat nilai-nilai dan satu set operasi pada nilai-nilai. Pengetahuandari tipe data dari item (variabel atau nilai) memungkinkan compiler C untuk benarmenentukan operasi pada item itu. Sebuah tipe data standar di C adalah tipe data yangstandar, seperti sebagai char int, ganda. Kami menggunakan jenis data standarganda dan int sebagai abstraksi untuk bilangan real dan bilangan bulat (dalam matematika akal).
Konstanta numerik dalam C dianggap nomor nonnegatif. meskipun Andadapatmenggunakan nomor seperti -10.500 dalam program, C memandang tanda minus sebagai negasiOperator (diterapkan pada 10500 konstanta positif) daripada sebagai bagian darikonstan.
Tipe Data int
  Tipe data intdigunakan untuk mewakili bilangan bulat di C. Karena ukuran terbatas dari sel memori, tidak semuabilangan bulat dapat diwakili oleh tipe int. ANSI C menetapkan bahwa berbagai tipe data int harus menyertakan setidaknya menghargai -32.767 sampai 32767. Anda dapat menyimpan integerdalam variabel bertipe int, melakukan operasi aritmatika umum (menambah, mengurangi,mengalikan, dan membagi), dan membandingkan dua bilangan bulat. Beberapa nilai-nilai yang Anda dapat menyimpan dalamjenis variabel int yang
-10500 435 +15 -25 32767
Tipe Data ganda
Sejumlah nyata memiliki bagian integral dan bagian pecahan yangdipisahkan oleh titik desimal. Dalam C, ganda tipe data yang digunakan untuk mewakilinyata nomor (misalnya, 3,14159, 0,0005, 150.0). Anda dapat menyimpan bilangan realdalam variabel tipe double, melakukan operasi aritmatika umum (menambah,mengurangi, mengalikan, dan membagi), dan membandingkannya.
Tipe data ganda adalah abstraksi untuk bilangan real karena tidaktidak termasuk mereka semua. Beberapa bilangan real yang terlalu besar atau terlalu kecil, dan beberapabilangan real tidak dapat diwakili tepat karena ukuran terbatas darimemori sel. Namun, kita tentu dapat mewakili cukup dari bilangan realdi C untuk melaksanakan sebagian besar dari perhitungan kami ingin tampil dengan cukupakurasi.
 
Bilangan bulat positif diwakili oleh bilangan biner standar.Jika Anda sudah familiardengan sistem bilangan biner, Anda tahu bahwa 13 integer direpresentasikan sebagaibilangan biner 01.101.
Format nilai tipe ganda (juga disebut floating-point format) adalah analoguntuk notasi ilmiah. Tempat penyimpanan ditempati oleh nomor tersebut dibagi menjaditiga bagian: tanda (0 untuk bilangan positif, 1 untuk angka negatif), mantissa, Dan eksponen. Mantissa adalah pecahan biner antara 0,5 dan 1,0. Itueksponen adalah bilangan bulat.Mantissa dan eksponen yang dipilih sehingga berikutrumus sudah benar.
real number _ mantissa _ 2exponent
Jika 64 bit yang digunakan untuk penyimpanan sejumlah tipe ganda, tanda akan menempati 1bit, 11 bit eksponen, dan 52 bit mantissa. Karena ukuran terbatas darimemori sel, tidak semua bilangan real dalam kisaran diperbolehkan dapat diwakili tepatsebagai ketik nilai ganda. Kita akan membahas konsep ini nanti.
Kita telah melihat bahwa nilai-nilai tipe double mungkin termasuk bagian pecahan, sedangkantipe nilai int tidak bisa. Keuntungan tambahan dari format tipe ganda adalah bahwayang jauh lebih besar dari angka dapat direpresentasikan dibandingkan dengan tipe int.Berkisar aktual bervariasi dari satu implementasi ke yang lain, tetapi standar ANSIuntuk C menetapkan bahwa rentang minimum nilai-nilai positif dari tipe int adalah dari 1 sampai32.767 (sekitar 3,3? 10 4). Rentang minimum yang ditetapkan untuk nilai positif.
Tipe data Char
Data tipe char mewakili karakter nilai-individu surat, angka, ataukhusus simbol. Setiap nilai tipe char tertutup dalam apostrof (tanda kutip tunggal) sebagaiditampilkan di sini.

 
 

Pada baris di atas Tabel 2.6, nilai karakter '"' mewakili karakter"; yangkarakter nilai '' mewakili karakter kosong, yang diketik dengan menekantanda kutip kunci, space bar, dan tombol tanda kutip.Meskipun nilai tipe char dalam program membutuhkan apostrof, data tipe charnilai tidak harus memiliki mereka. Jadi, misalnya, ketika memasuki huruf z sebagai karakterData item yang akan dibaca oleh program, tekan tombol z bukan urutan 'z'.

Kode ASCII
Anda harus tahu bahwa karakter diwakili dalam memori sebagai integer.Karakter digit '0 'melalui '9' memiliki nilai kode 48 sampai 57 (desimal).Hubungan agar berikut berlaku untuk karakter digit (yaitu, '0 '<'1','1 '<'2', Dan sebagainya).
'0 '<'1' <'2 '<'3' <'4 '<'5' <'6 '<'7' <'8 '<'9'Dalam ASCII, huruf besar memiliki kode desimal nilai 65 sampai 90.ItuAgar hubungan yang berikut berlaku untuk huruf besar.
'A' <'B' <'C' <... <'X' <'Y' <'Z'Huruf kecil memiliki kode desimal berturut-turut nilai 97 sampai 122, danHubungan urutan berikut ini berlaku:
'a' <'b' <'c' <... <'X' <'y' <'z'Dalam ASCII, karakter yang dapat dicetak memiliki kode dari 32 (kode untuk kosong atauspasi) 126 (kode untuk simbol ~). Kode lainnya merupakan kontrol nonprintablekarakter. Mengirim karakter kontrol ke perangkat output menyebabkan perangkat untukmelakukan operasi khusus seperti kembali kursor ke kolom satu, majukursor ke baris berikutnya, atau dering bel.

Program in Memory
Sebelum memeriksa laporan dieksekusi dalam konversi mil-to-kilometer
Program (Gambar 2.1), mari kita lihat apa memori komputer seperti sebelum dan  setelah program yang mengeksekusi. Gambar 2.3 memperlihatkan program dimuat ke memoridan memori program daerah sebelum program dijalankan.Para tanda Tanyadalam sel memori mil dan km menunjukkan bahwa nilai-nilai dari sel-sel ini tidak terdefinisisebelum eksekusi program dimulai. Selama pelaksanaan program, datanilai 10,00 disalin dari perangkat input ke dalam variabel mil. SetelahProgram mengeksekusi, variabel didefinisikan seperti ditunjukkan pada Gambar. 2,3 b.

ASIGMENT STETMENT
Sebuah pernyataan penugasan menyimpan nilai atau hasil komputasi dalam variabel,dan digunakan untuk melakukan operasi aritmatika yang paling dalam sebuah program
pernyataan
kms = KMS_PER_MILE * mil;
memberikan nilai ke variabel km. Nilai yang diberikan adalah hasil dari perkalian(* Berarti kalikan) dari KMS_PER_MILE makro konstan (1.609) dengan variablemil. Sel memori untuk mil harus berisi informasi yang valid (dalam hal ini,bilangan real) sebelum pernyataan penugasan dijalankan.Gambar 2.4 menunjukkanisi memori sebelum dan sesudah pernyataan penugasan mengeksekusi; hanyanilai kms berubah.
Dalam C = simbol adalah operator penugasan. Membacanya sebagai "menjadi," "mendapatkan,"atau "mengambil nilai" daripada "sama" karena tidak setara dengansama tanda matematika. Dalam matematika, simbol ini menyatakan hubunganantara dua nilai, tapi di C itu merupakan suatu tindakan yang akan dilakukan olehkomputer.

 


Excample 2.1:

Dalam C Anda dapat menulis pernyataan penugasan dalam bentuk
sum = sum + item;
di mana jumlah variabel muncul di kedua sisi dari operator penugasan. Ini jelasbukan persamaan aljabar, tetapi ini menggambarkan praktek pemrograman umum.Pernyataan ini menginstruksikan komputer untuk menambah nilai saat ini dari jumlah dengan nilaiitem; hasilnya kemudian disimpan kembali ke sum. Nilai sebelumnya dari jumlah hancurdalam proses, seperti yang diilustrasikan pada Gambar. 2,5. Nilai barang, bagaimanapun, adalah tidak berubah.

 


Anda juga dapat menulis pernyataan tugas yang menetapkan nilai dari sebuah variabel tunggalatau konstan ke variabel. Jika x dan new_x sedang mengetik variabel ganda, pernyataannew_x = x;salinan nilai variabel x ke new_x variabel. Pernyataannew_x =-x;
memerintahkan komputer untuk mendapatkan nilai x, meniadakan nilai tersebut, dan menyimpan hasilnyadi new_x. Sebagai contoh, jika x adalah 3,5, new_x adalah -3.5. Tak satu pun dari pernyataan penugasanatas perubahan nilai x.

Bentuk Umum Program C
Seperti yang ditunjukkan pada Gambar.2.8, setiap program dimulai dengan arahan preprocessor yangberfungsi untuk memberikan informasi tentang fungsi dari perpustakaan standar dan definisikonstanta Program yang diperlukan. Contoh perintah tersebut # include dan# define. Berbeda dengan deklarasi dan pernyataan eksekusi dari fungsi utamatubuh, arahan preprocessor kita lihat tidak berakhir di titik koma.Sebuah program C sederhana mendefinisikan fungsi utama setelah arahan preprocessor.Sebuah keriting terbuka brace ({) sinyal awal tubuh fungsi utama. dalam hal initubuh, pertama-tama kita melihat deklarasi dari semua variabel yang akan digunakan oleh fungsi utama.Variabel ini diikuti oleh pernyataan yang diterjemahkan ke dalam mesinBahasa dan akhirnya dieksekusi. Laporan kami telah melihat sejauh melakukanperhitungan atau operasi input / output. Akhir dari tubuh fungsi utamaditandai dengan penutupan keriting brace (}).C memperlakukanistirahat yang paling baris seperti ruang sehingga pernyataan C dapat memperpanjang selama lebihdari satu baris.Anda tidak harus membagi pernyataan yang membentang selama lebih dari satu barisdi tengah-tengah sebuah identifier, kata cipta, sebuah konstanta, atau format string.

2.6 Formatting Numbers in Program Output
C menampilkan semua nomor dalam notasi default kecuali Anda menginstruksikan untuk melakukan sebaliknya.
Bagian ini menjelaskan cara menentukan format atau tampilan output.
Format Nilai int Type
Menentukan format nilai integer ditampilkan oleh program C cukup mudah.
Anda cukup menambahkan nomor antara% dan d dari placeholder% d di
printf format string. Jumlah ini menentukan bidang lebar-jumlah kolom
digunakan untuk menampilkan nilai. Pernyataan
printf ("Hasil:% 3d meter =% 4d ft% 2d masuk \ n",
meter, kaki, inci);
menunjukkan bahwa 3 kolom akan digunakan untuk menampilkan nilai meter, 4 kolom akan
digunakan untuk kaki, dan 2 kolom akan digunakan untuk inci (angka antara 0 dan
11). Jika meter adalah 21, kaki adalah 68, dan 11 inci adalah, output program ini akan
Hasil: 21 meter = 68 ft 11 inci
Dalam baris ini, melihat bahwa ada ruang ekstra sebelum nilai meter (21) dan
dua tambahan spasi sebelum nilai kaki (68). Alasannya adalah bahwa placeholder
untuk meter (% 3d) memungkinkan ruang untuk 3 digit yang akan dicetak. Karena nilai
meter adalah antara 10 dan 99, dua angka yang ditampilkan benar-dibenarkan, didahului
oleh satu ruang kosong. Karena tempat untuk kaki (% 4d) memungkinkan ruang untuk 4 digit,
mencetak dua digit nilai kanan dibenarkan meninggalkan dua ruang kosong ekstra. Kita dapat menggunakan
yang% placeholder 2d untuk menampilkan setiap nilai integer antara -9 dan 99. Placeholder
4d% bekerja untuk nilai-nilai dalam kisaran -999 sampai 9999. Untuk angka negatif,
Tanda minus termasuk dalam hitungan angka yang ditampilkan.
Tabel 2.14 menunjukkan bagaimana dua nilai integer ditampilkan menggunakan format yang berbeda
String penampung.The karakter merupakan karakter kosong. Baris terakhir
menunjukkan bahwa C memperluas lebar lapangan jika terlalu kecil untuk nilai integer ditampilkan.
Format Nilai ganda Type
Untuk menggambarkan spesifikasi format untuk nilai tipe double, kita harus menunjukkan baik
lebar bidang total yang dibutuhkan dan jumlah tempat desimal yang diinginkan. Jumlah
lebar lapangan harus cukup besar untuk menampung semua angka sebelum dan sesudah
titik desimal. Akan ada setidaknya satu digit sebelum titik desimal karena 

 
 

nol dicetak sebagai bagian keseluruhan jumlah fraksi yang kurang dari 1,0 dan
lebih besar dari -1.0. Kita juga harus mencakup kolom tampilan untuk titik desimal
dan untuk tanda minus jika nomor bisa menjadi negatif. Bentuk format string
placeholder adalah n%. mf dimana n adalah angka yang mewakili lebar bidang total, dan m
adalah jumlah yang diinginkan dari tempat desimal.
Jika x adalah variabel tipe double yang nilainya akan berada di antara -99,99 dan
999,99, kita bisa menggunakan% 6.2f placeholder untuk menampilkan nilai dari x ke
akurasi dari dua tempat desimal. Tabel 2.15 menunjukkan nilai yang berbeda dari x ditampilkan
menggunakan spesifikasi format. Nilai-nilai yang ditampilkan dibulatkan ke dua desimal
tempat dan ditampilkan kanan dibenarkan dalam enam kolom. Ketika Anda putaran ke dua
desimal tempat, jika digit ketiga bagian pecahan nilai adalah 5 atau lebih besar,
digit kedua bertambah dengan 1 (-9,536 menjadi -9,54). Jika tidak, angka
setelah digit kedua fraksi hanya turun (-25,554 menjadi
-25,55).
Tabel 2.16 menunjukkan beberapa nilai-nilai yang ditampilkan menggunakan placeholder lainnya.
Baris terakhir menunjukkan itu legal untuk menghilangkan lebar bidang total dalam format string
placeholder. Jika Anda menggunakan placeholder seperti%.m f untuk menentukan hanya jumlah
desimal, nilai akan dicetak tanpa kosong terkemuka.

 


Program Gaya Menghilangkan Kosong MemimpinSeperti yang ditunjukkan pada Tabel 2.14 sampai 2.16, nilai yang seluruh-nomor bagian membutuhkankolom tampilan lebih sedikit dari yang ditentukan oleh lebar lapangan Format ditampilkan denganmemimpin kosong. Untuk menghilangkan kosong terkemuka ekstra, menghilangkan lebar lapangan dariformat string placeholder. D placeholder sederhana% akan menyebabkan nilai integer untukditampilkan tanpa kosong terkemuka. Sebuah placeholder% dari bentuk.m f memiliki samaefek untuk nilai tipe double, dan placeholder ini masih memungkinkan Anda untuk memilihjumlah tempat desimal yang Anda inginkan.

Interactive Mode, Batch Mode, and Data Files
Ada dua mode dasar operasi komputer: modus batch dan interaktifmodus. Program-program yang kita tulis sejauh berjalan dalam mode interaktif.dalam interaktifmode, pengguna program berinteraksi dengan program dan jenis data sementarasedang berjalan. Kami termasuk meminta agar pengguna program tahu kapan harus memasukkan setiap Data item.Dalam modus batch, program memindai data dari sebuah file data yang disiapkansebelumnya bukannya berinteraksi dengan penggunanya.
Gambar 2.14 menunjukkan program mil-to-kilometer konversi ditulis kembali sebagai batchProgram. Kami berasumsi sini bahwa perangkat input standar dikaitkan dengan batchData mengajukan bukan dengan keyboard. Pada kebanyakan sistem, hubungan ini dapatdicapai relatif mudah melalui input / output redirection menggunakan sistem operasiperintah. Misalnya, dalam ® dan MS-DOS UNIX ® sistem operasi, Andadapat menginstruksikan program untuk mengambil input dari mydata.txt file bukan darikeyboard dengan menempatkan simbol mydata.txt <pada akhir baris perintahyang menyebabkan program anda dikompilasi dan dihubungkan untuk mengeksekusi. Anda harus menggunakan editorprogram atau pengolah kata untuk membuat mydata.txt file teks sebelum mencoba untukmenjalankan program. Jika Anda biasanya menggunakan baris perintah
metric
to execute this program, your new command line would be
metric<mydata.txt


Program Style Echo Prints versus Prompts
In Fig. 2.14 , the statement

scanf("%lf", &miles);
mendapat nilai untuk mil dari garis (dan hanya) pertama dari file data. KarenaProgram masukan berasal dari file data, tidak perlu mendahului pernyataan inidengan pesan mendorong. Sebaliknya, kita mengikuti panggilan untuk scanf dengan pernyataanprintf ("Jarak dalam mil adalah% .2 f \ n.", mil);
Ini gema Pernyataan mencetak atau menampilkan nilai hanya disimpan dalam mil dan menyediakancatatan data dimanipulasi oleh program. Tanpa itu, kita akan memilikiada cara mudah untuk mengetahui apa scanf diperoleh nilai untuk mil. Setiap kali Anda mengkonversiprogram interaktif untuk sebuah program batch, pastikan Anda mengganti setiap pertanyaandengan cetak gema yang mengikuti panggilan untuk scanf.
Output Redirection
Anda juga dapat mengarahkan output program ke file disk bukan ke layar. KemudianAnda dapat mengirim file output ke printer (menggunakan perintah sistem operasi) untukmendapatkan hard copy dari output program. Dalam UNIX atau MS-DOS, gunakan simbol> myoutput.txt untuk mengarahkan output dari layar untuk mengajukan myoutput.txt. andatidak perlu membuat myoutput.txt file sebelum menjalankan program.




memiliki file yang sudah ada dengan nama ini, isinya akan ditimpa saat AndaProgram berjalan. Baris perintah
metrik myoutput.txt>
mengeksekusi kode dikompilasi dan dihubungkan untuk metrik program, mengambil masukan Programdari keyboard dan output menulis program untuk mengajukan myoutput.txt. Namun,berinteraksi dengan program berjalan akan sulit karena semua output program,termasuk pesan yang meminta, akan dikirim ke file output. Akan lebih baik
menggunakan baris perintah
metrik <mydata.txt> myoutput.txt
yang akan mengambil input program dari mydata.txt file data dan mengirimkan keluaran program
file output myoutput.txt.

2.8 Common Programming Errors
Saat Anda mulai program, segera Anda akan menemukan bahwa program jarang berjalan dengan benarpertama kalinya dijalankan. Hukum Murphy, "Jika sesuatu bisa salah, itu akan,"tampaknya telah ditulis dengan program komputer dalam pikiran. Bahkan, kesalahanbegitu umum bahwa mereka memiliki khusus mereka sendiri nama-bug-dan prosesmengoreksi mereka disebut debug program. (Menurut cerita rakyat komputer,pelopor komputer Dr Grace Murray Hopper didiagnosis kesalahan hardware pertama disebabkan oleh serangga yang besar ditemukan di dalam komponen komputer).
potensi masalah, kami akan memberikan bagian pada kesalahan pemrograman umum diakhir setiap bab.
Ketika compiler mendeteksi kesalahan, komputer akan menampilkan pesan kesalahan,yang menunjukkan bahwa Anda telah melakukan kesalahan dan apa penyebab kemungkinan kesalahanmungkin. Sayangnya, pesan kesalahan sering sulit untuk menafsirkan dankadang-kadang menyesatkan. Seperti yang Anda mendapatkan pengalaman, Anda akan menjadi lebih mahirmenemukan dan memperbaiki kesalahan.
Tiga jenis kesalahan-kesalahan sintaks, kesalahan run-time, dan logika-kesalahan dapatterjadi, seperti yang dibahas pada bagian berikut.

Syntax Errors
Sebuah kesalahan sintaks terjadi ketika kode Anda melanggar aturan tata bahasa satu atau lebih dariC dan dideteksi oleh compiler karena upaya untuk menerjemahkan program anda. JikaPernyataan memiliki kesalahan sintaks, tidak dapat diterjemahkan dan program Anda tidak akandieksekusi.
Gambar 2.15 menunjukkan daftar compiler dari konversi mil-to-kilometerProgram.daftar compiler adalah daftar yang dibuat oleh kompilator selama programterjemahan yang menunjukkan setiap baris dari program sumber (didahului oleh nomor baris)dan setiap kesalahan sintaks terdeteksi oleh kompilator. Untuk compiler tertentu, kesalahanditandai dengan garis-garis yang dimulai dengan tanda bintang lima. Berikut ini adalah tentang kesalahanyang terjadi pada sintaks:
Hilang titik koma pada akhir deklarasi variabel (di baris 271)
variabel dideklarasikan mil (terdeteksi di baris 275 dan 278)
komentar terakhir tidak ditutup karena kosong * / close-komentar urutan(di baris 280)
Sebenarnya format daftar dan pesan kesalahan yang dihasilkan oleh kompilatormungkin berbeda dengan Gambar. 2.15. Memang, banyak C compiler tidak menghasilkandaftar sama sekali, tetapi hanya menampilkan pesan error. Dalam daftar ini, setiap kali kesalahan terdeteksi, compiler menampilkan garis start dengan lima tanda diikuti olehpesan kesalahan. Perhatikan bahwa garis ditandai untuk kesalahan tidak selalu baris yang berisiprogrammer kesalahan.(Misalnya, kesalahan terjadi di baris 271 adalahditandai demi baris 274.)Compiler mencoba untuk memperbaiki kesalahan di mana pun bisa.Lihatlah baris 271dalam daftar, melainkan hilang titik koma di akhir. Compiler tidak bisa memastikanbahwa titik koma ini hilang sampai proses simbol printf on line 274.Karena printf bukan koma atau titik koma, compiler kemudian tahu bahwapernyataan deklarasi variabel dimulai pada baris 271 tidak sedang terusbaris lain.
Kita melihat beberapa kasus di mana salah satu daftar ini kesalahan programmer mengarahke generasi pesan kesalahan ganda. Sebagai contoh, deklarasi hilanguntuk mil variabel menyebabkan pesan kesalahan yang akan dicetak setiap mil kali digunakandalam program. Pesan ini juga akan terjadi jika kita ingat untuk mendeklarasikan milnamun mistyped itu (mungkin sebagai Milles) dalam pernyataan deklarasi. Deklarasi hilanguntuk mil juga menyebabkan pesan kesalahan kedua on line 275.Karenaalamat-operator harus memiliki variabel sebagai operan nya, fakta bahwa mil tidakdinyatakan sebagai variabel membuat sebuah operan tidak valid.
Urutan dekat-komentar karakter mistyped juga menyebabkan beberapa pesan.Karena teks berlaku dalam komentar, compiler tidak menyadari bahwaada masalah sampai datang ke akhir dari file sumber tanpamengalami} untuk mengakhiri program! Setelah mengeluh tentang ini tak terdugaperistiwa (lihat baris berikut baris 284), itu melakukan apa yang bisa untuk memperbaiki situasidengan menutup komentar pada akhir teks file sumber dan menambahkan} untuk mengakhiriProgram benar.
Salah ketik urutan dekat-komentar dapat menyebabkan kesalahan yang sangat sulituntuk menemukan. Jika komentar yang tidak benar ditutup adalah di tengah-tengah program,compiler hanya akan terus memperlakukan baris program sebagai teks komentar sampaidatang ke * / yang menutup komentar berikutnya. Ketika Anda mulai mendapatkan pesan erroryang membuat Anda berpikir compiler Anda tidak melihat bagian dari program Anda, recheckAnda komentar hati-hati. Dalam kasus terburuk, memperlakukan laporan dieksekusi sebagai

FIGURE 2.15
221 /* Converts distances from miles to kilometers. */
222
223 #include <stdio.h> /* printf, scanf definitions */
266 #define KMS_PER_MILE 1.609 /* conversion constant */
267
268 int
269 main(void)
270 {
271 double kms
272
273 /* Get the distance in miles. */
274 printf("Enter the distance in miles> ");
***** Semicolon added at the end of the previous source line
275 scanf("%lf", &miles);
***** Identifier "miles" is not declared within this scope
***** Invalid operand of address-of operator
276
277 /* Convert the distance to kilometers. */
278 kms = KMS_PER_MILE * miles;
***** Identifier "miles" is not declared within this scope
279
280 /* Display the distance in kilometers. * /
281 printf("That equals %f kilometers.\n", kms);
282
283 return (0);
284 }
***** Unexpected end-of-file encountered in a comment
***** "}" inserted before end-of-file
Komentar tidak mungkin menyebabkan kesalahan sintaks-maka program hanya akan berjalan salah.
Salah ketik urutan terbuka-komentar / * akan membuat upaya compileruntuk memproses komentar sebagai pernyataan C, menyebabkan kesalahan sintaks.
Strategi Anda untuk mengoreksi kesalahan sintaks harus mempertimbangkan fakta bahwasatu kesalahan dapat menyebabkan pesan kesalahan banyak. Ini sering merupakan ide yang baik untuk berkonsentrasi padamengoreksi kesalahan di bagian deklarasi dari program pertama. Kemudian mengkompilasi ulangProgram sebelum Anda mencoba untuk memperbaiki kesalahan lain. Banyak pesan kesalahan lainnyaakan hilang setelah deklarasi sudah benar.
Kesalahan sintaks sering disebabkan oleh penggunaan yang tidak benar dari tanda kutip denganFormat string.Pastikan bahwa Anda selalu menggunakan kutipan (") untuk memulai dan mengakhiri string.

Run-Time Errors
Run-time kesalahan yang terdeteksi dan ditampilkan oleh komputer selama eksekusidari sebuah program. Sebuah kesalahan run-time terjadi ketika program mengarahkan komputer untukmelakukan operasi ilegal, seperti membagi nomor dengan nol. Ketika run-timekesalahan terjadi, komputer akan berhenti mengeksekusi program Anda dan akan menampilkan diagnostik pesan yang menunjukkan garis mana kesalahan terdeteksi.
Program pada Gambar.2.16 mengkompilasi berhasil, tetapi tidak dapat dijalankan sampai selesaijika bilangan bulat pertama masuk lebih besar dari yang kedua. Dalam kasus ini, integer divisimenyebabkan nilai yang diberikan untuk temp di baris 271 menjadi nol. Menggunakan suhu sebagai pembagi dalam
baris 272 menyebabkan membagi dengan nol kesalahan ditampilkan.
Kesalahan terdeteksiBanyak kesalahan eksekusi tidak dapat mencegah program C dari berjalan sampai selesai,tapi mereka hanya dapat menyebabkan hasil yang salah. Oleh karena itu, adalah penting bahwa Andamemprediksi hasil program Anda harus menghasilkan dan memverifikasi bahwa output actual benar.
Sebuah sumber yang sangat umum dari hasil yang salah dalam program C adalah masukan dari campurankarakter dan data numerik. Kesalahan dapat dihindari jika programmer selaluterus dalam pengobatan pikiran scanf 's berbeda dari placeholder c% di satu sisiRun-time kesalahan yang terdeteksi dan ditampilkan oleh komputer selama eksekusi dari sebuah program. Sebuah kesalahan run-time terjadi ketika program mengarahkan komputer untukmelakukan operasi ilegal, seperti membagi nomor dengan nol. Ketika run-timekesalahan terjadi, komputer akan berhenti mengeksekusi program Anda dan akan menampilkan diagnostik pesan yang menunjukkan garis mana kesalahan terdeteksi.
Program pada Gambar.2.16 mengkompilasi berhasil, tetapi tidak dapat dijalankan sampai selesaijika bilangan bulat pertama masuk lebih besar dari yang kedua. Dalam kasus ini, integer divisimenyebabkan nilai yang diberikan untuk temp di baris 271 menjadi nol. Menggunakan suhu sebagai pembagi dalambaris 272 menyebabkan membagi dengan nol kesalahan ditampilkan.

Kesalahan terdeteksi
Banyak kesalahan eksekusi tidak dapat mencegah program C dari berjalan sampai selesai,tapi mereka hanya dapat menyebabkan hasil yang salah. Oleh karena itu, adalah penting bahwa Andamemprediksi hasil program Anda harus menghasilkan dan memverifikasi bahwa output actual benar.Sebuah sumber yang sangat umum dari hasil yang salah dalam program C adalah masukan dari campurankarakter dan data numerik. Kesalahan dapat dihindari jika programmer selaluterus dalam pengobatan pikiran scanf 's berbeda dari placeholder c% di satu sisi

FIGURE 2.16
111 #include <stdio.h>
262
263 int
264 main(void)
265 {
266 int first, second;
267 double temp, ans;
268
269 printf("Enter two integers> ");
270 scanf("%d%d", &first, &second);
271 temp = second / first;
272 ans = first / temp;
273 printf("The result is %.3f\n", ans);
274
275 return (0);
276 }
Enter two integers>14 3
Arithmetic fault, divide by zero at line 272 of routine main
setiap kosong dan tombol enter pada input ketika nilai numerik dipindai. DiSebaliknya, scanf tidak melompat ketika scan karakter kecuali placeholder% cdiawali dengan kosng.
Gambar 2.17 menunjukkan apa yang tampaknya menjadi revisi minor ke awal fungsiutama untuk program supermarket koin prosesor dari Gambar. 2.13. Kami telah menambahkansatu tahun variabel integer, dan kami meminta nilai tahun sebelum mendapatkan penggunainisial. Jika pengguna jenis pada tahun 2011 dan kemudian huruf BMC, kami harapkan keduapanggilan untuk printf untuk menampilkan pesanBMC, silahkan masukkan informasi koin Anda untuk 2011.Sebaliknya, ini akan menampilkan sebuah baris kosong diikuti olehBM, silahkan masukkan informasi koin Anda untuk 2011.Untuk memahami mengapa, mari kita memeriksa status memori pada saat panggilanuntuk printf.
FIGURE 2.17
int
2. main(void)
3. {
4. char first, middle, last; /* input - 3 initials */
5. int pennies, nickels; /* input - count of each coin type */
6. int dimes, quarters; /* input - count of each coin type */
7. int dollars; /* input - count of each coin type */
8. int change; /* output - change amount */
9. int total_dollars; /* output - dollar amount */
10. int total_cents; /* total cents */
11. int year; /* input – year */
12.
13. /* Get the current year. */
14. printf("Enter the current year and press return> ");
15. scanf("%d", &year);
16.
17. /* Get and display the customer's initials. */
18. printf("Type in 3 initials and press return> ");
19. scanf("%c%c%c", &first, &middle, &last);
20. printf("\n%c%c%c, please enter your coin information for %d.\n",
21. first, middle, last, year);
...
Year                        frist                         middle                   last
2012                       \n                             B                             M
Nilai tahun adalah benar, tetapi tiga karakter yang disimpan tidak 'B', 'M','C', tapi '\ n', 'B', dan 'M'. N \ di pertama adalah karakter yang dihasilkan daripengguna menekan tombol Enter setelah memasukkan nomor 2011. Scan dari 2011berhenti di karakter ini, jadi itu adalah karakter pertama diproses oleh pernyataanscanf ("% c% c% c", & pertama, & menengah, & terakhir);Karena huruf C itu belum dipindai, maka akan dipindai selama berikutnyascanf menelepon. Hal ini akan menyebabkan masalah lebih lanjut. Pernyataanscanf ("% d", & dolar);tidak menyalin nilai ke dalam dolar karena karakter berikutnya untuk memindai adalah C, yangbukan karakter digit. Akibatnya, dolar akan mempertahankan nilai apa pun itu terjadiuntuk memiliki. Hal yang sama berlaku untuk kuartal variabel, dime, sen, dan uang,dan, karena itu, hasil yang ditampilkan oleh program ini akan menjadi tidak berarti.
Salah satu cara sederhana untuk memperbaiki program tersebut akan menyisipkan spasi sebelum% c pertama placeholder. Kemudian scanf akan melewatkan spasi (termasuk tombol enter) sebelumpemindaian karakter.
scanf ("% c% c% c", & pertama, & menengah, & terakhir);
Gambar 2.18 menunjukkan kesalahan lain yang tidak menyebabkan program untuk membatalkan denganpesan error run-time. Programmer telah ditinggalkan operator yang & (address-of)pada variabel dalam panggilan untuk scanf.Karena scanf tidak tahu di mana untuk menemukanpertama dan kedua, tidak mampu untuk menyimpan di dalamnya nilai-nilai yang dimasukkan oleh pengguna.Di hal ini, program ini berjalan sampai selesai menggunakan apapun "sampah" nilai-nilai yangawalnya di lokasi memori bernama pertama dan kedua.

Logika eror
kesalahan biasanya tidak menyebabkan run-time kesalahan dan tidak menampilkan pesan error,mereka sangat sulit untuk dideteksi. Satu-satunya tanda dari kesalahan logika mungkin salahoutput program. Anda dapat mendeteksi kesalahan logika dengan menguji program secara menyeluruh,membandingkan output nya ke hasil dihitung. Anda dapat mencegah kesalahan logika dengan hati-hatitabel memeriksa algoritma dan program sebelum Anda ketik masukKarena debugging dapat memakan waktu, merencanakan solusi program andahati-hati dan meja memeriksa mereka untuk menghilangkan bug awal. Jika Anda tidak yakinSintaks untuk pernyataan tertentu, mencarinya dalam teks atau dalam buku sintakstercetak di sampul belakang bagian dalam. Mengikuti pendekatan ini akan menghemat waktu danmenghindari masalah.



FIGURE 2.18
#include <stdio.h>
2.
3. int
4. main(void)
5. {
6. int first, second, sum;
7.
8. printf("Enter two integers> ");
9. scanf("%d%d", first, second); /* ERROR!! should be &first, &second */
10. sum = first + second;
11. printf("%d + %d = %d\n", first, second, sum);
12.
13. return (0);
14. }
Enter two integers>14 3
5971289 + 5971297 = 11942586

Bab Ulasan
1. Setiap program C memiliki arahan preprocessor dan fungsi utama. Utama fungsi berisi deklarasi variabel dan pernyataan dieksekusi.
2. Nama variabel harus dimulai dengan huruf atau underscore (yang terakhir tidak dianjurkan)dan terdiri dari huruf, angka, dan garis bawah simbol. Sebuah cadangankata tidak dapat digunakan sebagai identifier.
3. Tipe data C memungkinkan compiler untuk menentukan bagaimana untuk menyimpan tertentunilai dalam memori dan apa operasi dapat dilakukan pada nilai tersebut.Tiga standar tipe data int, d ouble, dan char. Tipe data dari masing-masingvariabel harus dideklarasikan.
4. Laporan dieksekusi berasal dari algoritma dan dijabarkanke dalam bahasa mesin. Pernyataan penugasan digunakan untuk melakukanperhitungan dan hasil simpan dalam memori.Pemanggilan fungsi yang digunakan untuk mendapatkan data (fungsi scanf) dan untuk menampilkan nilai-nilai yang tersimpan dalam memori (fungsiprintf).

  



Tidak ada komentar:

Posting Komentar