人にプログラミングの基礎というか、
手順みたいなものを教える事に成ったのですが、
私自身、プログラムを良く知らないので、どういう風に教えたら良いのか
分りません(流れ図を書くと良い、ぐらいはなんとなく分る)。

実際にプログラムを書くところまで出良いので、
良いページ等をご存知でしたら、教えては頂けないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (7件)

こんにちは。

itohhといいます。

新人研修は大変ですものね。頑張ってください!!

事情はだいたい呑み込めました。
次回のテーマを設けてそれまで各自予習をしてきて貰うってのはどうでしょうか?

社会人になったのだから、「教えて貰っていないからできない」という言い訳はできないと
いうことも判って貰うためにも自分で調べることも身につけて貰いましょう。

ご自身が去年研修を受けたときを振り返ってみてください、1年たつとそのときの研修の良い点
悪い点が見えてきませんか?
それをふまえて、これだけは憶えて欲しいことを講義されてみてはいかがでしょうか?

なんか、精神論みたいになってきてしまったのでこのへんで...

また、いくつかHPを見つけてみました、参考にしてみてください。

めざせプログラマー!
http://hp.vector.co.jp/authors/VA000124/index.htm
ここは、結構希望にあっているかもしれませんね。

gooやgoogleなどで検索してみては如何ですか?
上記のHPもgoogleで「フローチャートの書き方」としたら結構な数がヒットしました。
    • good
    • 0

こんにちは。

itohhといいます。

