All posts by chen

C programming (3) Veriables

変数と宣言 代入

int a, b;
a = 19;
b = -20;

変数初期化

int a = 1;
int b = 10;
int c = 4;

image

変数の演算

a = b + c;

image

(練習1)変数と宣言のサンプル

#include <stdio.h>
 
int main(int argc, const char * argv[])
{
     
    // insert code here...
    int a;
    int b;
    int result;
     
    a = 4;
    b = 2;
     
    result = 4 + 2;
    printf("4と2の和は %d\n", result);
     
    result = 4 - 2;
    printf("4と2の差は %d\n", result);
     
    result = 4 * 2;
    printf("4と2の積は %d\n", result);
     
    result = 4 / 2;
    printf("4と2の商は %d\n", result);
     
    result = 4 % 2;
    printf("4と2の余りは%d\n", result);
     
    return 0;
}

(練習2)printf関数:書式化して表示を行う関数

// test4.c 
#include <stdio.h>
int main(void ) 
{ 
 int a,b,c;
 /* これは加算のプログラム コメント
   名前:stdio.h
  C:\borland\bcc55\Include */
   a=3;   b=4;
   c=a+b;
   					
   printf("c= %d\n",c); /* Cの値を書式化して表示 */
   
   getchar( );
   return 0;
}

書式指定文字列:

「””」で囲まれた文字列のことを指します。

変換指定文字列:

  • %d 10進数で出力
  • %s 文字列として出力

拡張表記:

一般的にはエスケープシーケンスと呼ばれています。

エスケープシーケンス 意味
\n 改行
\t タブ
\0 文字列の終了を表す

C exercises (2) stdio

標準ライブラリ関数 : 標準入出力関数

標準入出力関数には(C言語プログラミング)で説明した printf() や scanf() の他にも 下のように 1文字専用の入出力関数と 1行専用の入出力関数が用意されている。

標準入力から文字入力 getchar 関数
標準出力から文字出力 putchar 関数
標準入力から文字列入力 gets 関数
標準出力から文字列出力 puts 関数
標準入力から書式付き入力 scanf 関数
標準出力から書式付き出力 printf 関数

標準入力関数(参考)

getchar() int getchar(void); 標準入力(キーボード)からの入力値を「EOF」まで1文字づつ取得します。エラー時は「EOF」を返します。
gets() char *gets(char *str); 標準入力(キーボード)からの入力値を「EOF」※1まで1行づつ取得して、その文字列の先頭アドレスを引数のchar型ポインタ(*str)に渡すと共に戻り値としても返します。エラー時は「EOF」を返します。
但し現在では読み込む長さを指定できる「fgets()」の使用が推奨されています。
fgets() char *fgets(const char *str, int n, FILE *stream); 「*stream」で示されるストリーム※2から「n-1」文字を取得し「\0」を付加して、その文字列の先頭アドレスを引数のchar型ポインタ(*str)に渡すと共に戻り値としても返します。
scanf() int scanf(char *format,…) ; 標準入力(キーボード)からの入力値を書式指定した文字列として取得します。
第2引数以降は書式指定文字列※3の変換指定子の数だけ変数を指定します。
戻り値は成功時には入力データの数を返し、失敗時はEOFを返します。

標準出力関数(参考)

fputc() int fputc(int c, FILE *stream); キャラクタ(ASCIIコード)c をストリーム※2に出力します。
putc() int putc(int c, FILE *stream); 「fputc」と同機能のマクロです。
putchar() int putchar(int c); キャラクタ(ASCIIコード)c を標準出力(画面出力)します。
fputs() int fputs(const char *str, FILE *stream); 文字列 s をストリーム※1に出力します。
puts() int puts(const char *str); 文字列 s を標準出力(画面出力)します。
fprintf() int fprintf(FILE *stream, const char *format,…); 書式指定文字列※2をストリームに出力します。
第2引数以降は出力元となる変数を変換指定子の数だけ指定します。
printf() int printf(const char *format,…); 書式指定文字列を標準出力(画面出力)します。
第2引数以降は出力元となる変数を変換指定子の数だけ指定します。

例題1:

キーボードから「Ctrl+Z」を入力することによりループを終了させることができます。

入力した数値を加算、「Ctrl+Z」を入力すると、集計を出力

#include <stdio.h>

void main(void)
{
  int n;
  int sum = 0;
  
  printf("整数を入力して下さい\t");
  while (scanf("%d", &n) != EOF) {	// …「Ctrl+Z が入力されるまで」という意味
  
    sum = sum + n;
  }
  printf("sum = %d\n", sum);

  fflush(stdin); 
  getchar(); 
}

例題2:

