C言語とは?
手続き型言語であり、コンパイラ言語として設計された。自由度、実行速度、コンパイル速度などを追求したが、代わりにコンパイル後のコードの安全性を犠牲にもしているので、コンピュータ寄りの言語仕様になっている。
開発環境(IDE)は?
Visual Studioです。ネットに無料版のVisual Studio Expressなどもありますので、そちらをご利用ください。
もちろん、製品版を買ってもいいのですが、無料版でも十分の機能が備わっているので、お金を掛けたくない!という方にはオススメです。
尚、私は製品版の2012を使用しています
書き方・作り方
ファイルタブ → 新規作成 → プロジェクト
Visual C++を選び、 Windows フォームアプリケーションを選択し、名前を入力してOKボタンを押してプロジェクトが作れます。

どうしてCなのに、C++なの?
と思うかもしれませんが、C++はC言語の上位互換版だと思ってください。
次の画面では 次へを選択し、
空のプロジェクトにチェックを入れてください。

コードの書き方
右にあるソリューションエクスプローラより、
ソースファイルを右クリックします。
追加を選択し、新しい項目
そしてC++ファイルを選んでください。


拡張子が.cppとなっていますが、C言語では
.cもしくは.cppが使えます。しかし、C++では
.cが使えないのでご注意を。
追加されたSource.cppを開くと
なんと 空です!

