do-while文とwhile文の違い
処理の仕方
do-while文
繰り返す対象の処理
↓
繰り返すかの判定
do {
ケーキを食べる この処理を繰り返す(一回は必ずやる)
} while(ケーキは残っている?); この条件を満たす間
while文
繰り返すかの判定
↓
繰り返す対象の処理
while(ケーキは残っている?){
ケーキを食べる
}
*最初の時点で繰り返す条件を満たさないなら処理は一度もしない
参考
明解Java入門編 第3章まとめ
if文
ある条件が成立するかどうかによって、行うべき処理を選択的に決定する。
if-then文
構文:if(式)文
式の値を調べてその値がtrueのときのみ文を実行する。falseのときは何も表示されない。
ある条件が成立したときのみ行うべきことがある場合使う。
()内に書かれた条件判定式を制御式と呼ぶ。
trueとfalseは論理値リテラルと呼ばれる論理型のリテラルである。
関係演算子
「 > 」のようにオペランドの大小関係を判定する演算子のこと。
x < y xがyより小さければtrue,そうでなければfalse
x > y xがyより大きければtrue,そうでなければfalse
x <= y xがyより小さいか等しければtrue,そうでなければfalse
X >= y xがyより大きいか等しければtrue,そうでなければfalse
関係演算子は2項演算子である。
1 <= a <= 3 という記述はできない
a >= 1 && a <= 3 というように記述する
if-then-else文
構文:if(式)文 else 文
制御式の値がtrueであれば先頭側の文を、falseであれば末尾の文を実行する。
条件の真偽によって異なる処理を行う場合if-then-else文を使う。
等価演算子
「==」と「!=」のこと。
x == y xとyが等しければtrue,そうでなければfalse
X != y xとyが等しくなければtrue,そうでなければfalse
等価演算子は2項演算子である。
a == b == c という記述はできない
a == b && b == c というように記述する
論理補数演算子
単項演算子「!」のこと。
!x xがfalseであればtrue,そうでなければfalse
入れ子となったif文
elseが制御する文はif文であっても良い。
例)
if()
文
else
if()
else
文
式
変数・リテラル・変数やリテラルを結合したもの。
〜演算子によって結合された式は〜式という。(代入演算子では代入式)
評価
式の値を調べること
式文
式に「;」をつけた文。
「;」だけでも文とみなされる(空文)
if文の条件()の後ろに誤って空文を置かないように。
論理積演算子&&
x && y:xとyがともにtrueであればtrue,そうでなければfalse(xかつy)
xを評価した値がfalseであればyの評価をしない。
論理和演算子||
x || y:xとyの一方でもtrueであればtrue,そうでなければfalse(xまたはy *どちらか一方でもという意味になる)
xを評価した値がtrueであればyの評価をしない。
論理演算の式全体の評価結果が左オペランドの評価結果のみで明確になる場合に、右オペランドが評価されないことを短絡評価という。
条件演算子
xがtrueであればyを評価した値を,そうでなければzを評価した値を生成する。
x ? y : z
アルゴリズム
処理の流れを定義したもの。
JISX0001では「問題を解くためのものであって、明確に定義され、順序付けられた有限個の規則からなる集合」と定義されている。
ブロック
文の並びを{}で囲んだもの。
{}の中の文の個数は任意。
単一の文が要求される箇所で複数の文を実行せねばならない場合に使う。
ブロック内でのみ利用する変数はそのブロック内で宣言する。
switch文
プログラムの流れを一度に複数に分岐できる。
()で囲まれた制御式は整数型でなくてはならない。
ラベル
プログラムの飛び先を示す目印
異なるラベルが同じ値をもつことは許されない。
値は定数でなければならず変数は許されない。
break文
プログラムのながれがswitch文から抜け出す。
最後のケース部の末尾にもbreakをつける。
defaultラベル
どのラベルとも一致しないときの飛び先を表す。
選択文
if文とswitch文のことを選択文という。
単一の式の値によるプログラムの流れの分岐はswitch文を利用した方が全体の見通しが良いため読みやすくなる。
キーワード
ifやelseといった語句には特別な意味が与えられている(キーワード)。
プログラム作成者が変数などの名前として利用することはできない。
区切り子(分離子とも)
キーワードは一種の単語のようなもので、単語を区切るために使われる記号が区切り子。
{},:.などがある。
識別子
変数、ラベル、メソッド、クラスなどに与えられる名前。
1文字目は文字($と_を含む)2文字目以降は文字、数字を含む($と_を含む)
漢字文字も含まれる(オススメはしない)
リテラル
プログラムを構成する要素のひとつ。
代入式の評価
代入式を評価すると代入後の左オペランドの型と値が得られる。
明解Java入門編 第2章まとめ
整数リテラル
整数を表す定数のことを整数リテラルと呼ぶ。
例 57(整数リテラル) "57"(文字リテラル)
文字列と数値の連結
()で囲まれた演算は優先的に処理される。
「文字列 + 数値」あるいは「数値 + 文字列」の演算では、数値が文字列に変換された上で連結が行われる。
変数
値を自由に出し入れできる(数値を格納する箱のような)もの。
一旦値を入れるとその箱が存在する限り値が保持される。
なんの箱かわかるように名前をつける際宣言をする。
(例) xという名前の箱である宣言文→ int x;)
「 , 」で区切れば二つ以上の変数を一度に代入できる(分けたほうがコメントや修正は楽だがプログラムの行数は増える)。
代入演算子
(x = 1;)の「=」は右辺の値を左辺の変数に代入するための記号(代入演算子)
変数は必要になった時点で宣言する。
型
int型:整数を表す整数型の一つ。整数定数は整数リテラルと呼ぶ。
double型:実数(浮動小数点数)を表す浮動小数点型の一つ。浮動小数点数は浮動小数点リテラルと呼ぶ。
String型:文字列を表す。
算術演算
加減算より乗除算のほうが優先される。
整数/整数の演算では少数点以下は切り捨てられる。
変数と初期化
値の入っていない変数から値を取り出すことはできない。
変数の宣言時には初期化値を与えて確実に初期化するとよい。
int x = 1(初期化値)
初期化:変数を生成するときに値をいれる
代入:生成済みの変数に値を入れる
キーボードからの入力
標準入力ストリームを利用する。
標準入力ストリームからの文字の読み込みにはScannerクラスのnext...メソッドを使用する。
演算子とオペランド
演算を行う+や-などの記号を演算子と呼ぶ。
演算の対象となる式のことをオペランドと呼ぶ。
オペランドの数により呼び方が違う。
final変数
値を書き換えることのできない変数。
値の管理を一箇所に集約できる、プログラムが読みやすくなるなどのメリットがある。
final変数の名前は大文字とすることが推奨されている。
原則として初期化すべきである。
初期化されていない場合、一度だけ値を代入できる。
乱数
乱数の生成にはRandomクラスのnext...メソッドを使用する。
文字列の読み込み
文字列の読み込みにはnext()を使う。
スペースも含めた一行分の入力を文字列として読み込むためにはnextLine()を使う。
明解Java入門編 第1章まとめ
Javaは数多くの特性を持ち、オブジェクト指向プログラミングをサポートするプログラミング言語。
ソースプログラムとソースファイル
ソースプログラムはクラスの中にmainメソッドが含まれており、その中に文が含まれる。
プログラムを起動するとmainメソッド内の文が順次実行される。
文の終わりは原則 ; である。
ソースファイルはクラスの名前に拡張子.javaをつけた名前にするのが原則。
ソースプログラムをコンパイルしてバイトコードを生成する。
コンパイルにはjavacコードを使う。(拡張子.javaは省略できない)
生成されたバイトコードを実行する。
中身がバイトコードのクラスファイルというものが作られる。
javaコマンドで実行。(拡張子はつけてはいけない)
コンソール画面へ出力される。
コメント
//(行末コメント)または
/*~*/(伝統的コメント)または
/**~*/(文書化コメント)で記述する。
実行したくない部分をコメントにできる(コメントアウト)
"で囲んだ文字の並びを文字列リテラルと呼ぶ。
他に
整数リテラル
文字リテラル
などがある。
文字列リテラルの連結では+を使う。
改行には拡張表記\nを使う。
文字列リテラルの途中で改行してはいけない。
単語の途中にホワイトスペースを入れることはいけない(スペース、ダブ、改行など)。
ストリーム
コンソール画面など、外部への出力の際はストリームを利用する(文字が流れる川のようなもの)。
System.outはコンソール画面と結びつくストリームである(標準出力ストリーム)。
printlnは()の中の内容を表示し、改行する(かっこに何も入れなければ改行だけする)。
printでは改行されない。
メソッド
依頼された処理を行うprintlnなどはプログラムの部品であり、メソッドと呼ばれる。
インデント
左側の余白(インデント)を用いて記述する(インデンテーション)
LPI Level1試験の勉強で役に立った本・サイト
今日LPI Level1取得?しました〜。
101試験から約一ヶ月!
いろいろ忙しく勉強時間がまとまってとれなかったのもあるけど
102試験勉強は101より辛かったです。
試験内容自体はどっちもどっちかな。102の方が簡単という声もあったけど。
まぁどちらもちゃんと勉強していけばこわくないです!(当たり前)
今日はちょっと自分のことを振り返るため&文章を書く練習のために書いていこうとおもいます。
LPI試験に向けての出発地点
一冊目 奈佐原顕郎さん『入門者のLinux』
SQLを勉強していたころ、インストール時にターミナルは使っていたのですが、シェルとかプロンプトもあんまりわかっていなかった記憶があります。
そういう今までよくわからずにやってきたことがこの本でわかってとてもすっきりしました。理解しやすいように書かれているし、本当になんにもわからない人にはおすすめです。知ってる人から見たら、こんな風に説明すると初心者はわかるのかというのがわかっておすすめです。結果的にめちゃくちゃおすすめです。
二冊目 中島能和さん『一週間でLPICの基礎が学べる本第2版』
この本はLPI試験についてググりまくってると何度か目にすると思われます。
内容は101試験に必要な部分が多い気がしました。なのでふんふんと一度読んだくらいです。わたしには一冊目のほうが役に立ちましたが、たぶんこの本を読んだからこそ101試験の勉強にすんなり入れたのだと思います。
101試験
使用教材 Ping-t スピードマスター
101試験の勉強は、細かいことを覚えるのが大変なのかなぁと思います。
コマンドのオプションとか、たくさんあるよね・・・。
私はソフトウェア管理の範囲が点数低かったです。rpmとかdpkgとか。
101はPing-tさんで必死に解いて覚えたけど、やっぱり実際に手を動かした方が覚えるのはやいです。viとかは操作してめっちゃ覚えた!
インストールとかのとこも何回もやればよかったんだなと。
101ではスピードマスターよりPing-tさんを重宝しました(もしかするとスピードマスターだけでも全然いけるのかも)。
102試験
使用教材 スピードマスター
102試験でも私はPing-tさんに頼りたかったのです本当は。
しかしながら、有料なのですよね、102は。
もう腹をくくってスピードマスターさんと仲良くやっていこうと決意しました。(スピードマスターだけでも全然大丈夫です!とても良い本です!)
102はどうも全体像が掴みにくいものが多いといいますか・・・。IPアドレスすらよくわかっていなかった上に大嫌いな計算(実際簡単)もあるし、クラスがなんちゃらプライベートアドレスがなんちゃらで投げ出しちゃおうかと思いました。
わからない単語ばかりですしね。
それで、一旦落ち着いて、躓いたらなんとなくでもいいからイメージを掴めるようにしました。
用語のイメージをつかむために参考にしたサイト
『「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典』
・http://wa3.i-3-i.info/index.html
cupsにつまずいたとき
『インフラ周りのプロになりたい』
・http://ayufishing.blog.fc2.com/blog-entry-8.html
IPアドレスの計算がわけわからないとき
『IPアドレスの基礎知識』
・http://qiita.com/mogulla3/items/efb4c9328d82d24d98e6
whileの細かいオプションがわからなくなったとき(leとか)
・http://linux.just4fun.biz/?逆引きシェルスクリプト/whileループのサンプル#i9d6272d
あとは自分で集めた知識をもとに図を書いて考えてみるとか。
するとあらふしぎ!IPアドレスでつまずいていた部分がすっきりわかる!
わかった時の感動は半端じゃないですね。勉強しててよかったと思えます。
102はコマンドのオプションとかは少ないですが、コマンドやディレクトリ名を入力させられることが多いので、私は手で書いたり、実際に打ち込んで中身を見たりして覚えてました。
全体振り返り
Level1試験の勉強は根詰めてやればそんなに時間はかからないと思います。
私はオラクルマスターでめっちゃ立ち止まったひとだからそう思うのかも?
試験に受かっても、まだ理解仕切れていない部分が多いと思うので、今後使っていくなかで覚えていかなければならないことがたくさんありそうです。
特にセキュリティのところ!
Linuxはお仕事始めたら使わない日はないよと言われたので頑張ります。
ちなみに101も102も710点でした!よかった!
次はJavaのお勉強をします!
お疲れ様でした〜。
Ubuntuでroot権限使用のために
rootユーザーになるコマンドが紹介されていて
$ su -
Password:
#
#pwd
/root
こういう風に、ちゃんとできたらカレントディレクトリがrootユーザーのホームディレクトリになるらしい。
でも、Ubuntuだと基本suじゃなくてsudoコマンドを使うらしくて
$ sudo -s
これでrootユーザーになる
問題点
これだとカレントディレクトリがrootユーザーのにならない
つまり
$ su
Password:
# pwd
/home/ユーザー名
と同じ状態に。。。
これだとrootユーザー用コマンドの多くが使えないらしい
解決策
sudo su -
こうするとカレントディレクトリが/rootになってくれる
元のユーザーに戻るためには
# exit
カレントディレクトリの謎について
わたしが理解できなかったのは、なぜカレントディレクトリが変えられるパターンと変えられないパターンのsu(またはsudo)があるのか
実務で考えてみる
たとえばなにかのファイルを書き換えたいけど、自分には権限がないとき
sudo -s
を使うと
そのファイルがあるディレクトリまで移動
↓
権限がない!
↓
rootユーザーになればいいじゃん!
↓
sudo -s
↓
そこのディレクトリのままで作業続けられる
一方
sudo su -
を使うと
そのファイルがあるディレクトリまで移動
↓
権限がない!
↓
rootユーザーになればいいじゃん!
↓
sudo su -
↓
ホームディレクトリがrootユーザーのものになってしまったから、そのファイルがあるディレクトリに移動し直し・・・
ということらしい(わかりにくい)
suの -(ハイフン)の意味は、そのユーザーのホームディレクトリにログインするということで、ちょこっとここでroot権限が必要だ〜ってなったときにはディレクトリが変わらないほうがありがたいみたいな感じらしい。
ちなみにホームディレクトリが変わるほうの必要性は、rootユーザー用のコマンドがちゃんと使えるからっぽい
勉強中なので理解が間違ってたら教えてほし
お世話になった引用元2つ
・中島能和 1週間でLPICの基礎が学べる本 第2版
入門者のLinux 終章 まとめ
奈佐原顕郎さん「入門者のLinux」より
・Linuxにはいろいろなディストリビーションがあり、一つのディストリビーションの中にもいろいろなバージョンや派生系があり、インストール方法がある。それらをいろいろなハードウェアに試し、Linuxの多様性を肌で感じること
・多くのスタイルのLinuxに共通する概念や仕組みに関しても理解が深まる
うまくいかないときややり方がわからないときは、思いつく方法をどんどん試すこと
一見無駄に思えることが大切
・答えはコンピュータから自分自身が引き出す
・トラブルを解決する際は、参考にする情報の鮮度に注意すること(バージョンチェックやサイトの更新日時に注意するなど)
以上でこの本のまとめはおしまい!
とてもわかりやすいし手も動かせて楽しいのでオススメです。
個人的には見たこと、聞いたこと、使ったことはあったけど意味はよくわかってなかったみたいなところがわかってスッキリでした〜
次はLPICの勉強がんばります〜