「Ctrl+Z」を押されるまで、文字列を入力し、入力した文字列のスペースの箇所で、改行して表示する。

/* a6-1-3.c */
#include <stdio.h>

int main(void)
{
  char str[256];
  int i;
                    // 
  puts("文字列を入力してください。(終了条件:Ctrl+Z)");
  while (gets(str) != NULL) 
  //gets(str);
  {	puts("入力文字列をスペースで改行して表示します。");
    for (i = 0; str[i] != '\0'; i++) 
    {	/* スペースで改行 */
      if (str[i] == ' ') 
        putchar('\n');
      /* スペース以外はそのまま表示 */ 
      else {
        putchar(str[i]);
      }
    }
    putchar('\n');
  }

  return 0;
}

C# exercises (2) Event-driven

イベントドリブンとは

「キーボードのボタンが押された」とか「マウスが移動した」等の、 コンピュータ上で発生するなんらかの事象のことをイベント(event)といい、 イベントが発生したときに行う処理のことをイベント ハンドラー(event handler)と呼びます。 このように、イベントとそれに対する処理により動作するようなプログラムのことをイベント駆動型(event drive)プログラムと呼びます。

課題:ボタンクリックでメッセージボックス に表示

デザインの作成

ツールボックスの中から、Buttonを選択して、Form1に貼り付ける
スクリーンショット 2016-04-14 16.57.10

ボタン名の変更

スクリーンショット 2016-04-14 16.57.57
プログラムの作成
ボタンをダブルクリック(ダブルクリック: マウスの左ボタンを2回連続で押す)

少しずつ入力すると命令が表示されるので、Mesまで入力して、MessageBoxを選択しましょう。

スクリーンショット 2016-04-14 17.00.14
MessageBoxのあとは、「.」 (ドット)を入力、関数「Show」を選択して、(” “); を入力
 スクリーンショット 2016-04-14 17.01.00

完成したコード

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace test1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Hello world");
        }
    }
}
*注意:( ” “) ; は全角(漢字)にしてはいけません。全角(漢字)の文章を入れた場合、かならず半角に戻して入力しましょう。
実行してみる
 スクリーンショット 2016-04-14 17.06.18
フォームの表示

ボタンをクリックすると、あいさつメッセージが表示

プロジェクトのパス

c:\Users\chen\documents\visual studio 2015\Projects\test1

C# exercises (1) Guidance

Windowsアプリを作る

C#について

  • 開発しやすく,高機能なプログラミング言語
  • 様々なプログラミング言語の良いところを組合せて作った.
  • プログラムのミス(バグ)が出にくい
  • 学習しやすい
  • 比較的簡単に自分が作成したいWindowsアプリを作れる
  • Windowsアプリの開発ではC#を使うことが標準になってきている。

c472feec-9f9a-a24f-6fe5-8fa1d3d227f6

この課程について

  • Microsoft Visual C# 2015利用
  • とても難しいWindowsアプリの開発をできるだけ簡単にして、いろいろな高度な機能を教えたい。
  • 少しでもプログラミングの楽しさが伝わるように工夫したい。
  • 演習中心:できるだけ見やすく工夫します。
  • 簡単ながら、応用しやすく、かつ、興味がもてるような題材を考えてきます。
  • 試験:レポート
  • 評価:出席+演習+レポート

***

プログラムの作り方

–Microsoft Visual C# 2015 Express Editionを起動
–画面の左下の「スタート」メニュー ⇒ プログラム

⇒ Microsoft Visual C# 2010 Express Edition

•左上のメニューから「ファイル」⇒「新しいプロジェクト」を選択
•「Windowsフォームアプリケーション」が選択された状態で、プロジェクト名に好きな名前を入力する
プロジェクトの初期状況
ツールボックスを固定

 

C programming (2) Create C Programs

C言語の特徴(1)

関数型言語

コンピュータに実行してもらう命令はすべて関数の中に記述されている。関数がプログラムの実行単位。いくつかの関数を組み合わせ、コンピュータへ命令をする。最初にコンピュータが実行する関数はmain()に決まっている。

戻り値の型 関数名(引数リスト)
{
	命令文;
}

コンパクトな言語仕様

予約語(キーワード)は各種の指示を行う命令。全部で32個。このなかには「画面に文字を表示する」とか「ディスクにデータを書き込む」などという「入出力」の機能はない。すべて「関数」として実現されている。このような基本的な関数がないとコンピュータとやり取りできないので、必ず標準ライブラリ関数として予め用意されている。

#include <stdio.h>

Cプログラムの作成

C プログラムの作成手順

文字の並びとして作成したソースプログラムを、コンピュータが理解できる形式に変換する

compile

