class 1 踏出 c 語言的第一步

29
Class 1 Class 1 踏踏 踏踏 C C 踏踏踏踏 踏踏踏踏

Upload: vinaya

Post on 19-Jan-2016

62 views

Category:

Documents


0 download

DESCRIPTION

Class 1 踏出 C 語言的第一步. 編譯器 (Compiler). Dev-C++ ( * 請各位回家下載並安裝* ) 下載 : http://bloodshed.net/devcpp.html 免費 , 中文界面 其他常見的編譯器 Visual Studio 2005 Visual Studio 2003 Visual C++ 6.0. 1. 英文轉中文 Tool -> Environment Options ->Interface-> Language. 2. 插入預設的程式碼 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Class 1 踏出 C 語言的第一步

Class 1Class 1踏出踏出 CC語言的第一步語言的第一步

Page 2: Class 1 踏出 C 語言的第一步

編譯器 (Compiler)

Dev-C++ (*請各位回家下載並安裝 *) 下載 : http://bloodshed.net/devcpp.html 免費 , 中文界面

其他常見的編譯器 Visual Studio 2005 Visual Studio 2003 Visual C++ 6.0

Page 3: Class 1 踏出 C 語言的第一步

1. 英文轉中文

Tool -> Environment Options ->Interface-> Language

Page 4: Class 1 踏出 C 語言的第一步

2. 插入預設的程式碼 工具 -> 編輯器選項 -> 程式碼 -> ( 打入程式 ) -> 勾選下面的勾勾 -> 按確定

Page 5: Class 1 踏出 C 語言的第一步

3. 開啟一個新的程式

檔案 -> 開新檔案 -> 原始碼

4. 如果編輯區域的右邊沒有顯示行號

工具 -> 編輯器選項 -> 顯示 -> 勾選顯

示行號

Page 6: Class 1 踏出 C 語言的第一步

第一個程式 - Hello World

#include<stdio.h> 引入一個叫做 stdio 的標頭檔 , 沒有它 , 第 4 行的 printf() 就不能用了

#include<stdlib.h> 引入一個叫做 stdlib 的標頭檔 , 沒有它 , 第 5 行的 system() 就不能用了

main() 主函式 , 程式會從這裡開始執行

printf() 函式 , 功能是印出字串到銀幕上

Page 7: Class 1 踏出 C 語言的第一步

第一個程式 - Hello World

system(“Pause”) 函式 , 功能是讓程式不要馬上結束

return 0 主函式結束

儲存後 , 按下 Ctrl + F9 編譯 按下 Ctrl + F10 執行

Page 8: Class 1 踏出 C 語言的第一步

什麼是前端處理程式?

在 C 語言中,只要前端有『 # 』符號者,皆可稱為前端處理程式

在 C 程式編譯前,這些前端處理程式會先被前置處理器轉換成 C 的程式碼

前端處理程式 意 義#include 引入標頭檔#define 定義巨集

Page 9: Class 1 踏出 C 語言的第一步

#include 對於程式外的標頭檔的引含指令 輸出入相關的函式( printf() 、 scanf()… )都被定義在 stdio.h 標頭檔內 必須在程式最前面加上 #include <stdio.h>

Page 10: Class 1 踏出 C 語言的第一步

#include: 常用到的標頭檔標頭檔名稱 功能說明

stdio.h輸出入庫存函式:getc, putchar, gets, puts, fclose, feof, fgets, fputs, fread, fopen, fwrite, scanf, printf, getchar

stdlib.h轉換庫存函式:atof, atoi, atoll, rand, srand, system

ctype.h字元庫存函式:isalnum, isalpha, isdigit, ispunct, isspace

string.h字串庫存函式:strcat, strcmp, strcpy, strlen, strtok

math.h數學庫存函式:acos, asin, atan, exp, cos, sin, sqrt

io.h輸出入庫存函式:eof, open, close, write, read

conio.h本文視窗顯示庫存函式:clrscr, getch, getche

time.h時間日期庫存函式:time, gettime, getdate, setdate, settime

