procon2019
このアカウントは京大マイコンクラブ(KMC)の2019年度の競技プログラミング練習会Normal(初心者向け)での説明用に作成したスライドです。 閲覧・参照はご自由にどうぞ。
第0回 プログラミングの基礎講座
担当:laft
// ここからコメント
/* コメント
コメント
コメント */
int a; //これで1文
a = 5; //これも文
//コードの中身は後でやるので、インデントに注目。
#include <bits/stdc++.h>
using namespace std;
int main(){
int a = 1; //インデント1つ
if(a>0){ //インデント1つ
a++; //インデント2つ
if(a>2){ //インデント2つ
a++; //インデント3つ
} //インデント2つ
} //インデント1つ
}
int value; //変数valueをint型で宣言
double y; //変数yをdouble型で宣言
string str; //変数strをstring型で宣言
int a,b; //同じ型であれば複数の変数宣言を','でまとめられます
int x,y;//変数x,yを整数型で宣言
x = 1;//変数xに1を代入する
y = x;//変数yに変数xの中身である1を代入する
int x = 5; //xを5で初期化
int answer = -8; //answerを-8で初期化
int y = x; //変数で初期化することもできます
int a = 2,b = 3; //複数の初期化を','で区切って1文で行えます
int x;
x = 1+1;//xに1+1すなわち2を代入
x = 2-1;//xに2-1すなわち1を代入
x = 3*2;//xに3×2すなわち6を代入
x = 4/2;//xに4÷2すなわち2を代入
x = 4/3;//一般には4/3=1.33...だが、
//int型の除算では小数が破棄されるので、4/3=1が代入される
x = 10%3;//xに10÷3の余りである1を代入
int x;
x = 1+1*2; //xに1+1*2すなわち3を代入
x = 2*1+4*3; //xに2+12=14を代入
x = 2*(1+4)*3; //xに2*5*3すなわち30を代入
x = (2+3)*1+2/2;//xに5+1すなわち6を代入
x = 1+3%3; //xに1+(3%3)=1+0=1を代入
x = x + 1; //xにx+1=2を代入
1<2; //真なので1を示す。
2<1; //偽なので0を示す。
2<=3; //真なので1を示す。
2==3; //偽なので0を示す。
//2=3; //コンパイルエラー
2!=3; //真なので1を示す。
int x = 1;
x>0; //真なので1を示す。
1<2&&2<3;//真かつ真なので真(1)を示す。
2<1&&2<3;//真かつ偽なので偽(0)を示す。
2<1||2<3;//真または偽なので真(1)を示す。
(1<2&&2<3)||(2<1&&2<3);//括弧の中はそれぞれ真、偽を示す。故に真または偽なので真(1)。
!(2<3);//真を否定しているので偽(0)を示す。
int x = 4,y = 5;
x += 3; //x=x+3; なので x=7
x -= 3; //x=x-3; なので x=4
x *= 2; //x=x*2; なので x=8
x /= 4; //x=x/4; なので x=2
x %= 2; //x=x%2; なので x=0
x += y+1; //右辺に変数を入れたり、複数の項を入れることもできます
int x = 0;
++x; //x+=1; なので x=1
x++; //x+=1; なので x=2
--x; //x-=1; なので x=1
x--; //x-=1; なので x=0
入力例
出力例
3 5
8
int x;
cin >> x;//このようにcinの後に">>"を書き、その後に「入力された値」を入れる変数を書く。
//元々xに値が入っている場合でも、書き換えられる。
//">>"はcinからxに値が入っていくイメージ
int y,z;
cin >> y >> z;//連続して入力する場合はcin>>y;cin>>z;と書かなくてもこのように書ける。
下の例の場合はcin>>x>>y>>z;で
の入力により、x=311,y=51,z=2となる。
311
51
2
311 51 2
int x = 1;
cout << x; //coutの後に"<<"を書き、その後に出力する変数名を書く。
//"<<"はxからcoutに入れるイメージ
cout << endl; //endlは行の終了を意味する。これを出力すると改行される。
cout << x << endl; //連続して出力する場合はcin同様にまとめて書ける。
int y = 2;
cout << x+y << endl; //演算後の値を出力できる。
cout << x << " " << y << endl; //""で挟むことで、半角英数字,記号,空白を出力可能。
cout << "Hello, world!" << endl; //英文ももちろん出力できる。
#include<bits/stdc++.h> //取り敢えず書く
using namespace std; //取り敢えず書く
int main(){ //取り敢えず書く
/* コード */ //今までやったようにコードを書く
}
#include<bits/stdc++.h> //取り敢えず書く
using namespace std; //取り敢えず書く
int main(){ //取り敢えず書く
int a,b; //変数宣言
cin >> a >> b; //入力
cout << a+b << endl; //出力
}
int x = 3;
int y = 4;
if(x < y&&x <= 3){ //x<yかつx<=3が真の時のみ実行される。
//今回は実行される。
x++;
y += x;
}
if(1){ //極端な話、これでも(ifの意味はないが)実行される。
y++;
}
int x = 5;
if(x < 4){ //今回は実行されない。
x++;
}else{ //こっちが実行される。if(x>=4)と同じ。
x--;
}
int x = 5;
if(x < 4){ //今回は実行されない。
x++;
}else if(x < 6){ //上のif文で弾かれた時のみ、()内の判断が行われる。
//よって、この時の条件は4≤x<6である。こっちが実行される。
x--;
}
int x = 5;
if(x < 3){ //実行されない。
x = 1;
}else if(x < 5){ //条件は3≤x<5であり、実行されない。
x = 2;
}else if(x < 7){ //条件は5≤x<7であり、実行される。
x = 3;
}else{ //条件は7≤x であり、実行されない。
x = 4;
}
int x = 5,a = 1;
while(x > 0){ //2^xを求める。
//x=5から1ずつ減っているので、今回は5周する。
a *= 2;
x--; //最後には条件を満たさないようにしないと永遠ループする羽目に
}
int x = 5,a = 1;
for(int i=0;i<x;++i){ //2^xを求める。
//i=0から1ずつ増えてi<x=5の間ループする。今回は5周する。
a *= 2;
//++i; 各ループの最後に変数の値の更新が行われる。
}
//ここでa=32
int b = 1;
for(;b<32;){ //必ずしも、変数初期化と値の更新はしなくても良い。
b *= 2; //そのため、このようにwhileと同様に書ける。
}
int x = 5, a = 1;
while(1){ //2^xを求める
a *= 2;
x--;
if(x<=0){
break; //xが0以下になったら終了
}
}
int x = 10, ans = 0;
//xまでの奇数の2倍と偶数の和を求める。
for(int i=1;i <= x;++i){
if(i%2==1){ //奇数の時
ans += 2*i;
continue;
}
ans += i; //偶数の時
//elseが不要
}
お疲れ様でした
コンテストやろう
By procon2019
合わせるとスライドが長くなるので分けました