2日間でC言語入門者を卒業させるC言語講習会 1日目

C言語講習会資料

サークル一回生向けのC言語講習会の資料です.

想定する層はプログラミングを全くやったことがない人たち.

とりあえず入門卒業の目標としてFizzBuzzをかけるようになることが目標です.予想所要時間は2時間.

内容

  • プログラミングってなに?C言語ってなに?

  • 変数

  • 条件分岐

  • 繰り返し処理

スライド

こちらにスライドを上げておきます.

プログラミングとはなんだ?というところからプログラミングをする前に気をつけること,変数について,条件分岐,繰り返し処理について説明しています.

例題ソースコード,演習問題解答

演習問題はいきなり答えを見るのではなく,答え合わせ等に使用してみてください.

多少違っていても出力結果があっていればOKです.

例1

はじめてのプログラム

#include <stdio.h>
//printfは画面に表示する命令
int main(void) {
  printf("hello world\n");
  return 0;
}

演習1

自分の名前と年齢を表示するプログラムを書いてください

#include <stdio.h>
 
int main(void) {
    printf("I am Yuki. 19 years old\n");
    return 0;
}

例2

演習1の名前と年齢を表示するプログラムを変数を使って行ってみる

#include <stdio.h>
 
int main(void) {
    int age = 19;
    printf("I am Yuki. %d years old\n", age);
    return 0;
}

演習2

変数 birthをint型で宣言し,あなたの誕生月を格納し,表示してください

#include <stdio.h>
 
int main(void) {
  int birth = 8;
  printf("私は%d月生まれです.\n", birth);
  return 0;
}

例3

四則演算をやってみよう

#include <stdio.h>

int main(void) {
    int a = 10;
    int b = 20;
    printf("aは%d,bは%d,合計で%d\n", a,b,a+b);
    a = 20;
    printf("aは更新されたので%dになりました\n", a);
    a++;
    printf("aは更新されたので%dになりました\n", a);
    
    return 0;
}

演習3

a = 20,b = 5という変数をint型で宣言し,aとbの和,差,積,商を表示してください.

#include <stdio.h>
 
int main(void) {
  int a = 20, b = 5;
  printf("aとbの和は%dです.\n", a+b);
  printf("aとbの差は%dです.\n", a-b);
  printf("aとbの積は%dです.\n", a*b);
  printf("aとbの商は%dです.\n", a/b);
  return 0;
}

例4

条件分岐を使ってみよう

#include <stdio.h>

int main(void) {
    int a = 10;
    
    if(a > 10){
        printf("aは10より大きいです\nå");
    } else if(a == 10) {
        printf("aは10です\n");
    } else {
        printf("aは10より小さいです\n");
    }
    
    return 0;
}

演習4

numという変数をint型で用意し,好きな数字を格納.そして,numが2で割り切れたら「偶数です」,割り切れなかったら「奇数です」と表示するプログラムを作成してください.

#include <stdio.h>
 
int main(void) {
  int num = 10;

  if(num % 2 == 0){
    printf("%dは偶数です\n", num);
  } else {
    printf("%dは奇数です\n", num);
  }
  return 0;
}

例5

繰り返し処理(for文)を使ってみよう

#include <stdio.h>
//1からnまでの数字を足して合計を求める

int main(void){

  int i, n, sum = 0;
  n = 10;

  for (i = 1;i <= n; i++){
    printf("現在のiの値は%d\n", i);
    sum += i;
  }
  printf("1から%dまでの合計:%d\n", n,sum);
  return 0;
}

演習5

2のn乗を2の1乗から順番に2の10乗まで表示するプログラムを書いてください.(for文を用いること)

#include <stdio.h>

int main(void){
  int i, n = 10, ans = 1;

  for (i = 1;i <= n; i++){
    ans *= 2;
    printf("2の%d乗の値は%d\n", i,ans);
  }
  return 0;
}

例6

繰り返し処理(while文)を使ってみよう

#include <stdio.h>
//1からnまでの数字を足して合計を求める

int main(void){

  int i = 1, n = 10, sum = 0;

  while(i <= n){
    printf("現在のiの値は%d\n", i);
    sum += i;
    i++;
  }
  printf("1から%dまでの合計:%d\n", n,sum);
  return 0;
}

演習6

自然数nに対して,nの階乗を求めるプログラムを作成してください.nが大きすぎると,意図しない結果になる.n<10くらいで任意の数を決めてテストしてみよう.

#include <stdio.h>
//nの階乗を求める

int main(void){

  int i = 1, n = 5, ans = 1;

  while(i <= n){
    ans = ans * i;
    i++;
  }
  printf("%dの階乗%d\n", n,ans);
  return 0;
}

確認問題

1〜100までカウントアップし,その数が3の倍数ならばFizz,5の倍数ならBuzz,3の倍数かつ5の倍数ならばFizzBuzz,どれでもなければ単純な数字を表示するプログラムを書いてください.

#include <stdio.h>
//FizzBuzz

int main(void){

  int i = 1, n = 10;

  while(i <= 100){
    if(i % 3 == 0 && i % 5 == 0){
      printf("FizzBuzz,");
    } else if (i % 3 == 0){
      printf("Fizz,");
    } else if (i % 5 == 0){
      printf("Buzz,");
    } else {
      printf("%d,",i );
    }
    i++;
  }
  return 0;
}

2日目(来週)の予定

2日目は,配列,関数を教えて,C言語を自力で学習できるWebサービスの紹介を行います.

ポインタ,構造体についてはかなりさらっと「こんなのがあるよ」という程度にとどめておきます.

ロボットの制御において,「動いた!!」っていう感覚を大事にして欲しいので入学したてからがっつりはやらない方針のようです.

© 2016-2017 迫 佑樹