Page 11: Class 1 踏出 C 語言的第一步

更多有關函式的資訊

可參考的網站 1 http://www.cplusplus.com/reference/clibrary/

Google 輸入函式名稱 + C Ex. “scanf c++”

Page 12: Class 1 踏出 C 語言的第一步

#define

使用者定義常數、數學運算式、字元或字串 語法

#define 名稱 常數 #define 名稱 數學運算式 #define 名稱 字元或字串

如 : #define PI 3.1415 如 : #define PAUSE system(“Pause”)

Page 13: Class 1 踏出 C 語言的第一步

資料型態與變數宣告 變數

程式中用來儲存資料空間的名字 要使用變數之前,要先加以宣告

語法:資料型態 變數名稱 如: int a;

資料型態會影響該變數的儲存方式、儲存空間、數值範圍與運算方式

資料型態 英文名稱 儲存空間 數值範圍

數值

短整數 short 2 Bytes -32768~32767 (-215~215-1)整數 int 4 Bytes -231~231-1長整數 long 4 Bytes -231~231-1

浮點數 float 4 Bytes 1.175494351e-38~3.402823466e+38

倍精度浮點數

double 8 Bytes 2.2250738585072014e-308~1.7976931348623158e+308

字元 char 1 Bytes -128~127布林 bool 1 Bytes true( 真 ) 或 false( 假 )

a

Page 14: Class 1 踏出 C 語言的第一步

變數的宣告 變數初始值設定的語法為

資料型態 變數名稱 = 初始值 ; int a=2;

宣告變數 a 的資料型態為整數,初始值為 2 。 char c =’A’;

宣告變數 c 的資料型別為字元,初始值為’ A’ 。 int a, b=3, c;

多個變數定義只須以逗號 (,) 隔開每一個變數。 變數名稱命名規則

必須以英文字開頭 可以包含英文字、數字和底線 (_) 英文字母的大小寫將視為不同。

Page 15: Class 1 踏出 C 語言的第一步

基本數值運算子

+ , - , * , / 運算子 如: var1+var2;

% 運算子 取餘數運算子,只有整數可以用 如: 7%4 的結果為 3

= 運算子 指定運算子,將右邊的運算式結果指定給左邊的變數 如: a=3*b-c+11; x=x+3;

3 6x

3+3

x

6

Page 16: Class 1 踏出 C 語言的第一步

基本輸出輸入函式

輸出函式 printf() 輸入函式 scanf() 都定義在 stdio.h 標頭檔內,因此使用前先

用 include #include <stdio.h>

Page 17: Class 1 踏出 C 語言的第一步

輸出函式 printf()

語法 printf( 格式字串 , 變數 1, 變數 2,..., 變數 n); “變數 1, 變數 2,..., 變數 n” 是在需要將變數之值印出

時才須給定 格式字串

一個以兩個雙括號包起來的字串 告訴 printf() 它負責印出的資料 printf(“Hello World!\n”); // 將會印出 Hello World!

Page 18: Class 1 踏出 C 語言的第一步

格式字串中常用的符號

轉換字元的種類種 類 表 示 法 功 能 敘 述

整數 (integer)

%d 以十進位方式印出 %o 以八進位方式印出%x 以十六進位方式印出%u

以不帶符號的十進位方式印出

%l 以長整數 (long) 方式印出

浮點數 (float) %f

以 xxx.xxxxxxx 方式印出

%e 以指數的方式印出字元 (char)

%c 以字元方式印出%s 以字串方式印出

其他 (other) - 向左邊靠齊印出

*.* 指定浮點數之精確度

int year=2008;

printf(“Hello World %d \n\n”, year);

Page 19: Class 1 踏出 C 語言的第一步

輸出函式 printf()

印出宣告好的變數或常數內容 在格式字串上以 % 符號跟隨資料型態的對應字元,後面並用逗號將所有變數內容傳給 printf() 函式

int num=123;printf(“ 變數 num 的值為 %d”,num);printf(“ 變數 num 的值為 %d, num+3 的值為 %d”,num,num+3);