1時間ですか?
毎日、1時間じゃないのですよね?1時間こっきりってことですよね?
ちょっと、厳しいですね(^^;

プログラム概論などを説明して、後は各自勉強するようにってとこですかね?

ちょっと、サイトを思い出しましたので記しておきます。
参考になるでしょうか?

プログラミング「超」入門
http://www.skills.co.jp/~koba/programming/index. …


IT業界人のためのリンクサイト
http://www.itnavi.com/

Studio C
http://www.nt.sakura.ne.jp/~miwaki/

この回答への補足

たびたび、ありがとうございます。
どうも、私の補足自体が言葉足らずの様で、ご迷惑をおかけしてます。

新人さんには、4月からC言語の勉強をしてもらって、
5月からはOJTでやってもらっています。

それと同時に、就業後に週に2回ぐらい学習会として行っています。
その講師となったわけです。
学習会はOSの基礎やCPU・メモリの基礎、インターフェースなどを経て
プログラミングの基礎(デバック前までの前編)を教える事に成ったわけです。

どうも、順番的におかしい(言語覚えた後に基礎?!)と思っては、
いるのですが・・・

よろしくお願いいたします。

補足日時:2001/05/21 02:21
    • good
    • 0

えっと、プログラムを初めに書く事を考えてみれば、教え方もわかってくるのではないでしょうか?


単に新しい言語を覚えたい、と言う方なら、その言語だけを教えれば良いのですが、全く何もわからない方にとっては、プログラム、命令、変数などを理解するのも難しいと思います。
C言語で有名なのが「Hello World」ですね。
ただ単に、「Hello World」と出力させるだけです。
プログラムは・・・

#include <stdio.h>

void main()
{
printf "Hello World";
}

ですね。
これをちゃんと理解するのがまず第一歩だと思います。

フローチャートが必要なプログラムを書くのは、その後で良いのではないでしょうか?

この回答への補足

回答ありがとうございます。
プログラミング言語としての基礎というより
プログラミング自体の基礎という事で
教えたいのですが、
例えば、フローチャートの書き方(記号の意味)
その他として、ということなんです。

よろしくお願いいたします。

補足日時:2001/05/21 01:19
    • good
    • 0

こんにちは。

itohhといいます。

どのような人たちに教えることになるのでしょうか?
1.御社の新人に教える。(御社がソフトハウス)
2.御社の新人に教える。(御社はソフトハウスではない)
3.パソコンスクールなどで講師となった。
(それに、小学校で児童に教えるってパターンもあるかも)

教える環境(生徒の数、年齢なども...)によって進め方も変わってくるのではないでしょうか?

例えば、プログラミングが出来るようにするといっても
御社の営業の人にExcelのマクロが組める程度までと、
新人の研修で教えるのだけど御社の仕事はJavaがメインである場合は、
教え方もレベルも変わってくるのではないでしょうか?

また、研修の期間も大きく関わってきますよね。

整理してみると。
1.生徒の人数
2.研修期間(専門学校では1~3年で教えていますよね)
3.生徒の年齢(スクールの場合、10代もいれば、50代もいる)
4.どのレベルまで教えるのか
5.ご自身は専属なのかあるいは実務と兼業なのか(結構、重要だと思います)

上記のような事項も考慮してみてください。
それによっては、何をどのくらい教えるのかが決まってきませんか?
(教える範囲は、情報処理試験レベルからExcelのマクロまたはJavaレベルまで?)

>良いページ等をご存知でしたら、教えては頂けないでしょうか?
残念ながら見あたらないですね。
書籍でも「VC++でプログラミング」、「VBでプログラミング」などの書籍は見かけますが...
言語を特定しないテキストはなかなか見つからないですね。(あるのでしょうけど)

この回答への補足

ありがとうございます。
ソフトハウスで後輩の新人に教えます。大雑把に1時間ぐらいで講義は終わり。
基本的には新人に教えます。ただ、周りでは先輩も聞いています。
人数は、新人3人、先輩10人ぐらいです。
私は、去年入社したばかりです。

基本的には、新人研修なのですが、私の実力テストも兼ねている
みたいな感じなのですが、私もほとんど初心者と変わらないので、
よろしくお願いいたします。

補足日時:2001/05/20 23:17
    • good
    • 0

無知な人に教えるというのは、ある意味プログラムですよね。


私の経験上ですが、まずはプログラムというのがどういうものなのかを教えるために身近にある事象を例にして説明します。
多分一番判りやすいのが料理かなと思っています。素材の用意や調理方法、そして目的がはっきりしている点。
素材が変数ですかね、下準備:初期化、味見:入力と条件分岐、盛り付け:出力って感じでしょうか。この辺のイメージができればプログラムって難しく考える必要ないということが判ると思います。

説明無しにいきなり「卵焼きの作り方を書け」って課題出すと面白いかもしれませんね。もちろん素材の用意から盛り付けまでできるだけ細かくという条件で。
その課題から実はプログラムを作るときも同じなんだというふうに説明すれば印象として強く残るんじゃないでしょうか?

高校の時、数学の教師に「2×3=6」を覚えておくと便利だと言われました。最初はそんなの九九で覚えたよ って思ってたんですが、2=6÷3 2分の6=3 とか式を簡単にするといろいろ展開しやすいって事でした。
実は物事を単純に身近なものに置き換えるという教えでした。

この回答への補足

フローチャートとか流れをイメージさせるのに
料理とかの例えを使うというのは良い考えですね。
参考にさせていただきます。

補足日時:2001/05/20 23:25
    • good
    • 0

「コードを書くところまで」と言う事なので勝手に“下流工程”を想定します。



なぜ言語(というかパラダイム)が大切かというとプログラムの動作原理と構造が違ってくるからです。

一般的な手続き型(=C,既に一般的で無くなっている可能性もありますが)のプログラミングでは「手続きの流れ」が唯一の制御となります。
処理の流れは「基本3構造(=順次、条件分岐、繰返し)」のみで記述可能であり、流れ図で示す事が出来ます。

対して、新しいパラダイムであるオブジェクト指向(=C++,既にさして新しくも無いのですが)では手続きの流れ以外に「メッセージによる制御」が加わります。
単純に言うと「実行ボタンのクリック」は「ユーザイベント(マウスクリック)」からのメッセージでありこれは“手続きの流れ”とは関係無く発生します。
結果として、“手続きの流れ”を記述する流れ図で表す事は(無理とは言いませんが)難しくなります。

制御の流れではなくプログラム構造の観点から考えた場合、手続き型のプログラミング言語では「処理」と「機能的な連携(または共通性)を持った処理の集合体(=ライブラリ)」を設計します。
対してオブジェクト指向ではクラス(データとデータ処理の集合体)を設計する必要があります。
***このクラスの説明は不充分過ぎて正しくありません。正しい解釈は文献を参照して下さい***

手続き型のプログラミングであれば「ソフトウェア作法」(ISBN4-320-02142-8 共立出版)という良書があります。
オブジェクト指向の場合は(C++的な)クラスとは何か?などの「設計の前段」から講義する必要があるので総合的な資料は皆無です。
Javaやsmalltalk向けはありますがC++のオブジェクト指向があまりに特殊である為応用が利きません。

イベントと処理の関連やイベント処理によるデータの状態変化を図式化するには「イベント/ステートマトリックス」や「イベント/ステートチャート」が優れており、クラス設計はUMLが優れています。
「UML モデリングのエッセンス」(ISBN4-7952-9630-8星雲社)はこの2つを解説している良書ですがやはりC++向けではない為、C++の講義に活用するなら講師による解説と注意が不可欠となります。

「Webページを」とのリクエストですが残念ながら包括的に解説された良いページが見つかりませんでした。
書籍を推薦しておきます。

この回答への補足

講義は口頭ではなく、文章でと思っていたので
Webページを探していたのですが。
書籍を参考にさせていただきます。
ありがとうございました。

補足日時:2001/05/20 23:28
    • good
    • 0

設計といっても受講者のレベルによって求められる設計フェーズが変わるのでは?


また、具体的な設計法(機能設計以降)は言語(正確にはパラダイム)で違ってきます。

最終工程はコーディング→デバッグ→テストで決まりなのですが、設計に関してはシステム段階(いわゆる上流)からコード前段(いわゆる下流)があり、下流フェーズは前述のようにパラダイムに依存します。

CなのかC++なのか。
下流フェーズのみか?
以上2点を明確にして下さい。

この回答への補足

プログラム全般という事でCだとかC++だとか
定めないで、本当に基礎として教えたいのですが、
そういう教え方自体が間違っているのでしょうか?
やっぱり、言語を決めた方が良いのでしょうか?

教えるのは、前半と後半に分れていて、
デバック及び、テストが後半部分だと聞いたので、
それ以前の分だと思って、コードを書くところまでとしたのですが。
よろしくお願いいたします。

補足日時:2001/05/20 04:01
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qどんなプログラムになるのかわからないのでプログラムを作って頂けませんか

どんなプログラムになるのかわからないのでプログラムを作って頂けませんか?

3分間英単語タイプ練習プログラム作ってを5日以上にわけて計25回以上実行します。

1 単語ファイルword.txtを単語数未知として読み込むこと.3975単語含まれているが,単語数をプログラムに直接書き込むことや実行時に与えることは禁止.
2 単語は一様乱数を用いてランダムに呈示すること.プログラム完成後,プログラムの先頭に「srand((unsigned)time(NULL));」を付加しなさい.これにより,実行時刻によって乱数シードが変わるから,異なった単語(系列)が呈示されることになる.
3 各回の得点は「正答した単語の文字数の総和」とする.
4 毎回「月/日/年-時:分:秒,得点」を結果ファイルscore.csvに追加的に書き込む(追記モード)。秒と得点の間のカンマは半角にする必要があることを注意しておく.

Aベストアンサー

とりあえず使いそうな関数だけ書いておきます。あとは調べてください。

fgets, fseek

とりあえずこれだけで作れる・・・かな?word.txtの中身が分からないですが、一行につき一単語のみが書いてあると仮定するとfgetsをループすれば単語数は求められます。

単語をメモリに格納した方が速度は早くなるのでそのときはfgets, malloc, freeで作れるかと。

ポインタは分かっていますか?
ポインタ分かってないとちょっと厳しいかも・・・

がんばってください。

Qプログラムの各行に説明を書いて頂けませんか?

下記に記載したプログラムは一定時間、時刻を周期Tで割った物を整数化する事で得た周期外時刻分を引いて周期内数値に変え、周期前半なら1後半なら-1を格納しているだけだそうです。
このプログラムを理解したいのですが、各行に説明が書いてないのでいまいちよくわかりません。
なので、どなたか各行に「//」を書いたのでその横にその行のソースの説明を書いて頂けませんか?


#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define rint(x) ((int)((x)+0.5))//
#define trunc(x) ((int)(x))//

int main(void){//

/* (1) definition */
double tstep = 0.01, last_time = 5.00;//
int max_step; max_step = rint(last_time/tstep);//
double i, REtime, time, *output = new double[max_step];//

output[max_step], time;//
double T = 1.0; /* wave cycle *//
int j=0, multi;//

/* (2) generating square wave */
// amplitude : 1
// time cycle : T = 1.0[sec]
// time step : 0.01[sec]
// last time : 5[sec]

for (time = 0.0; time < (last_time+tstep); time = time+tstep){//
i = time/T; multi = trunc(i);//
REtime = time - T*multi;//
if (REtime <= T/2.0)//
output[j] = 1;//
else//
output[j] = -1;//
j = j+1;//
}

/* (3) file out */

int t1;//
FILE *f1;//
f1 = fopen("square.csv","w");//
for(t1 = 0; t1 < 500; t1++)//
fprintf(f1,"%f,\n",output[t1]);//
fclose(f1);//

return 0;

}

下記に記載したプログラムは一定時間、時刻を周期Tで割った物を整数化する事で得た周期外時刻分を引いて周期内数値に変え、周期前半なら1後半なら-1を格納しているだけだそうです。
このプログラムを理解したいのですが、各行に説明が書いてないのでいまいちよくわかりません。
なので、どなたか各行に「//」を書いたのでその横にその行のソースの説明を書いて頂けませんか?


#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define rint(x) ((int)((x)+0.5))//
#define trunc(x) ((int)(x))//

int...続きを読む

Aベストアンサー

説明を分かりやすくするため、時間の単位を「秒」とします。

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define rint(x) ((int)((x)+0.5))//小数点以下四捨五入
#define trunc(x) ((int)(x))//小数点以下切り捨て

int main(void){//プログラムの開始

/* (1) definition */
// tstep・・・波形を記録する時間間隔
// last_time・・・記録終了の時間
// ⇒下の場合、0.01秒毎に5秒になるまで記録します。
double tstep = 0.01, last_time = 5.00;

// max_step・・・終了時間まで記録する為に必要なレコード数。
// 0.01秒毎に5秒間記録するから、500個のレコードを保存する事になります。
// ⇒「四捨五入」で整数化していますが、これに+1するか、あるいは「切り上げ」
//  の方がいいと思います。入れ物は大きいにこした事はないです。
int max_step; max_step = rint(last_time/tstep)+1; //←勝手に+1を追加しました。

// i・・・波数(1周期を1.0として、何周回ったか)
// REtime・・・単周期内の経過時刻(1周期経過するごとに0.0になる)
// time・・・記録開始からの経過時間
// output・・・記録を保存するバッファ
double i, REtime, time, *output = new double[max_step];

output[max_step], time;// いらない行です。

// T・・・1周期の時間
// j・・・何個記録したかのカウンタ
// multi・・・何周期進んだか(iの整数部)
double T = 1.0; /* wave cycle *//
int j=0, multi;//

/* (2) generating square wave */
// amplitude : 1
// time cycle : T = 1.0[sec]
// time step : 0.01[sec]
// last time : 5[sec]

// 0.0秒から5.0秒まで、0.01秒毎に記録していきます。
// ぴったり5.0秒の場合も記録したいので、5.01秒までループさせます。
for (time = 0.0; time < (last_time+tstep); time = time+tstep){
// i=現在の波数(1周期を1.0として、何周回ったか)
// multi=現在何周目か(iの整数部)
// T*multi=現在の周期に入った時間
// REtime=現在の周期に入ってからの経過時間
i = time/T; multi = trunc(i);
REtime = time - T*multi;

// 現在の周期に入ってからの経過時間が半周期以内なら、1を、
// そうでなければ-1をバッファに格納し、バッファの格納位置を1つ進める。
if (REtime <= T/2.0)
output[j] = 1;
else//
output[j] = -1;
j = j+1;
}

/* (3) file out */
int t1; // ループカウンタ
FILE *f1; // 保存するファイルのポインタ
f1 = fopen("square.csv","w");// ファイルを開きます。

// output[]に格納した値を1つずつファイルに保存します。
// ⇒個数を500としていますが、各パラメータが変更された場合に修正する必要があるので、
//  500の代わりに、jを使った方が良いです。
//  (jにはoutput[]に格納された数が入っています)
for(t1 = 0; t1 < j; t1++)//
fprintf(f1,"%f,\n",output[t1]);//
fclose(f1);//
delete[] output;// ※outputはdeleteしないといけません。
return 0;

}

last_timeやtstepの値を変更する場合は、
for (time = 0.0; time < (last_time+tstep); time = time+tstep)
でループする回数が、max_step の数値以下になっているかどうか注意が必要です。
微妙な場合は、とにかくmax_stepを大きめにとりましょう。

説明を分かりやすくするため、時間の単位を「秒」とします。

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define rint(x) ((int)((x)+0.5))//小数点以下四捨五入
#define trunc(x) ((int)(x))//小数点以下切り捨て

int main(void){//プログラムの開始

/* (1) definition */
// tstep・・・波形を記録する時間間隔
// last_time・・・記録終了の時間
// ⇒下の場合、0.01秒毎に5秒になるまで記録します。
double tstep = 0.01, last_time = 5.00;

// max_step・・・終了時間まで記録する為に必...続きを読む

QC言語のプログラムでおかしな動作をするのですが教えて頂けないでしょうか?

VisualStudio2008使用しています。
問題は、サイコロを200回振ってその出た目の数の個数分*を表示するプログラムです。
サイコロの目はランダムで出しています。
次のプログラムは正常に動作するものです。
/*
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 200

int DICE(int min,int max);
int main()
{
int n,i,j;
int y[7]={0};
srand((unsigned int)time(NULL));

for(i=0;i<N;i++){
n=DICE(1,6);
y[n]++;
}

for(i=1;i<7;i++){
printf(" %2d: ",i);
for(j=0;j<y[i];j++){
printf("*");
}
printf("\n");
}

return 0;
}

int DICE(int min,int max)
{
return min+(int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}
*/

次のプログラムが問題で、授業で先生が配列にはstaticをおまじないとしてつけないと暴走すると言われたので、つけて見ると明らかに間違ってると思われるプログラムで動作するのですが原因を教えて頂けないでしょうか?
以下問題のプログラム!
配列の前にstaticをつけたら、添え字をいくつにしても正常に動作します。普通は添え自分しか領域って確保されないですよね???
/*
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 200

int DICE(int min,int max);
int main()
{
int n,i,j;
//以下が問題の配列宣言
static int y[2]={0};
srand((unsigned int)time(NULL));

for(i=0;i<N;i++){
n=DICE(1,6);
y[n]++;
}

for(i=1;i<7;i++){
printf(" %2d: ",i);
for(j=0;j<y[i];j++){
printf("*");
}
printf("\n");
}

return 0;
}

int DICE(int min,int max)
{
return min+(int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}

質問の意味が正確に伝わらなかった場合は補足しますので、ご回答よろしくお願いします。

VisualStudio2008使用しています。
問題は、サイコロを200回振ってその出た目の数の個数分*を表示するプログラムです。
サイコロの目はランダムで出しています。
次のプログラムは正常に動作するものです。
/*
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 200

int DICE(int min,int max);
int main()
{
int n,i,j;
int y[7]={0};
srand((unsigned int)time(NULL));

for(i=0;i<N;i++){
n=DICE(1,6);
y[n]++;
}

for(i=1;i<7;i++){
printf(" %2d: ",i);
for(j=0;...続きを読む

Aベストアンサー

ローカル変数の場合はスタックと呼ばれる領域に確保されます。
この場合、指定したデータ量分しかもらえません。
例えば char s[2] = { 0xDE, 0xAD};とした場合

┏━┳━┳━┳━
┃s0┃s1┃s2┃s3...
┣━╋━╋━╋━
┃DE┃AD┃プログラムに必要なデータ等等・・・

s[2](s2)以降に何かを書き込むとデータが上書きされプログラムが暴走します。

staticをローカル変数につけるとスタックとは別の領域に置かれます。
この領域はコンパイル時に自動的にある程度余裕を持って確保されます。
また、データのみの領域としてローカル変数のようにプログラムが使用するデータ(実行に必要なアドレスなど)はありません。
static char s[2] = { 0xDE, 0xAD};とした場合
┏━┳━┳━┳━
┃s0┃s1┃s2┃s3...
┣━╋━╋━╋━
┃DE┃AD┃空き領域
s[2] = 0xBE; s[3] = 0xEF;と代入すると
┏━┳━┳━┳━
┃s0┃s1┃s2┃s3...
┣━╋━╋━╋━
┃DE┃AD┃BE┃EF
と一見なんの問題もないようにデータが書き込まれます。
しかし、
static char s[2] = { 0xDE, 0xAD};
static char t[2] = { 0xCA, 0xFE};
として
┏━┳━┳━┳━
┃s0┃s1┃t0┃t1...
┣━╋━╋━╋━
┃DE┃AD┃CA┃FE
s[2] = 0xBE; s[3] = 0xEF;と代入すると
┏━┳━┳━┳━
┃s0┃s1┃t0┃t1...
┣━╋━╋━╋━
┃DE┃AD┃BE┃EF
のように上書きされてしまいます。
今回はstaticな変数が一つだったので問題がないように見えただけです。

つまり、staticをつけると普通のローカル変数とは記憶される場所が違うということです。

ローカル変数の場合はスタックと呼ばれる領域に確保されます。
この場合、指定したデータ量分しかもらえません。
例えば char s[2] = { 0xDE, 0xAD};とした場合

┏━┳━┳━┳━
┃s0┃s1┃s2┃s3...
┣━╋━╋━╋━
┃DE┃AD┃プログラムに必要なデータ等等・・・

s[2](s2)以降に何かを書き込むとデータが上書きされプログラムが暴走します。

staticをローカル変数につけるとスタックとは別の領域に置かれます。
この領域はコンパイル時に自動的にある程度余裕を持って確保されます。
また、データのみの領域としてロ...続きを読む

Q自分自身を更新するプログラム

こんにちは。
Webからダウンロードしてきて自分自身を更新するアプリケーションをが見かけるのですが
具体的にはどのように実装されているのでしょうか?
いくつか自動更新系のアプリケーションを見かけたのですが、

・別の更新用プログラムっぽいものを起動して、アプリケーションを更新する。
・自分自身で更新しようとするもの。

の二種類ありました。前者はなんとなく出来そうな気がするのですが、
後者は自分自身の実行ファイルを上書きできないと思うのです。
後者の場合はどのように自分自身を更新しているのでしょうか?

もしご存じの方がいらっしゃいましたら教えていただけないでしょうか。
よろしくお願いします。

Aベストアンサー

そのアプリの構成によっていろいろ考えられると思うけどね。
単純なやつなら。。。

本体.exe を起動
アップデート版を確認
アップデート用プログラムを起動。引数で本体.exe のインストール パスを与える。
本体.exe 終了。

アップデート用プログラムが新本体.exe をダウンロードし、本体.exe を上書き。
本体.exe を起動。
アップデート用プログラム終了。

Q間違いを指摘して頂けませんか?(切実)

私は大学で春からプログラミングの基礎を学び始めたプログラミング初心者です。
今、if関数のネストについて習っていて、if関数のネストを利用したプログラム作成の課題が出て、一応書いてはみたのですがどうしても上手くいきません。下に課題の内容と私の書いたプログラムを書いておきますので、間違っている箇所を指摘、修正して貰えませんか?宜しくお願い致します。


【課題】
次の項目に従ってプログラムを作成せよ。

(1)整数型の変数noを宣言
(2)「整数を入力してください。」と表示して改行
(3)キーボードから入力された値を変数noに代入
(4)入力された値が
・偶数で4で割り切れる数なら「整数○は偶数で4で割り切れます。」
・偶数で4で割り切れない数なら「整数○は偶数だけど4で割り切れません。」
・奇数で3で割り切れる数なら「整数○は奇数で3で割り切れます。」
・奇数で3で割り切れない数なら「整数○は奇数だけど3で割り切れません。」
の○の位置にnoの値を当てはめて表示した後、改行


#include <stdio.h>

main(void)
{
int no;

printf("整数を入力してください。\n");
scanf("%d",&no);
if(no/2==0,no%4==0){
printf("整数%dは偶数で4で割り切れます。\n",no);
}else{
if(no/2==0,no%4!==0){
printf("整数%dは偶数だけど4で割り切れません。\n",no);
}else{
if(no/2!=0,no%3==0){
printf("整数%dは奇数で3で割り切れます。\n",no);
}else{
printf("整数%dは奇数だけど3で割り切れません。\n",no);
}
}
}

}


※なお、上のプログラムは全て左詰めになってしまっていますが、質問する上で表示出来なかっただけですので…実際にはちゃんと然るべき箇所にTabキーによる余白は入れてあります。

私は大学で春からプログラミングの基礎を学び始めたプログラミング初心者です。
今、if関数のネストについて習っていて、if関数のネストを利用したプログラム作成の課題が出て、一応書いてはみたのですがどうしても上手くいきません。下に課題の内容と私の書いたプログラムを書いておきますので、間違っている箇所を指摘、修正して貰えませんか?宜しくお願い致します。


【課題】
次の項目に従ってプログラムを作成せよ。

(1)整数型の変数noを宣言
(2)「整数を入力してください。」と表示して改行
(3)...続きを読む

Aベストアンサー

No4です。
>「かつ」の演算子についてはまだ習っていないのですが、>&&を使わない場合は回答者No.3の方が書いているように
>if(no%2==0){
>if(no%4==0){
>とすれば良いのでしょうか?

その通りです。&& を使わないのであればNo3の方のようにしてください。
if (偶数か){
 if (4で割り切れるか){
  4で割り切れる場合のケース
 }else{
  4で割り切れない場合のケース
 }
}else{
 if (3で割り切れるか){
  3で割り切れる場合のケース
 }else{
  3で割り切れない場合のケース
 }
}


人気Q&Aランキング

おすすめ情報