ここにC言語で必要な項目を追加していきます。
#include <stdio.h>
int main(void)
{
puts("Hello World");
return 0;
}
#includeというのヘッダーです。
C言語にはこれがないと動きません。
int main(void)
{
}
ここにメインの処理を書いていきます。
同じプロジェクトに二つのmainは置くことは出来ないので気をつける。
puts("文字");
というのは文字を表示するためのものです。
return 0;
最後にこれを書く。
※文の終わりには「;」セミコロンが必要です
基本プログラム
画面に文字を表示する
表示して改行
puts ("あいうえお");
表示
print("あいうえお");
printf("あいうえお");
データ型
文字型 char
整数型 int
浮動小数点型 double(float)
論理型 _Bool(bool)
改行の仕方
\n で文章の改行
puts("");
空白の入れ方
\t 文章の空白
エスケープシーケンス
\\ \を表示
\' 'を表示
\" "を表示
\0 終端文字
テンプレートデータ表示
printf("整数の%dです\n", 125);
, で区切って表示
%c 文字 char A
%d 10進数 int,bool 123
%f 浮動小数点 double,float 0.34
%6d とすることで桁数を変えれる
また %7.3fで小数点以下も3桁に表示
printf("テンプレート",変数);
変数宣言
int number;
number = 10;
number = number +1;
入力した値を表示
キーボードからの入力を可能にし、変数へ読み込むということです。
scanf_s("%d", &data);
数値型
数値型にはこのようなものがあります。一覧だけ書きますので説明は載せません。
・char
・short
・int
・long
・long long
・unsigned char
・unsigned short
・unsigned
・unsigned long
・unsigned long long
・float
・double
・long double
型や変数のサイズ
unsigned n = sizeof(型)
例:
unsigned n1, n2, n3;
double x=1;
n1 = sizeof(int);
n2 = sizeof(double);
n3 = sizeof(x);
インクリメントとデクリメント
a++ 前置
++a 後置
n = ++a (++aを実行してからn=aを実行)
n= a++ (n=aを実行してから++aを実行)
シフト演算子
<<左シフト
a>>2 右に2シフトずらす
>>右シフト
a<<2 左に2シフトずらす
例:
b = a<<1;
aの値を1ビット左へずらした値をbへ代入
左シフト 1ビットシフトするたびに2倍になる
右シフト 1ビットシフトするたびに1/2になる
論理演算子
AND 0 & 0 = 0
OR 0 | 0 = 0
XOR 0 ^ 0 = 0
NOT ~0 = 1
配列
int n = {5,2,3,4};
char ch = {'A', 'B', 'C'};
for文
int i;
for(i=0; i<回数; i++){
処理
}
{}のないfor文
int i;
for(i=0; i<回数; i++)
puts("aaa"); これだけ3回繰り返される
puts("bbb");
int i ← このiを ループカウンタという
まとめたfor文
for(int i= 0; i<5; i++){
}
こう書こうと.Cで実行してみたがエラーに成ってしまった。未だに原因がわからないので調査中。なお、.cppでは使えました。
forの省略形
<反復条件だけ>
int i=0;
for(; 反復 ;){
printf(...);
i++
}
<無限ループ>
for(; ;){
puts("無限ループ");
}
return 0;
}
配列の合計
int n[] = {10, 20, 30,40,50};
int total = 0;
int i;
for(i=0; i<5; i++){
total += n[i];
while文
iの値を増やしていき、5まで増やし続け、あいうえおを5回表示する。
int i = 0;
while(i<5){
puts("あいうえお")
i++;
}
scanf_sとの統合
0が入力されるまでキー入力を続ける
while(scanf_s("%d", &n), n!=0){
※{}のない、While文は一文で書く
マクロの使い方
#define SIZE 5
int mainの上に記載
for(i=0; i<SIZE; i++)
等価演算子
== 等しい
!= 等しくない
簡易電卓
int n, total=0;
while(scanf_s("%d", &n), n!=0){
total += n;
}
printf("合計=%d\n", total);
return 0;
do-while文
do{
繰り返したい処理
}while (反復条件);
関係式
1 が true
0 が false
int a=10;
printf("%d\n", a<20);
printf("%d\n", a!=10);
出力結果: 1 と 0
if文
if(条件){
成立している間処理
}else{
成立していない処理
}
elseがない場合は 無視される
繰り返しを抜け出す
while(){
if(...){
break;
}
}
繰り返しをスキップする
while(){
if(...){
continue;
}
}
else if
if (条件A){
処理1
}else if(条件B){
処理2
}else if(条件C) {
処理3
}else{
処理
}
{}のないif文は一行に
switch文
switch(式){
case 数1:
処理
break;
case 数2:
処理
break;
default:
処理
}
乱数の表示
#include <stdio.h>
#include <stdlib.h> // rand()を使う
#include <time.h> //srand()を使う
int main(void)
{
srand(time(NULL)); //初期化
int r = rand() %6 + 1;
printf("数字%d",r);
return 0;
}
Visual Studioです。ネットに無料版のVisual Studio Expressなどもありますので、そちらをご利用ください。
もちろん、製品版を買ってもいいのですが、無料版でも十分の機能が備わっているので、お金を掛けたくない!という方にはオススメです。
尚、私は製品版の2012を使用しています
書き方・作り方
ファイルタブ → 新規作成 → プロジェクト
Visual C++を選び、 Windows フォームアプリケーションを選択し、名前を入力してOKボタンを押してプロジェクトが作れます。
どうしてCなのに、C++なの?
と思うかもしれませんが、C++はC言語の上位互換版だと思ってください。
次の画面では 次へを選択し、
空のプロジェクトにチェックを入れてください。
コードの書き方
右にあるソリューションエクスプローラより、
ソースファイルを右クリックします。
追加を選択し、新しい項目
そしてC++ファイルを選んでください。
拡張子が.cppとなっていますが、C言語では
.cもしくは.cppが使えます。しかし、C++では
.cが使えないのでご注意を。
追加されたSource.cppを開くと
なんと 空です!
ここにC言語で必要な項目を追加していきます。
#include <stdio.h> int main(void) { puts("Hello World"); return 0; }
#includeというのヘッダーです。
C言語にはこれがないと動きません。
int main(void)
{
}
ここにメインの処理を書いていきます。
同じプロジェクトに二つのmainは置くことは出来ないので気をつける。
puts("文字");
というのは文字を表示するためのものです。
return 0;
最後にこれを書く。
※文の終わりには「;」セミコロンが必要です
基本プログラム
画面に文字を表示する
表示して改行
puts ("あいうえお");
表示
print("あいうえお");
printf("あいうえお");
データ型
文字型 char
整数型 int
浮動小数点型 double(float)
論理型 _Bool(bool)
改行の仕方
\n で文章の改行
puts("");
空白の入れ方
\t 文章の空白
エスケープシーケンス
\\ \を表示
\' 'を表示
\" "を表示
\0 終端文字
テンプレートデータ表示
printf("整数の%dです\n", 125); , で区切って表示 %c 文字 char A %d 10進数 int,bool 123 %f 浮動小数点 double,float 0.34 %6d とすることで桁数を変えれる また %7.3fで小数点以下も3桁に表示 printf("テンプレート",変数);
変数宣言
int number; number = 10; number = number +1;
入力した値を表示
キーボードからの入力を可能にし、変数へ読み込むということです。
scanf_s("%d", &data);
数値型
数値型にはこのようなものがあります。一覧だけ書きますので説明は載せません。
・char
・short
・int
・long
・long long
・unsigned char
・unsigned short
・unsigned
・unsigned long
・unsigned long long
・float
・double
・long double
型や変数のサイズ
unsigned n = sizeof(型)
例:
unsigned n1, n2, n3; double x=1; n1 = sizeof(int); n2 = sizeof(double); n3 = sizeof(x);
インクリメントとデクリメント
a++ 前置
++a 後置
n = ++a (++aを実行してからn=aを実行)
n= a++ (n=aを実行してから++aを実行)
シフト演算子
<<左シフト a>>2 右に2シフトずらす >>右シフト a<<2 左に2シフトずらす 例: b = a<<1; aの値を1ビット左へずらした値をbへ代入 左シフト 1ビットシフトするたびに2倍になる 右シフト 1ビットシフトするたびに1/2になる
論理演算子
AND 0 & 0 = 0
OR 0 | 0 = 0
XOR 0 ^ 0 = 0
NOT ~0 = 1
配列
int n = {5,2,3,4};
char ch = {'A', 'B', 'C'};
for文
int i;
for(i=0; i<回数; i++){
処理
}
{}のないfor文
int i; for(i=0; i<回数; i++) puts("aaa"); これだけ3回繰り返される puts("bbb"); int i ← このiを ループカウンタという
まとめたfor文
for(int i= 0; i<5; i++){ }
こう書こうと.Cで実行してみたがエラーに成ってしまった。未だに原因がわからないので調査中。なお、.cppでは使えました。
forの省略形
<反復条件だけ>
int i=0; for(; 反復 ;){ printf(...); i++ }
<無限ループ>
for(; ;){ puts("無限ループ"); } return 0; }
配列の合計
int n[] = {10, 20, 30,40,50}; int total = 0; int i; for(i=0; i<5; i++){ total += n[i];
while文
iの値を増やしていき、5まで増やし続け、あいうえおを5回表示する。
int i = 0; while(i<5){ puts("あいうえお") i++; }
scanf_sとの統合
0が入力されるまでキー入力を続ける
while(scanf_s("%d", &n), n!=0){
※{}のない、While文は一文で書く
マクロの使い方
#define SIZE 5 int mainの上に記載 for(i=0; i<SIZE; i++)
等価演算子
== 等しい
!= 等しくない
簡易電卓
int n, total=0; while(scanf_s("%d", &n), n!=0){ total += n; } printf("合計=%d\n", total); return 0;
do-while文
do{
繰り返したい処理
}while (反復条件);
関係式
1 が true 0 が false int a=10; printf("%d\n", a<20); printf("%d\n", a!=10); 出力結果: 1 と 0
if文
if(条件){
成立している間処理
}else{
成立していない処理
}
elseがない場合は 無視される
繰り返しを抜け出す
while(){ if(...){ break; } }
繰り返しをスキップする
while(){ if(...){ continue; } }
else if
if (条件A){
処理1
}else if(条件B){
処理2
}else if(条件C) {
処理3
}else{
処理
}
{}のないif文は一行に
switch文
switch(式){
case 数1:
処理
break;
case 数2:
処理
break;
default:
処理
}
乱数の表示
#include <stdio.h> #include <stdlib.h> // rand()を使う #include <time.h> //srand()を使う int main(void) { srand(time(NULL)); //初期化 int r = rand() %6 + 1; printf("数字%d",r); return 0; }