「C programming」カテゴリーアーカイブ

C programming (17-1) Guidance

学習目的

  • プログラミングは楽しい
  • 資格取得
  • 就職

情報工学系科目のC言語の位置づけ

  • カリキュラム(必修科目、選択科目)
  • C言語プログラミング能力認定試験(C言語検定)
  • 基本情報技術者試験

教科書

プログラミング言語の歴史

  • アセンブラ→C→C++→Java→C#

どのプログラミング言語が話題になっているか? 順位
TIOBE Programming Community Index

TIOBE Programming Community Index , PCI値は、複数の検索エンジンの検索結果から対象とするプログラミング 言語がどれだけ話題になっているかをインデックス化したの。TIOBE Softwareでは毎月中旬に分析結果を公開し ている。 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

C言語検定試験について

試験名

C言語プログラミング能力認定試験
(C-Language Programming Skills Qualification Test)

試験目的

C言語を駆使して応用プログラム(言語処理系、ユーティリティなど)を作成する能力を認定します。

認定基準

一級 C言語を駆使し、応用プログラム(言語処理系、ユーティリティなど)が作成できる能力を有する。また使用しているOSについて理解をしている。
二級 小規模のプログラム(500行程度)が適切に(理路整然、簡潔、正しく、速く)書ける。また各種基本アルゴリズムを理解している。
三級 C言語の概念を理解し、簡単なプログラムが書ける。

 

C言語について

プログラミング関連の資格

  1. Oracle Certified Java Programmer
  2. C言語プログラミング能力認定試験
  3. Ruby技術者認定試験制度
  4. ORACLE MASTER Silver Oracle PL/SQL Developer
  5. IPA基本情報処理技術者試験
  6. IPA応用情報処理技術者試験
  7. マイクロソフト認定ソリューション デベロッパー (MCSD)
  8. CIW Web Development Professional Certification
  9. 情報検定(J検)
  10. JSTQBテスト技術者資格認定

参考サイト:

  • http://techacademy.jp/magazine/894

2015年の人気プログラム言語比較

言語の特徴を表にまとめてみました。

用途 学習難易度 年収 求人数 将来性
C 制御系、組込み系 ★★★★★ 普通 少ない
Java 汎用的だがWeb系
の開発が多い
★★★ 普通 多い ★★
PHP Web系 ★★ 普通 多い ★★
Ruby 汎用的だがWeb系
の開発が多い
★★★ 少ない ★★★
Python 汎用的 ★★★ 少ない ★★★★
Swift iPhoneアプリ ★★★★ 多い ★★★★★

参考サイト:

  • https://toiroha.jp/article/detail/32380
  • https://blog.codecamp.jp/programming_language_2015

C言語とJava言語の比較

C言語:マニュアル車?

C言語は構造化言語というものです。
関数と呼ばれる、機能を多数組み合わせる事で、プログラムを作成していく形になります。
シンプルな上に高速なプログラムを作成可能ですが、その分少々敷居が高いかもしれません。
特にポインタ、構造体で相当数が挫折するので、それなりの覚悟で学習が必要です。
習得すれば分野を問わずほとんどのソフトウェアを作る事ができ、OSさえ作成可能です。
上手く使えば非常に有用な反面、ミスをすると簡単にデータを破壊する危険性を兼ね備えた言語です。

OS, Game, iPhone App, …

Java言語:オートマ車?

Javaはオブジェクト指向言語です。
データと機能をまとめた、オブジェクトを利用する事でプログラムを作成していきます。
C言語よりも後発で、標準で多数の機能が提供されているのは良いのですが、そもそもオブジェクト指向の考え方が全く理解できない人も非常に多く、これもまた書籍等での学習が必要です。

Webシステム, Android App,…

C言語とJavaのどちらか一方をマスターしても、もう片方は基本的な部分以外は最初から学習しなおしだと思います。
ちなみにC言語経験者が初めてJavaに触れると、C言語なら単純明快にできる事が、Javaでは面倒に感じます。
逆にJava経験者が初めてC言語に触れると、用意されている機能が少なすぎて何もできないように感じます。

IoT, 組み込み開発を中心にしている会社なら、C言語はほぼ必須、しかも入門レベルではついていけません。
Webシステム開発が多い会社なら、Javaを知っていると喜ばれる可能性が高いでしょう。

WEBシステムの開発会社でもC言語が見直されている!?

OSやメモリを強く意識したC言語は高速、省資源。

ある程度の規模までのWEBシステムの場合は、
もちろんPHPやJavaといった言語が使用されますが、
大人数が同時に使用する、巨大なデータベースの場合、
核となる部分はC言語の方が適している場合もあるそうなのです。

なぜ、JavaではなくC言語なのでしょうか。

Javaの特徴でもあるガーベジコレクション(自動でメモリを開放してくれる機能)が原因で不具合が発生したことがあるそうです。

メモリを潤沢に使い、使用後も特に意識することを必要としないJavaという言語。
それに対してC言語は、メモリの管理は自分で行うことが前提の言語なのでメモリの取得と解放の手順は自分で記述しなければなりませんが、自分で記述した通りに動作させることができます。

授業要旨(前期)

1 ガイダンス 学習目的 情報工学系科目のC言語の位置づけ
プログラマ記述時の約束
2 基本的なプログラム Cプログラムの作成  文字列の表示
printf関数:書式化して表示を行う関数
3 基本的なプログラム 変数と宣言 代入 初期化
4 基本的なプログラム 文字型と文字列
5 演算子 計算演算子
6 演算子 論理演算子
7 演算子 型の変換、演算子の優先度
8 中間まとめ 1回~7回までのまとめ
9 制御文 if ~else~if~ else~ 文
if文の ネスト 条件演算子
10 制御文 switch文  break 文
11 制御文 while文  for文とwhile文
12 配列とポインタ 配列と多次元配列
13 配列とポインタ ポインタ
14 配列とポインタ ポインタと配列
15 前期のまとめ まとめと総括。小テストの実施

 

参考:


目次

C言語をはじめる前に

第1章 基本的なプログラム

Hello World!
printf()と定数
変数
数値型
文字型
文字列
printf()の書式設定
コラム~日本語について~

第2章 演算子

計算の演算子(1)
計算の演算子(2)
比較演算子
論理演算し
n進数
ビットとバイト
型の変換
演算の優先度
コラム~複雑な論理演算~

第3章 制御文

if文(1)
if文(2)
for文
while文
ループの中断
switch文
サンプルプログラム
コラム~goto文~

第4章 配列とポインタ

配列
配列と文字列
文字列自由自在
多次元配列
アドレス
ポインタ
NULLポインタ
ポインタと配列
メモリの確保(1)
メモリの確保(2)
サンプルプログラム
コラム~ポインタ配列~

第5章 関数

関数の定義
関数の呼び出し
変数のスコープ
プロトタイプ
引数の受け渡し
main()関数
サンプルプログラム
コラム~再帰呼び出し~

第6章 ファイルの出力

ファイル
ファイルの読み込み
ファイルの書き出し
バイナリの読み書き(1)
バイナリの読み書き(2)
一般的な入出力
キーボード入力
サンプルプログラム
コラム~fseek()関数~

第7章 構造体

構造体
構造体の活用
構造体とポインタ
構造体と配列
型の再定義
サンプルプログラム
コラム~データをまとめる~

第8章 プログラムの構成

ヘッダファイル
コンパイルとリンク
ファイルの組み立て
いろいろな宣言
マクロ(1)
マクロ(2)
サンプルプログラム
コラム~プログラムの最適化~

付録
さくいん

—-