目的
PythonとC言語についてコーディングの違いを比較します。
具体的にはHelloWorld、変数、演算などの基本的なコーディングを比較していきます。
PythonはC言語と比較すると大変シンプルなコードなことがわかると思いますので、
参考にしてみてください。
Helloworld
C
#include<stdio.h>
void main() {
printf("HelloWorld.¥n");
}
Python
print('HelloWorld')
実行結果
HelloWorld
ポイント for C
ソースコード説明
#include<stdio.h>
ヘッダファイルの読み込み。基本的にC言語のプログラムはこの宣言から始まる。
#include
ヘッダファイルと呼ばれるファイルを読み込むときに用いる宣言。
.h
C言語のヘッダファイルの拡張子。
void main()
メイン関数の宣言。処理の中身は、{ }で囲まれてる。
;
処理の末尾に記述するもの。複数行にわたる処理が記述 される場合、必ずこのセミコロンによって、それぞれの処理を区切る必要がある。
¥n
改行を表す特殊な文字。
この文字があると、文字列はそこで改行され、続く文字は次の行から表示される。
エスケープシーケンス
『¥』マークで始まる文字を、エスケープシーケンスと言う。
記号 | 意味 |
¥a | 警告音 |
¥b | バックスペース |
¥n | 改行 |
¥t | タブ |
¥¥ | 文字としての¥ |
¥? | 文字としての?マーク |
¥” | ダブルクオーテーション(“) |
¥’ | シングルクオーテーション(’) |
¥0 | ヌル(null)文字 |
文字の出力
C
#include<stdio.h>
void main() {
printf("こんにちは。私の名前は%sです。¥n年齢は%d歳です。¥n", "山田太郎", 20);
printf("イニシャルは、%cです。¥n", 'Y');
printf("%f + %f = %f¥n", 1.2, 2.7, 1.2 + 2.7);
Python
print('こんにちは。私の名前は{}です。\n年齢は{}歳です。'. format('山田太郎', 20))
print('イニシャルは、{}です。'. format('Y'))
print('{} + {} = {}'. format(1.2, 2.7, 1.2 + 2.7))
name = '山田太郎'
figure = 20
print(f'こんにちは。私の名前は{name}です。\n年齢は{figure}歳です。')
initial = 'Y'
print(f'イニシャルは、{initial}です。')
x, y, z = 1.2, 2.7, 1.2 + 2.7
print(f'{x} + {y} = {z}')
実行結果
C
こんにちは。私の名前は山田太郎です。
年齢は20歳です。
イニシャルは、Yです。
1.200000 + 2.700000 = 3.900000
Python
こんにちは。私の名前は山田太郎です。
年齢は20歳です。
イニシャルは、Yです。
1.2 + 2.7 = 3.9000000000000004
ポイント for C
書式指定
書式 | 意味 | 使用例 |
%d | 整数値を10進数で表示する | 1,12,30,-4,5 + 5 |
%f | 実数値を10進数で表示する | 0.15,-4.2,2.21,1.3 + 3.8 |
%lf | 実数値を10進数で表示する。(&fより長い桁が表示可能) | 0.15,-4.2,2.21,1.3 + 3.8 |
%c | 文字。ASCIIコードで表示された文字列が表示される | ‘A’,’b’,’8′ |
%s | 文字列。文字列をそのまま表示できる | “ABC”,”鈴木” |
文字と文字列
文字とは、char型の値のことであり、‘(シングルクオーテーション)で囲む。
文字列は、“(ダブル・クオーテーション)で囲む。
演算の基本とコメントの書き方
C
#include<stdio.h>
/*
演算子を用いた計算のプログラム
*/
void main()
{
//各種演算
printf("%d + %d = %d¥n", 5, 2, 5 + 2); /*足し算*/
printf("%d - %d = %d¥n", 5, 2, 5 - 2); /*引き算*/
printf("%d * %d = %d¥n", 5, 2, 5 * 2); /*掛け算*/
printf("%d / %d = %d 余り %d ¥n", 5, 2, 5 / 2, 5 % 2); /*割り算*/
}
/*
複数行コメント
複数行コメント
複数行コメント
/*
// 1行コメント
Python
"""
演算子を用いた計算のプログラム
"""
# 各種演算
# 足し算
x, y, z = 5, 2, 5 + 2
print(f'{x} + {y} = {z}')
# 引き算
x, y, z = 5, 2, 5 - 2
print(f'{x} - {y} = {z}')
# 掛け算
x, y, z = 5, 2, 5 * 2
print(f'{x} * {y} = {z}')
# 割り算
x, y, z, w = 5, 2, 5 / 2, 5 % 2
print(f'{x} / {y} = {z} 余り {w}')
# べき乗
x, y, z = 5, 2, 5 ** 2
print(f'{x} ^ {y} = {z} ')
# 割り算(商の部分のみ)
x, y, z = 5, 2, 5 // 2
print(f'{x} / {y} = {z} ')
"""
複数行コメント
複数行コメント
複数行コメント
"""
# 1行コメント
実行結果
C
Python
5 + 2 = 7
5 - 2 = 3
5 * 2 = 10
5 / 2 = 2.5 余り 1
5 ^ 2 = 25
5 / 2 = 2
ポイント
代表的な演算子
演算子 | 意味 | Python | C言語 |
+ | 足し算 | 〇 | 〇 |
– | 引き算 | 〇 | 〇 |
* | 掛け算 | 〇 | 〇 |
/ | 割り算 | 〇 | 〇 |
% | 割り算 余り | 〇 | 〇 |
** | べき乗 | 〇 | × |
// | 割り算 商のみ | 〇 | × |
変数の基本
C
#include<stdio.h>
/*
変数を用いた計算のプログラム
*/
void main()
{
/* 使用する変数の定義 */
// 変数の定義
int a;
// 初期化と代入を同時に行う
int b = 3;
// 複数の変数を同時に宣言
int add, sub;
// int以外の変数を宣言
double avg;
// 代入(最初に値を入れるので、"初期化"と言う。)
a = 6;
// a,bの和を求める。
add = a + b;
// a,bの差を求める。
sub = a - b;
// a,bの平均値を求める。
avg = (a + b) / 2.0;
printf("%d + %d = %d¥n", a, b, add);
printf("%d - %d = %d¥n", a, b, sub);
printf("%dと%dの平均値:%f¥n", a, b, avg);
Python
"""
変数を用いた計算のプログラム
"""
# 使用する変数の定義
# 変数の定義
a: int
# 初期化と代入を同時に行う
b: int = 3
# 複数の変数を同時に宣言
# 基本的にPythonでは型の宣言は必要ではないので一つずつ宣言
add: int
sub: int
# int以外の変数を宣言
avg: float
# 代入(最初に値を入れるので、"初期化"と言う。)
a = 6
# a, bの和を求める。
add = a + b
# a, bの差を求める。
sub = a - b
# a, bの平均値を求める。
avg = (a + b) / 2.0
print(f'{a} + {b} = {add}')
print(f'{a} - {b} = {sub}')
print(f'{a} と {b} の平均値 = {avg}')
実行結果
C
6 + 3 = 9
6 - 3 = 3
6と3の平均値:4.500000
Python
Python
6 + 3 = 9
6 - 3 = 3
6 と 3 の平均値 = 4.5
ポイント
変数の初期化
変数に対して、数値を代入して使用可能にすること。
変数は必ず初期化して使用するというルールがある。
変数の命名規則 ルール
変数の名前は、基本的にプログラマーが自由につけることが許されている。
通常、アルファベット一文字か、その組み合わせといったものが使用される場合がほとんどである。
ASCII (American Standard Code for Information Interchange)
7桁の2進数で表すことのできる数値に、アルファベットや数字、記号を割り当ててたものであり、10進数の0番から127番までの番号(2進数では0000000から1111111まで)に、128文字が割り当てられている。
単精度 倍精度 浮動小数点実数
一般的には
単精度:32bit(2進数で32桁)
倍精度:64bit(2進数で64桁)
で表す浮動小数点数を指します。
ポイント for C
変数の初期化の位置
変数の宣言をする場所は、必ず{}の先頭部分で行わなければならない。
何らかの処理が行われた後で変数を定義すると、エラーになる。
void main()
{
//先頭の部分で変数の宣言を行う。
int a,b = 1;
double d = 0.1,e;
printf("hello¥n");
# 何らかの処理を行った後に変数の宣言を入れることはできない。
int c;
}
C言語の予約語
auto | double | int | struct |
break | else | long | switch |
case | enum | register | typedef |
char | extern | return | union |
const | float | short | unsiged |
continue | for | signed | void |
default | goto | sizeof | volatile |
do | if | static | while |
代入演算子
C
#include <stdio.h>
/*
代入演算子を用いた計算
*/
void main()
{
/*使用する変数の定義*/
//変数の宣言(1)
int a1 = 2, b1 = 2, c1 = 2, d1 = 2;
//変数の宣言(2)
int a2 = 2, b2 = 2, c2 = 2, d2 = 2;
/*通常の演算による計算と代入*/
a1 = a1 + 1;
b1 = b1 - 1;
c1 = c1 * 2;
d1 = d1 / 2;
/*代入演算による計算*/
a2 += 1;
b2 -= 1;
c2 *= 2;
d2 /= 2;
printf("a1=%d b1=%d c1=%d d1=%d¥n", a1, b1, c1, d1);
printf("a2=%d b2=%d c2=%d d2=%d¥n", a2, b2, c2, d2);
}
Python
"""
代入演算子を用いた計算
"""
"""
変数の宣言(0)
a1 = 2
b1 = 2
c1 = 2
d1 = 2
"""
# 変数の宣言(1)
a1, b1, c1, d1 = 2, 2, 2, 2
# 変数の宣言(2)
a2 = b2 = c2 = d2 = 2
"""
通常の演算による計算と代入
"""
a1 = a1 + 1
b1 = b1 - 1
c1 = c1 * 2
d1 = d1 / 2
"""
代入演算による計算
"""
a2 += 1
b2 -= 1
c2 *= 2
d2 /= 2
print('a1={},b1={},c1={},d1={}'.format(a1, b1, c1, d1))
print(f'a2={a2},b2={b2},c2={c2},d2={d2}')
実行結果
C
a1=3 b1=1 c1=4 d1=1
a2=3 b2=1 c2=4 d2=1
Python
a1=3,b1=1,c1=4,d1=1.0
a2=3,b2=1,c2=4,d2=1.0
演算子 | 使用例 | 意味 |
= | a=1 | aに値を代入 |
+= | a+=1 | aに値を加算して代入(a=a+1と同じ) |
-= | a-=1 | aに値を減算して代入(a=a-1と同じ) |
*= | a*=1 | aに値を乗算して代入(a=a*1と同じ) |
/= | a/=1 | aに値を除算して代入(a=a/1と同じ) |
%= | a%=1 | aに値を剰余算して代入(a=a%1と同じ) |
データ型とキャスト
C
#include <stdio.h>
void main() {
int i1, i2, j1, j2;
double d1, d2, e1, e2;
// j1,j2に値を代入
j1 = 3;
j2 = 3;
// d1,d2に値を代入
d1 = 1.23;
d2 = 1.23;
// i1,i2にd1,d2の値を代入
//普通に代入
i1 = d1;
//キャストして代入
i2 = (int)d2;
//普通に代入
e1 = j1;
//キャストして代入
e2 = (double)j2;
printf("d1 = %f d2 = %f¥n", d1, d2);
printf("i1 = %d i2 = %d¥n", i1, i2);
printf("j1 = %d j2 = %d¥n", j1, j2);
printf("e1 = %f e2 = %f¥n", e1, e2);
}
Python
i1: int
i2: int
j1: int
j2: int
d1: float
d2: float
e1: float
e2: float
# j1,j2に値を代入
j1 = 3
j2 = 3
# d1,d2に値を代入
d1 = 1.23
d2 = 1.23
# i1,i2にd1,d2の値を代入
# 普通に代入
i1 = d1
# キャストして代入
i2 = int(d2)
# 普通に代入
e1 = j1
# キャストして代入
e2 = float(j2)
print(f'd1 = {d1} d2 = {d2}')
print(f'i1 = {i1} i2 = {i2}')
print(f'j1 = {j1} j2 = {j2}')
print(f'e1 = {e1} e2 = {e2}')
実行結果
C
d1 = 1.230000 d2 = 1.230000
i1 = 1 i2 = 1
j1 = 3 j2 = 3
e1 = 3.000000 e2 = 3.000000
Python
d1 = 1.23 d2 = 1.23
i1 = 1.23 i2 = 1
j1 = 3 j2 = 3
e1 = 3 e2 = 3.0
ポイント for C
C言語で用いられるデータ型
データ型 | 説明 |
char | 1バイトの符号付整数。ASCIIコードといった文字コードに使用 |
unsigned char | 1バイトの符号なし整数 |
short | 2バイトの符号付整数 |
unsigned short | 2バイトの符号なし整数 |
long | 4バイトの符号付整数 |
unsigned long | 4バイトの符号なし整数 |
int | 2または4バイトの符号付整数(コンパイラに依存) |
unsigned | 2または4バイトの符号なし整数(コンパイラに依存) |
float | 4バイトの単精度浮動小数点実数 |
double | 4バイトの倍精度浮動小数点実数 |
ポイント for Python
Pythonで用いられるデータ型
データ型 | 説明 |
int | 整数 |
float | 浮動小数点実数 |