C プログラミングを書くための約束事

  1. 基本は半角英数字で書く
  2. 大文字と小文字は別の文字
  3. 文はセミコロンで区切る
  4. 余計なことは書かない
  5. 余計なことは「コメント」で

Cpadの使い方

BCPAD

(練習1)文字列の表示

  • C言語はmain()関数ではじまる
  • C言語の標準関数はヘッダファイルに記述されている
  • ヘッダファイルをインクルードするにはプリプロセッサ命令 #include をソースの先頭で使う
// test1.c 
// 全角と半角の入力に注意
// { {  (((   \\\\\\n
//これがさいしょのぷろぐらむ
#include <stdio.h>
int main( )
{
   printf("おはよう  \n");
   printf("こんにちわ\n");
   printf("こんばんわ\n");
   getchar( );
   return 0;
}

日本語環境では、バックスラッシュ(\)の表示は円マーク(¥)になる。

スクリーンショット 2016-04-15 10.43.20

演習環境

  • ソースコードの作成 CPad
  • ソースコードの名前Test1.c で保存. (ファイルは英数字は無難)
  • ソースコード必ず.cの拡張子つける.
    (つけないと.cppになり、思わぬエラーに見舞われる)
  • ソースコードの置場 C:\Users\Student\Documents\C

画面が一瞬で消えてしまい、実行結果がわかりません。

次の命令をプログラムの最後に入れると実行画面を一時停止できます。

int main(void)
{
  /* 他の処理 */

  fflush(stdin); 
  getchar(); 

  return 0;
}

 

C exercises (1) guidance

C言語プログラミングⅡの試験解説

C言語検定試験について

試験名

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

試験目的

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

認定基準

一級 C言語を駆使し、応用プログラム(言語処理系、ユーティリティなど)が作成できる能力を有する。

また使用しているOSについて理解をしている。

二級 小規模のプログラム(500行程度)が適切に(理路整然、簡潔、正しく、速く)書ける。

また各種基本アルゴリズムを理解している。

三級 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

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

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

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

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

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

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

参考サイト:

  • http://shinjuku.kenschool.tv/2013/03/15/web%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E9%96%8B%E7%99%BA%E4%BC%9A%E7%A4%BE%E3%81%A7%E3%82%82c%E8%A8%80%E8%AA%9E%E3%81%8C%E8%A6%8B%E7%9B%B4%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B/

[BCC32]Error on JP programming

Hello World例

正しいhello.c。カーソルは位置を注意してください。Pは5:5の位置にある。

image

コンパイルと実行する様子

典型的なエラー

初めてCのプログラミングは なかなかうまく行かないかも知れない。
ここではHello World プログラムの典型的な間違い例をいくつか紹介する。

 

半角引用符「”」ではなく全角引用符「”」に

右の引用符は全角引用符「”」になっている

image

 

全角スペースが用いられ

全角スペースが用いられている、これはなかなか探しにくい。

カーソルは位置を注意してください。Pは5:3の位置にある。

(半角のスペースなら、Pは5:5の位置にある。)

image

セミコロン「;」の付け忘れ

 

セミコロン「;」の付け忘れである。

image

C# programming exercises

【授業の概要】

 比較的簡単に自分が作成したいWindowsアプリを開発できるVisual C# を無料2015 Visual Studio Communityの統合開発環境を使い学習する。 開発現場でも使われているVisual Studioの使い方やコンポーネント指向やオブジェクト指向を理解できるように、GDI+ APIを使ってGUIのあるプログラムで実践的に学習していく。
簡単ながら、応用しやすく、興味がもてるような題材を使う。自宅のWindowsPCを持っている学生はインストールして実習することで理解が深まる。

【授業要旨】

【テキスト】

