2014年8月7日 星期四

不同標頭檔的作法!!

從開始寫這個網誌開始,我只利用單一的編輯檔進行compile文件的工作。但當程式變大時一定會面臨一個問題,便是重複定義的問題,而這類型的問題程式工作者習慣性的把想要使用的標頭檔用另外一個名稱將它存檔像這樣 science.h,只要將檔名寫程如此便能讓電腦辨別,這個檔案本身是標頭檔。但這樣我們要如何在cpp檔案中使用呢?
----------------------------------------------------------------------------------------
// science.cpp
#include <iostream>
#include "science.h"    //只要cpp底下include 進這個檔名就可使用

---------------------------------------------------------------------
利用一些簡單的範例幫助理解:

//science.h
#include <iostream>
using std::cout;
void printscience(double a)
{
               cout<<a;
}

//science.cpp
#include <iostream>
#include "science.h"
int  main( )
{
             using std::cout;
             double b;
             printscience(b);
              
                return 0;
}

只要把上面的cpp檔compile 就可以形成一個執行檔

---------------------------------------------------------------

接下來我要介紹一個方法,我們常常會在main()前面用#define 來定義一個常數或數值但但常常會面臨當重複定義常數的問題,就像上面所提到。如果今天發現沒有定義那也可以用#ifndef的方法來進行標頭檔的定義。

------------------------------------------------------------------
//science.h
#ifndef SCIENCE_H_
#define SCIENCE_H_
struct data
{
               char name;
               int age;
};
typedef struct data DATA;
#endif

將上述的標頭檔定義完後變能夠充分的使用他了,接下來只要跟前面範例方法一樣#include "science.h"便能講整個檔案作定義出使用struct這個架構,這麼簡單的方法一定要快點學起來才行。





2014年8月5日 星期二

一個簡單選單的製作~~~~

想要做一個簡單的選單其實只要掌握幾樣技巧便可以了,while迴圈的用法以及switch的使用方法,當然我也會在底下提到enum列舉的方法。
-------------------------------------------------------------------
#include <iostream>
using namespace std;
enum{Jerry, Benson , Chris ,Anderson, Eric}
void showmenu()
int main()

              int fav;-
             showmenu( );
             cout << "請輸入你最喜歡的英文姓名(0~4):
            cin>>fav;
            while(fav>=Jerry&&fav<=Eric)
            {
                            switch (fav)             //利用switch語法將選單會出現的函數或者是文字最切換
                           {        case 0:        
                                           cout<< "你最喜歡使用的英文姓名為:"<<fav;
                                                                                 break;

                                    case 1:
                                            cout<<"你最喜歡使用的英文姓名為:"<<fav;
                                                                                 break;
                                    case 2:
                                             cout<<"你最喜歡使用的英文姓名為:"<<fav;
                                                                                  break;
                                    case 3:
                                              cout<<"你最喜歡使用的英文姓名為:"<<fav;
                                                                                  break;
                                    case 4:
                                              cout <<"你最喜歡的英文姓名為:" <<fav;
                                                                                  break;
                                 default :                           //偵測到錯誤資訊時該如何執行
                                                 break;
                                }
                                 showmenu( );
                                 cin>>fav;
           }
            return 0;
}

void showmenu( )
{
                            cout <<"選出你的最愛吧"<<endl;
              cout << "0)  Jerry                       1)      Benson  \n";
              cout << "2) Chris                        3)      Anderson \n";
              cout <<" 5)  Eric";
}
-------------------------------------------------------------------------
上列的做法是較簡單的方式去製作選單,當然裡面使用的enum方式來進行列舉可以多多練習,當然switch的語法也可以轉換成利用字元來處理,這裡我就不多說了。





邏輯判斷範例

上一篇寫了有關於邏輯方面的程式,但是並沒有寫出一個介紹,所以我就把我練習的程式po上來讓大家參考。
-------------------------------------------------------------------------------------
#include <iostream>
#include <cctype)
using namespace std;
int main()
{
              char ch;
              int alpha;
              int blank;
             cout << "輸入任一個字元,我便能辨別他:"<<endl;
             cin.get(ch);                         //接收到的字元符號
             while(ch!='a')                         //給while迴圈一個辨別的\依據

              {
                         if(isalpha(ch))
                          {
                                    cout<<"you get the alpha!!!!";
                                             break;
                           }
                           else if(isblank(ch))
                           {
                                    cout<<"you get the blank";
                                            break;
                             }
                             else 
                                           break;
                  }

                  return 0;

}
----------------------------------------------------------------------------------
上面是個簡單的寫法,可以使用各種不同的方法嘗試,當然也可以用C語言來試試看。





                           