// 印出:變數 num 的值為 123

// 印出:變數 num 的值為 123, num+3 的值為 126 課堂練習:參考上面範例,練習印出變數 num 的值,

及 num+3 、 num+5 的值。 ( num 的初始值請自行於宣告變數時給定)

Page 20: Class 1 踏出 C 語言的第一步

再談 printf()

% 後接數字再接輸出的型別 %3d 、 %4d表示將數字填入 3 格和 4 格大小的格子裡 ( 向右對齊 )不過不會限制總長度 ( 可以超過 )

printf(“a%3d”, 12); 輸出 printf(“a%4d”, 12); 輸出

%6f 表示將小數填入 6 格中 ( 包含小數點 ) printf(“a%6f\n”, 2.345) ); 輸出

%.2f 表示小數後只印出 2 位 ( 會四捨五入 ) printf(“a%.2f\n”, 2.345) ); 輸出

%6.2f 表示小數後印 2 位,並且全部填入 6 格中 printf(“a%6.2f\n”, 2.345) ); 輸出

Page 21: Class 1 踏出 C 語言的第一步

特殊控制碼特殊控制碼

種 類 功 能 敘 述 \n newline 新行\r carriage return 回歸鍵\t tab 跳格\b backspace 退位\f form feed 跳頁\\ backslash 反斜線\' single quote 單引號\" double quote 雙引號

Page 22: Class 1 踏出 C 語言的第一步

範例練習

自行宣告一個變數存放全班人數,並以換行( \n )的方式列印出班上同學名字。(避免複雜,請虛構 5 個同學即可)

Page 23: Class 1 踏出 C 語言的第一步

中文顯示的問題

如果有下面的情況

執行視窗上案右鍵 -> 預設值 -> 預設字碼選950

Page 24: Class 1 踏出 C 語言的第一步

輸入函式 scanf()

傳遞變數的位址 使用取址運算子 (&) 取得變數的位址 如:

int num;printf(“ 請輸入一個數字 : ”);scanf(“%d”,&num);

以 scanf() 函式來取得資料時 在鍵入資料項之後,要以 Enter作為結束 每一個資料項之間要以空白、 enter 或 tab 隔開 如: scanf(“num=%d”,&num);

// 使用者在輸入時,必須輸入: num=10//10 才會被存入 num 變數中

Page 25: Class 1 踏出 C 語言的第一步

範例練習

請撰寫程式讓使用者輸入出生年月日並輸出。

Page 26: Class 1 踏出 C 語言的第一步

作業一

請撰寫一個程式,使用者可以輸入身高與體重,程式會輸出該使用者的 BMI 資訊提示: BMI = 體重 (公斤 ) / 身高 2(公尺 2) 。

( BMI_○○.cpp )

Page 27: Class 1 踏出 C 語言的第一步

補充 清除輸入緩衝區,讓 scanf()正確執行

fflush(stdin);

如果單純只想印出 %d 用 %% 來代替%

含有中文變數名稱 Dev C++ 不允許 常數的另一種宣告方法

const double pi = 3.14159265897932384;

Page 28: Class 1 踏出 C 語言的第一步

補充─型別轉換

用在運算元素型別不同時 通常是將定義較”狹小”的轉成較”寛大”的

例:整數和實數相加的話,相加的整數先轉成實數 沒意義的運算式是不准許的

例:將浮點實數當作陣列索引 轉換後會失去一些訊息

編譯器可能會出現警告,不過仍然可以作 例 1 :將較長型的整數指派給較小型的整數 例 2 :將浮點實數指派給整數變數

Page 29: Class 1 踏出 C 語言的第一步

型別轉換 2 執行指定敘述時轉換也會發生

此時不分高低,等號右邊的值會被轉成等號左邊變數相同的型別

指定敘述可能將 long 轉成較短的 int 或 short 甚至 char ,此時只是將較高階的位元捨棄

下例中的結果 c 的值不會變 int i;

char c;i = c;c = i;

如果改寫成下面這樣, i 的值就有可能改變 c = i;

i = c;