回数 題目 授業内容 学習課題 予習時間(分) 復習時間(分)
1 ガイダンス 学習目的 学習目的,  .NET Frameworkとは    VSCommunity開発環境 授業内容を復習する 60
2 イベントドリブンとは ボタンクリックでメッセージボックス に表示 配布教材を読む
授業内容を復習する
30 60
3 ツールボックス ツールボックスの使い方(コモンコントロールTextBox、コンポーネントTimer)デジタル時計の作成 配布教材を読む
授業内容を復習する
30 60
4 GUI 出力 長方形、直線の描画 配布教材を読む
授業内容を復習する
30 60
5 コンソールアプリ キー入力 コンソール出力  CSCPAD 配布教材を読む
授業内容を復習する
30 60
6 マウスを使ったアプリ マウスダウンイベント 配布教材を読む
授業内容を復習する
30 60
7 クラス利用 プロパティとメソッド  変数とデータ型  textBoxと計算プログラム 配布教材を読む
授業内容を復習する
30 60
8 メソッドの使い方 3科目の平均点を表示するプログラム 配布教材を読む
授業内容を復習する
30 60
9 制御構造  配列 foreach文 2つのFormを持つプログラム 1次元配列  構造体 配布教材を読む
授業内容を復習する
30 60
10 オブジェクト指向プログラミング1 クラス  getとset   コンストラクター クラスの継承 ( 名前,生年月日,住所表示プロ) 配布教材を読む
授業内容を復習する
30 60
11 オブジェクト指向プログラミング2 オーバーライド ( 名前,生年月日,住所表示プログラムの続き) 配布教材を読む
授業内容を復習する
30 60
12 総合演習 y=ax^n  のグラフの表示 (pictureBox) 配布教材を読む
授業内容を復習する
30 60
13 課題演習1 簡易なデジタイザとデータのグラフ表示 配布教材を読む
授業内容を復習する
30 60
14 課題演習2 GUIを扱うアプリケーション1  メニュー 配布教材を読む
授業内容を復習する
30 60
15 課題演習3 GUIを扱うアプリケーション2 ファイル操作 授業内容を復習する 30 60

 

参考

C programming exercises

【授業の概要】

コンピュータプログラム開発言語の中で広く利用されているC言語をCプログラミング開発環境ソフト:
CPad for Borland C++ Compilerを使った一人一台のPCを使い実習により学びます. 毎回問題に取り組み理解を深めます。復習問題としてプログラミング課題を出題する。

【授業要旨】

回数 題目 授業内容 学習課題 予習時間(分) 復習時間(分)
1 ガイダンス 学習目的 C言語プログラミングⅡの試験解説   C言語検定試験について 授業内容を復習する 60
2 標準ライブラリ関数1 標準入出力関数 テキスト(P186-193)を読む
授業内容を復習する
30 60
3 標準ライブラリ関数2,3 文字列操作関数  文字操作関数 テキスト(P194-208)を読む
授業内容を復習する
30 60
4 標準ライブラリ関数4,5 数学関数  一般ユーテリティ関数 atoi atof rand srand テキスト(P209-224)を読む
授業内容を復習する
30 60
5 ポインタの仕組み アドレスとは テキスト(P225-233)を読む
授業内容を復習する
30 60
6 ポインタの仕組み ポインタで変数を指す テキスト(P234-238)を読む
授業内容を復習する
30 60
7 ポインタの仕組み ポインタで配列を指す テキスト(P239-245)を読む
授業内容を復習する
30 60
8 ポインタの仕組み ポインタの配列 テキスト(P246-254)を読む
授業内容を復習する
30 60
9 ポインタのまとめ ポインタを使ったプログラムをグループで作成する 授業内容を復習する 30 60
10 関数の自作 関数の基本 Void type関数 関数へ値を渡す テキスト(P255-276)を読む
授業内容を復習する
30 60
11 関数の自作 関数に配列を渡す  再帰関数 テキスト(P277-288)を読む
授業内容を復習する
30 60
12 関数の自作 main関数への引数 適用範囲と記憶クラス テキスト(P288-302)を読む
授業内容を復習する
30 60
12 関数のまとめ 関数を使ったプログラムをグループで作成する 授業内容を復習する 30 60
14 ビットを意識する 整数型 浮動小数点型 テキスト(P304-314)を読む
授業内容を復習する
30 60
15 前期のまとめ まとめと総括。小テストの実施 授業内容を復習する 30 60

【テキスト】

速習C言語入門―脳に定着する新メソッドで必ず身につく [第2版]

C programming (1) Guidance

[災害時の避難経路の確認]

C言語ガイダンス (2016A-C言語 I授業

学習目的

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

情報工学系科目の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

PCの使い方、先生PCからのFile受信

  • PC Windows7
  • フォルダー(Folder) ⇒ 箱
  • ファイル(File) ⇒ 文書
  • マイ ドキュメントの中にCソース、pdf、書類を置くこと
  • デスクトップにはショートカット
  • 文字入力
    • 半角⇔全角 を理解  ああ aaa
    • アルファベット入力⇒日本語変換に慣れるようにする
  • マウス「クリック」操作
  • ファイルの移動  ⇒「ドラッグ・アンド・ドロップ」操作
  • 文字列やファイルのコピー ⇒「コピー ・アンド・ペースト」操作
  • ctrl+C , ctrl+V , ctrl+A
  • 初めわからなくても調べる努力は大事 ⇒情報知性の向上

開発用ソフト

  • Borland C++ Compiler 5.5
  • BCPad

CPad 使い方

BCPAD

http://chenlab.net/2016/04/04/how-to-use-cpad/

シラバス