2014年8月4日 星期一

邏輯判別介紹

在寫程式時最重要的就是前後的邏輯性,如果沒有邏輯性的話很難跟電腦溝通,所以現在些對邏輯運算子提出些介紹。

&& 表示and
| |    表示 or
!      表示 not
---------------------------------------------------------------------
1.  這是and的邏輯關係
x>10&&x<100   表示當條件滿足x>10和x<100時會發生的情形,也可把它看成(x>10)&&(x<100)

2.  這是or的關係 x>10 || x<100  //  (我不知道你會不回找不到"||"這個符號我一開始找很久,在enter鍵附近。)

------------------------------------------------------------------------

在程式撰寫中,AND的邏輯關係比OR的邏輯關係有優先權,如果我們要篩選奧林匹亞物理比賽的選手參賽,我先要求是高中生,如果高中生無法勝任(雖然不可能)也只能要求要是他們的成績能超過某個測驗420分
3. age >16 && age <18 ||  score >420
上面便是所謂的優先權的部分。

--------------------------------------------------------------------------
C++ 繼承了C的字元相關函數,這裡介紹一個標頭檔cctype(cctype.h),這些主要用來判斷字元的大小等等。ex:isalpha(ch) 函數在ch為字母,傳回非0值,否則傳回0值ˋ。這類型的判斷我將整理在底下的函數。

isalum()  括號內的字母與數字,傳回true值。
isalpha() 括號內的是字母,傳回true值。
isblank() 括號內的是空白或tab鍵,傳回true值。
iscntrl()   括號內的是控制字元,傳回true值。
isdigit()   括號內的是十進位數字,傳回true值。
isgraph() 括號內的是印出的字元,傳回true值。
islower() 括號內的是小寫的字元,傳回true值。
isprint()   括號內的是可以印出的字元,包括空白,傳回true值。
ispunct() 括號內的是標點符號的字元,傳回true。
isspace() 括號內的是正常空白,傳回true值。
issuper()  括號內的是寫字母,傳回true值。
tolower() 若是大寫字元回傳回小寫字元,其他則會傳回源字元。
toupper()  若是小寫的字元,傳回大寫,其他原字元。


之後會在寫出一個練習用的cpp檔讓他家觀看。我自己是覺得以上的東西先了解就可以了,因為沒什麼直接的關係,只是當作會多使用一種字元函數就可以了。

淺談C與C++

前面好像在寫C++的科學計算寫的有點太快,決定慢下腳步打好C的基礎,在進行C++的修練,基本上C和C++沒什麼不一樣,不過因為一開始我先學了C++這個語言讓我沒有打好C的基礎。所以我一樣從基本的介紹起:
#include <stdio.h>  還記得一開始寫C++時利用如下:

------------------------------------------------------------------
#include <iostream>
using namespace std;
int main()
{
         cout<<" 世界真的很奇妙~~~";
         cout<<"世界真的妙妙妙!!!";
     
         return 0;
}
現在我在底下利用C語言來寫。

------------------------------------------------------------------

#include <stdio.h>
int main()
{
         printf("世界真的很奇妙~~~");
         printf("世界真的妙妙妙!!!!")l

         return 0;
}
我寫已經很明顯的看出差異了,利用C寫出來的比C++簡潔了一點,但這只是簡單的介紹,在C語言中利用printf 和scanf 這兩個語言來代表C++中cout 和cin這兩個功能。
-----------------------------------------------------------------------


我在底下用一個簡單且完整的範例來介紹這兩個語法

第一個是C的寫法
-----------------------------------------------------------------------
#include <stdio.h>
int main()
{
              int i;
              double  num;
           
              printf("請輸入一個1~10的數字:");
              scanf("%d",&num);
              while(num!=0)
            {
                     if(num<1||num>10)
                     {
                                  printf("你輸入的數字不在1~10之間)
                                  break;
                      }
                       else if
                     
                                 printf("你輸入的數字是%d:",&num);  
              }
     
               system("pause")
               return 0;
}
----------------------------------------------------------------------------------
上面是C的語法結合一點if的用法:,C++的寫法與此無異,在這裡的寫法僅需輸入上面的<iostream> 並把printf的部分改寫成cout和cin這樣的寫法即可。