未分類

C言語とPythonの基礎的な内容に対するコーディング比較

目的

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 

ポイント

代表的な演算子

演算子意味PythonC言語
足し算
引き算
*掛け算
/割り算
%割り算 余り
**べき乗×
//割り算 商のみ×
代表的な演算子

変数の基本

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文字が割り当てられている。

https://medium-company.com/ascii%E3%82%B3%E3%83%BC%E3%83%89/

単精度 倍精度 浮動小数点実数

一般的には
単精度:32bit(2進数で32桁)
倍精度:64bit(2進数で64桁)
で表す浮動小数点数を指します。

https://wa3.i-3-i.info/word14961.html

ポイント for C

変数の初期化の位置

変数の宣言をする場所は、必ず{}の先頭部分で行わなければならない。
何らかの処理が行われた後で変数を定義すると、エラーになる。

void main()
{
//先頭の部分で変数の宣言を行う。
int a,b = 1;
double d = 0.1,e;
printf("hello¥n");

# 何らかの処理を行った後に変数の宣言を入れることはできない。
int c;
}

C言語の予約語

autodoubleintstruct
breakelselongswitch
caseenumregistertypedef
charexternreturnunion
constfloatshortunsiged
continueforsignedvoid
defaultgotosizeofvolatile
doifstaticwhile
C言語の予約語

代入演算子

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=1aに値を代入
+=a+=1aに値を加算して代入(a=a+1と同じ)
-=a-=1aに値を減算して代入(a=a-1と同じ)
*=a*=1aに値を乗算して代入(a=a*1と同じ)
/=a/=1aに値を除算して代入(a=a/1と同じ)
%=a%=1aに値を剰余算して代入(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バイトの倍精度浮動小数点実数
C言語で用いられるデータ型

ポイント for Python

Pythonで用いられるデータ型

データ型説明
int整数
float 浮動小数点実数
Pythonで用いられる主なデータ型
ABOUT ME
チェルシー
【プロフィール】  年齢:30代前半  性別:オス 【主な職歴】  メーカー勤務  製品設計開発_メカ設計:7年  開発業務自動化:1年半 元々、メカ設計エンジニアとして、製品設計開発に携わっていました。新しいスキルを身につけたいと独学でPythonを勉強し始め、現在、本業でソフトエンジニアとして働いています。具体的には、Pythonを使った製品評価業務の自動化を推進しています。 また、製品市場データ分析業務など可視化なども実施しています。 【2023年度目標】 1. 副業収入:月5,000円 2. 塩漬けにしていたブログをChatGPTなどを活用して執筆の効率化し、1年半前に開設した本サイトを改善する 3. 定期的に株式投資おすすめ成長株の紹介記事を投稿 4. 自作中の米国成長株の分析ツールのコーディング紹介 5. 株式投資の本で学んだ情報をアウトプットする