<基本情報試験範囲> 進数と基数変換
2020年10月18日(日)が試験日。
IT未経験者だと200時間くらいの勉強が必要とのこと。受けるからには頑張る。
キタミ式と合格教本を使用。使い方としてはキタミ式を先に読んでメモしていき、
一周したところで教本に切り替えて記憶に残ってない部分を潰していく予定。
キタミ式は20章あるので、今月25日までには読み終わるのが目標。
進数
2進数:0~1
8進数:0~7
16進数:0~9、A~F
2進数の1桁は1ビット。
8進数は2進数の範囲だと0~111が範囲になるため、1桁で3ビット表すことができることがわかる。
同様に、16進数は2進数の範囲だと0~1111が範囲になるため、1桁で4ビット表すことができることがわかる。
現在のコンピュータは32bitや64bitなどの4の倍数になるbit数を使用しているため、16進数が主流。
基数変換
基数:基本となる数。n進数のnの数字のことを指す。
桁の重み:進数を表すnの(n-1)乗の"(n-1)乗の部分。指数。
基数変換:別の基数に変換すること。10進数→2進数など。
<例>
2進数"1101.011"を10進数に変換
<例>
10進数"13.375"を2進数に変換
<例>
2進数"1101.01"を8進数に変換
<例>
2進数"1101.01"を16進数に変換
8進数と同様に考える。16進数は4ビットなので4つずつに区切る。
13.4になり、16進数なので13はD。
そのため、D.4。
<SQL> 基礎
SQLはデータベース言語のこと。
データベースはテーブルで管理されている。
テーブルは以下の構造で作成されている。
基本のSQL文
基本的には以下の構文になる。
SELECT カラム名 FROM テーブル名 WHERE カラム名 = ○○; //(WHERE NOT カラム名 = ○○) //(WHERE カラム名 IS NULL;) //(WHERE カラム名 IS NOT NULL;) //(WHERE カラム名 IN ('', '', ... ;)
SELECT:
どのカラムデータを取得するかを選択。
全てのカラムを取得するときは*(アスタリスク)、
任意の複数のカラムを取得するときはカラム名の間に,(カンマ)を入れる。
FROM:
どのテーブルからデータを取得するかを選択。
WHERE:
カラム名が○○であるレコードを取得。
比較演算子(<=等)を入れて条件に当てはまるレコードを探すこともできる。
NOT:
カラム名が○○でないレコードを取得。
IS NULL:
WHERE文で使用すると、空欄のレコードを検索。
IS NOT NULL:
WHERE文で使用すると、空欄ではないレコードを検索。
IN:
値のリストに含まれているレコードを検索
LIKE演算子
ある文字列を含むデータを取得したいときにWHERE文と共に使用する。
SELECT カラム名 FROM テーブル名 WHERE カラム名 LIKE 文字列;
LIKE演算子では%をワイルドカード(どんな文字列にも一致するという意味の記号)として扱う。
そのため、likeのあとの文字列を%で囲むとその文字列を含む文字列を検索できる。
%を前につけると、その文字列で終わる文字列、
後につけるとその文字列で始まる文字列を検索できる。
<例>
SELECT * FROM foods WHERE name LIKE "%マ%";
結果
↓
AND演算子、OR演算子
AND演算子は、WHERE文の中で使用することで複数の条件に一致する情報を取得。
AND演算子は、WHERE文の中で使用することで一つでも一致する情報を取得。
ORDER BYを使用した降順、昇順の並び替え
ORDER BYを使用することでデータの並び替えができる。
降順
ORDER BY 並び替えるカラム DESC;
昇順
ORDER BY 並び替えるカラム ASC;
LIMIT
最大で何件取得するかを設定できる。
SELECT * FROM テーブル名 WHERE 条件 LIMIT 表示件数;
< git > 共同開発
共同開発の流れは、
コードを記載、変更する
↓
共有する準備
↓
共有
共有はリモートという共有ファイルの置き場を使う。
リモートはgitHubなどのサーバーがある。
作成者→(アップロード(push))→リモートサーバー→(ダウンロード(pull))→共有メンバー
リモートを登録するときは
git remote add リモート名 URL
init
git init gitを使用するとき入力する。
add
git add ファイル名
で共有するファイルを選択する。
commit -m
git commit -m "コミットメッセージ"
で、記録(コミット)するファイルにコメント(コミットメッセージ)をつける。
pushとpull
git push リモート名 master
リモートにファイルをアップロードすることをpushという。
git pull リモート名 master
リモートからファイルをダウンロードすることをpullという。
statusとdiff
git status
statusは、変更してpushされていないファイルのファイル名を赤色、
pushされたファイル名を緑色で表示する。
modified: ファイル名
git diff
変更の内容を表示する。
変更前の記述は赤色表示で、左端に-と書かれており、
変更後の記述は緑色表示で、左端に+と書かれている。
logとlog -p
git log
コミットメッセージを確認できる。
git log -p
コミットされたものの変更内容が見れる。
Qで終了できる。
<javascript ES6> 配列で使用できるメソッドについて
pushメソッド
pushメソッドは、配列の最後に要素を加えるためのメソッド。
<例>
const foods = ["卵","アボガド","トマト"]; foods.push("きゅうり"); console.log(foods);
結果
↓
forEachメソッド
forEachメソッドは、配列の要素を順に取り出して繰り返し処理を行うメソッド。
・・・処理
});
引数(ここでいうとforEach()の中身)に入っている関数はコールバック関数と呼ばれる。
また、forEachメソッドにはアロー関数も含まれており、配列の要素が順にアロー関数の引数に入るようになっている。
<例>
const foods = ["卵","アボガド","トマト"]; foods.forEach((food) => { console.log(food); });
結果
↓
findメソッド
コールバック関数内の処理部分にreturn 条件;を記載し、それに一致した最初の要素を配列から取り出すメソッド。
<例>
const foods = [ {id: 1, name: "卵", price: 20}, {id: 2, name: "アボガド", price: 100}, {id: 3, name: "トマト", price: 80}, ]; const foundFoods = foods.find((food) => { return food.id === 3; }); console.log(foundFoods);
結果
↓
filterメソッド
コールバック関数内の処理部分にreturn 条件;を記載し、それに一致した要素を配列から取り出すメソッド。
find関数との相違点は一致する要素を全て取り出す点。
<例>
const foods = [ {id:1,name:"卵",price:20}, {id:2,name:"アボガド",price:100}, {id:3,name:"トマト",price:80} ]; const UnderHundredPrice = foods.filter((food) => { return food.price < 100; }); console.log(UnderHundredPrice);
結果
↓
mapメソッド
配列内の全ての要素に、コールバック関数内の戻り値で記載された処理を行い、新しい配列を作るメソッド。
<例>
const foods = [ {from: "島根産", name: "卵"}, {from: "メキシコ産", name: "アボカド"}, {from: "熊本産", name: "トマト"}, ]; const salesNames = foods.map((food) => { return food.from + food.name; } ); console.log(salesNames);
結果
↓
<javascript ES6> this.変数名について
this.プロパティ名 = 値;
コンストラクタ内での使用する場合、インスタンスにプロパティと値を追加できる。
・・・①
this.プトパティ名
メソッド内で使用すると、インスタンスの引数を入れることができる。
・・・②
<例>
class Food{ constructor(name,price){ this.name = name; //constructor内のname(this.name)にインスタンスの引数で取得した値を代入① this.price = price; } shopGreeting(){ console.log("いらっしゃいませ。"); } info(){ this.shopGreeting(); //同クラス内のメソッドを呼び出し console.log(`こちらは${this.name}です。`); //インスタンスの値を呼び出し② console.log(`${this.price}円です。`); } } const food = new Food("卵",20); food.info();
<javascript ES6> ファイル間の関連付け
export(出力)について
クラス定義のあとで、下記の記載をするとそのクラスを他のファイルへ出力できるように設定できる。
class クラス名{
・・・
}
export default クラス名;
クラス名の部分を変数名や定数名で記載すれば、それらもexport可能。
import(読み込み)について
ファイルの冒頭で以下の記載をすることで、exportされている他クラスを読み込むことができる。
import クラス名 from "ファイル名";
デフォルトエクスポート
export default(デフォルトエクスポート)は、他ファイルにimportされるとexportされた情報が自動的にimportされるため、export時とimport時の名称が違っても問題ない。
exportした値やクラスが自動的にimportされてしまうため、1つのファイルにつき1つの値にしか使用できない。
もし2つ以上の情報をexport defaultで扱おうとすると以下のエラーが発生する。
SyntaxError: src/ファイル名: Only one default export allowed per module.
名前付きエクスポートとインポート
名前付きの場合{}で定数等の値を囲む。
export {定数等};
import {定数等} from "ファイル名";
複数の定数やクラスを指定するには、{}をカンマで区切る。
<javascript ES6> コンストラクタ
constructor(){}で表記する。
コンストラクタの中で、生成されたインスタンスにプロパティと値を追加する時は下記のようにthisを使用する。
this.プロパティ = 値
例:
class Food{ constructor(){ this.name = "卵"; //プロパティと値を追加 this.price = 20; } } const food = new Food(); //インスタンスの生成 console.log(`種類: ${food.name}`); console.log(`金額: ${food.price}`);
結果
↓
インスタンスごとに値を変えたい場合、constructor()の中に引数名を入れ、
インスタンス生成のnew クラス名()の中に引数に入れたい値を入れる。
例:
class Food { constructor(name,price) { this.name = name; //コンストラクタのnameに引数nameを代入 this.price = price; } } const food = new Foodl("卵",20); console.log(`名前: ${food.name}`); console.log(`金額: ${food.price}`);
結果
↓
イメージは下図のような感じ。
<javascript ES6> オブジェクトについて
値の更新
更新は以下のような式で行う。
定数名.プロパティ名 = 更新する値;
例:
const food = {name:"卵",price:20}; food.price = 40; console.log(food.price);
配列での使用
配列にオブジェクトを組み込むことができる。
例:
const foods = [ {name:"卵",price:20}, {name:"りんご",price:120}, {name:"アボカド",price:100}, ]; //配列foodsをオブジェクトを組み込んで定義 for(let i = 0; i<foods.length;i++){ console.log("******************************"); //仕切り const food = foods[i]; //定数foodを定義 console.log(`商品は${food.name}です`); console.log(`${food.price}円です`); }
出力される情報がない時(例だとpriceの入れ忘れなど)は、undefinedが表示されるので、ifを用いて分岐させること。
オブジェクトの中でのオブジェクト使用
オブジェクトの中でオブジェクトを使用することも可能。
例:
const food = { name:"卵", nutrients:{ calories:90.6, totalCarbohydrate:7.38 }, }; console.log(`${food.name}のカロリーは${food.nutrients.calories}g、炭水化物量は${food.nutrients.totalCarbohydrate}gです。`);
オブジェクトの中での配列使用
配列の中でオブジェクトを使用できるように、
オブジェクトの中で配列を使用することもできる。
例:
const food = { name:"卵", nutrients:{ calories:90.6, totalCarbohydrate:7.38 }, cookingMenu:["スクランブルエッグ","茹で卵","オムレツ"] }; console.log(`${food.name}のカロリーは${food.nutrients.calories}g、炭水化物量は${food.nutrients.totalCarbohydrate}gです。`); console.log("*************************************************"); for(let i = 0;i<food.cookingMenu.length;i++){ console.log(food.cookingMenu[i]); }
<javascript ES6> 関数、アロー関数、引数、戻り値、オブジェクトへの組み込み
関数とアロー関数
関数の定義は以下のコードで行う。
const 定数名 = function(){
処理
};
定数名();
アロー関数はES6から導入された書き方で、
function()について、
() =>という記載で省略できる。
上記の定義に当てはめると下記のようになる。
const 定数名 = () => {
//処理
};
定数名();
定義名を定義名()と書くことで、関数内の処理を実行できる(=関数の呼び出し)。
関数と引数
引数を受け取る関数は以下のように書く。
const 定数名 = (引数名) => {
//処理
};
定数名(値); //値が引数に代入される
例:
const hello = (country) => {
console.log("hello");
console.log(`私は${country}出身です`);
};
hello("アメリカ");
hello("イギリス");
関数と戻り値
戻り値とは、呼び出しもとで受け取る処理結果(=関数が戻り値を返す)のこと。
以下のイメージ。
const 定数名 = () => {
return 値;
}
return記載後の関数内の処理は実行されないので注意。
例:
const check = (number) => {
return number % 2 === 0;
};
if (check(223)) {
console.log("2の倍数です");
} else {
console.log("2の倍数ではありません");
}
例:最大値を出力
const number1 = 103;
const number2 = 72;
const number3 = 189;
const getMax = (a,b,c)=>{
let max = a;
if(max <= b){
max = b;
} else if(c>=max) {
max = c;
}
return max;
}
console.log(`最大値は${getMax(number1,number2,number3)}です`);
関数を使用したオブジェクト
オブジェクトは配列と同じく、複数のデータをまとめて管理することができる。
配列:[値1,値2,値3]
オブジェクト:{プロパティ1:値1,プロパティ2:値2}
関数はオブジェクトの値の部分に入れて使用することができる。
const 定数名 = {
プロパティ名:() => {
//処理
}
};
定数名.プロパティ名(); //関数の呼び出し
例:
const food = {
name:"卵",
price:20,
shop:() => {
console.log("いらっしゃいませ");
console.log(`${food.name}は1つ${food.price}円です。`);
}
};
food.shop();
<javascript ES6> 配列.length
配列変数.lengthで、配列の要素数を取得できる。
今回はhtml内にjsを埋め込んだ形の例。
(htmlでwebページに反映させるため、console.log()ではなく、document.write()を使用)
例:
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
const animals = ["dog","cat","rabbit"]
for(let i = 0; animals.length>i;i++){
document.write(animals[i]+ " ");
}
</script>
</body>
</html>
→結果
forでanimals配列の配列数は3であるので、3回繰り返されて以下のようになる。
<javascript ES6> 繰り返しfor内での宣言について
javascriptの変数定義はlet、定数定義はconstで行われる。
javaに染まりすぎてletとかconstとか忘れてしまうのでリマインド 。
事前に変数定義をしていない場合、以下のような式になる。
console.log(変数名);
}