自學日記

學習程式相關知識及學習法

0%

Pseodo Code(虛擬碼)

Pseodo Code(虛擬碼)

介紹何謂虛擬碼

什麼是虛擬碼

又稱為偽代碼,是高層次描述演算法的一種方法。它不是一種現實存在的程式語言;它可能綜合使用多種程式語言的語法、保留字,甚至會用到自然語言。 -引用自維基百科-虛擬碼

由此可知,虛擬碼不限於任何程式語言,做為幫助我們以邏輯思考,理解解釋代碼的語法、規則、內涵和結構,再將每個步驟安排,在以自己會的程式語言撰寫出來:

  • 想好模擬碼與流程圖
  • 實現並排除錯誤

經典範例Fizz Buzz

if 被3整除
印出 Fizz
if 被5整除
印出 Buzz
if 被15整除
印出 Fizz Buzz

由上面的條件,我們可以先從文字條件規劃一下流程圖,

先以文字順序規劃想法:

  • 數字1-30(程式代入i=1)->被3整除->印出Fizz
  • 無法被3整除但可以被5整除->印出Buzz
  • 皆無法但可以被15整除?(有點奇怪!)
  • 應該把能被15整除移至前面步驟。

經過上面思考順序改成:

  • 數字1-30(程式代入i=1)->能被15整除->印出FizzBuzz
  • 無法被整除但能被3整除->印出Fizz
  • 無法被3整除但可以被5整除->印出Buzz
  • 皆無法就顯示原始數字(console.log(i))

經過上面思考我們可以得知:

1.被15整除,等同於可以被3整除且可以被5整除
2.整除在程式之中為餘數等於0

因此撰寫成程式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function fizzbuzz() {
// 這裡使用for迴圈,沒有一定要用for,也可用其他
for (let i = 1; i <= 30; i++) {
if (i % 5 === 0 && i % 3 === 0) {
console.log('FizzBuzz');
}
else if( i % 3 === 0){
console.log('Fizz');
}
else if( i % 5 === 0){
console.log('Buzz');
}else{
console.log(i)
}
}

}

經過釐清之後我們順利印出FizzBuzz想要的結果囉!

練習題:得到字串長度的 wordLength() 函式

  • 預期 pen 的字串長度為 3
  • 預期 apple 的字串長度為 5
  • 預期 Pineapple 的字串長度為 9
  • 預期 古坂大魔王 的字串長度為 5

先以文字規劃想法並思考順序:

1.得知 length可計算字串長度
2.宣告 欲輸入值的名字 為 要輸入的值
3.印出 宣告後的輸入值名字.length

將想法寫成程式:

1
2
3
//這裡欲輸入值的名字取為wordLength 
var wordLength = '(要輸入的值.ex:pen)';
console.log(wordLength.length);

需求是得到函式結果:

4.把上面計算代入函式內

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        function wordLength(word) {
console.log (word.length);
}

wordLength('pen');//3
wordLength('apple');//5
wordLength('pineapple');//9
wordLength('古坂大魔王');//5

// 或者另外一種寫法
var wordLength = function (word) {

return word.length;
}
console.log(wordLength('pen'));
console.log(wordLength('apple'));
console.log(wordLength('pineapple'));
console.log(wordLength('古板大魔王'));

練習題:將單字變成小寫 wordLowerCase() 函式

  • 預期大寫的喵變成小寫的喵 CAT 變成 cat
  • 預期 Tea 變成 tea

先以文字規劃想法並思考順序:

1.得知 toLowerCase()可字母轉成小寫
2.宣告 欲輸入值的名字 為 要輸入的值
3.印出 宣告後的輸入值名字.toLowerCase()

將想法寫成程式:

1
2
var wordLowerCase = '(要輸入的值.ex:CAT)';
console.log(wordLowerCase.toLowerCase());

需求是得到函式結果:

4.把上面計算代入函式內

1
2
3
4
5
6
function wordLowerCase(word) {
console.log(word.toLowerCase());
}

wordLowerCase('CAT');//cat
wordLowerCase('Tea');//tea

練習題:將單字變成大寫 wordUpperCase() 函式

  • 預期 Dog 變成 DOG
  • 預期 hello world 變成 HELLO WOLRD

先以文字規劃想法並思考順序:

1.得知 toUpperCase()可字母轉成小寫
2.宣告 欲輸入值的名字 為 要輸入的值
3.印出 宣告後的輸入值名字.toUpperCase()

將想法寫成程式:

1
2
var wordUpperCase = '(欲輸入值.ex.dog)';
console.log(wordUpperCase.toUpperCase());

需求是得到函式結果:

4.把上面計算代入函式內

1
2
3
4
5
6
function wordUpperCase(word) {
console.log(word.toUpperCase());
}

wordUpperCase('dog');//DOG
wordUpperCase('hello world');//HELLO WORLD