変数のリセット方法とループからの抜け方

このQ&Aのポイント
  • 変数のリセット方法とループからの抜け方について解説します。質問文章では、WHILE文を使用して変数が0になったらループから抜けてもとの変数に戻したい場合の指令が知りたいです。
  • 質問文章での要点は、変数のリセット方法とループからの抜け方です。具体的には、WHILE文を使用して変数が0になったらループから抜ける方法と、もとの変数に戻す方法について知りたいです。
  • 変数のリセット方法とループからの抜け方について説明します。質問文章では、WHILE文を使用して変数が0になったらループから抜けてもとの変数に戻す方法が知りたいです。変数のリセット方法とループからの抜け方をまとめます。
回答を見る
  • ベストアンサー

変数のリセット

WHILEを使用し変数が0になったらループから抜けて、もう一度もとの変数に戻したい時はどのような指令になりますか? #100=2 WHILE[#100GE0]D01 NC文 #100=#100-1 END1 今の時点で#100が0のところを ここで#100=2と入力せずに #100を最初に指定した2に戻したいです

質問者が選んだベストアンサー

  • ベストアンサー
  • tokuhon-a
  • ベストアンサー率66% (30/45)
回答No.3

カウントダウンする変数を別にすれば戻さなくてすみます。 #100=2 #101=#100 WHILE[#101GE0]D01 NC文 #101=#101-1 END1

その他の回答 (2)

回答No.2

FANUCは長い事扱っていないので間違っているかもしれませんが、 メインのみでするのであれば #100=2 #101=#100 WHILE[#100GE0]D01 NC文 #100=#100-1 END1 #100=#101 ではどうでしょうか?

  • ohkawa3
  • ベストアンサー率59% (1342/2261)
回答No.1

回答でなくて申し訳ありませんが、 C言語プラグラム中の“WHILE文”なのでしょうか?

参考URL:
https://ja.wikipedia.org/wiki/While%E6%96%87
it2019
質問者

補足

FANUCの制御装置のマクロです

関連するQ&A

  • perl:ループのカウンタ変数の値を保持したい。

    While文のループのなかにfor文でループをまわしているスクリプトなのですが、 forの中でカウンタ変数をつくり、ループ回数を計測しております。 またforの中である条件を満たした際に、lastでforを抜け、引き続きWhileのループを継続するという処理をしております。 $i=0; While(○○){ 処理1    for(××){ 処理2 $i++;      if($i >=100){  処理3       last; } } } ここで、一度for文のif文で一度forループを抜け、Whileでループをし、またforループに突入した際に、前回forループでカウントした$iの値を保持したまま、そのつづきから$iのカウンタを動作させたいのですが、$iの値はforループを抜けるとリセットしてしまいます。 このような場合、どうすれば$iの値を保持できますでしょうか。 お詳しい方、宜しくお願い致します。 ※ネストがうまく表現できず、みずらくてスミマセン。

    • ベストアンサー
    • Perl
  • Jump文について

    main(){ char a[80]; int i = 0; --------------------------------------------------- while(1){ printf("文字を入力してください>"); scanf("%s" , a); if(a == "end"){ i++; break; } i--; } ---------------------------------------------------- printf("%d" , i); return; } -----でかこった部分になりますが、 変数aにendが入力されると、ループをぬける処理を作ろうと思うのですが、 endを入力しても、ループからぬけることができません。 ループから抜けられない原因として考えられるのが、aの初期状態に何か問題が あるのではと思われます。 以上、宜しくお願い致します。

  • ループの中にループ

    while文の中にwhile文をする方法はありますでしょうか? 最初のwhile文は指定回数のループで その中のwhile文はデータベースの検索結果数分だけループするためのwhileです。

    • ベストアンサー
    • PHP
  • 未初期化変数の扱い方についての質問

    Microsoft Visual C++ 2008を使用しています。 #include <stdio.h> int main() {     float a;         … for(;;) {          …          scanf("%f",&a);          …          printf("%f",a); }       } このようなプログラムを書いて、実行しました。 aという変数に数字を入力すれば問題ないのですが、誤って文字を入力してしまうと、-107374176という値が連続で出力されます。(for文のループが無限に繰り返される。)  for文ではあるキーワードを入力するとループから出るというプログラムになっています。  間違って文字を入力する時にどの文字を入れても必ず、-107374176の値になるので調べたら、「-107374176は0xccccccccでvcのデバッグビルド時の未初期化変数の値と一致する。」という内容をネットで見つけました。  変数として定義されていて、初期化されていない変数を未初期化変数ということなので、aが未初期化変数になるのはわかるのですが、なぜループが無限につづくのかが理解できません。    質問の回答をよろしくお願いします。

  • マキノ KE-55 変数の取り扱いについて

    NC初心者です。 マキノKE-55についているFUNUC 20-FAを使っています。 溶接材(70×150mm 厚さ9mm)の開先30°を加工しようと思っています。 YZ平面を直線補間G1で削ろうと考えています。 X方向は変数を使って、0.1mmずつ送っていこうと思っています。 以下のようなプログラムを考えました。 使っている工具は80mmのフルバックです。 ワーク原点はマシンバイスの固定口金右角です。 O0001 G54 G90.0 G0 X20.0 Y45.0 Z10.0; S600; M3; G1 Z1.0; #1=0 WHILE [#1 EQ -180] DO1; G91 Z-7.35 Y-12.7 Z7.35; #1=-#1-0.1; G0 X#1 Y12.7; END1; G90 G0 Z50; M5; X100 Y100; M30; シングルブロックで起動させると、 #1=0 で、「09 アドレス入力に誤りがあります」とエラーになります。 WHILE文をIF分に変更したり、何度も入力を確認したのですが、症状 は同じです。 変数を使わないで、サブプログラムではうまく動いたのですが、PCが接続できないので、操作盤から手打ちで入力しています。0.1mmで送ると1800行も入力しなければいけないので、変数を使って動かしたいのですが、根本的な使い方が間違っているのでしょうか? よろしくお願いします。 また、別の良い加工法があったら教えてください。

  • 変数名(配列)の中の変数

    配列変数の名前の中に変数を入れたい場合、どのように記述すればいいのでしょうか? use strictを用いて、以下のように書いてみましたが、エラーが出て上手く動きません。 ループ x: 1-3 ループ y: 1-2 ${"answer$x"[$y]}=入力値 ←この部分を教えてください。    ループ閉 y ループ閉 x --------------------     answer1[1] answer1[2] answer2[1] answer2[2] answer3[1] answer3[2] とループを通るように、変数名を設定したいのですが、 エラーが出て実行ができません。 エラー:Can't use string ("answer1") as an ARRAY ref while "strict refs" in use at~ -------------------- 実際のプログラムは以下のように書いています。(該当部分のみ) for(my $x=1; $x<$num; $x++) { for (my $y=0; $y<$n; $y++) { my $y = ($x*$n)+$d; my @line = split(/\r/, $data[$y]); my @line0 = split(/\t/, $line[0]); ${"answer$x"[$y]} = $line0[0]; } } よろしくお願いします。

  • ループの特定入力終了

    C言語初心者です。よろしくお願いします。 whileなどのループ関数を使って、キーボード 入力をするたびに、ループが一度走る事は、 可能です。ですが、 常にループは走らせながらendなどの特定 の入力をされた場合に、ループを抜ける プログラムをどうしてもできません。 わかる方、教えていただければ幸いです。

  • キーボードから入力される文字を受け取る関数?

    VB 2008 でキーボードから入力される文字を受け取る関数の作成は可能でしょうか? Module Main   Sub Main()     Dim nc As Long     nc = 0     While FileSeek("D:\Temp\Test.txt", nc + 1) <> ""       nc = nc + 1     End While     Debug.Print(nc)   End Sub End Module △ While FileSeek("D:\Temp\Test.txt", nc + 1) <> "" ○ While GetChar() <> "" もちろん、GetCharってのはありますので同じ名前では無理。 でも、こういう関数を欲している訳です。 OKWaveに助けられて FileSeek()ってのを作成しました。 が、これはファイルから1文字づつ読む関数。 欲している関数とは違います。 VB 2008Expressをダウンロードし某テキストの例題を初めから演習しています。 なにせ、プログラマでもないのに初めての言語ということで悪戦苦闘です。 そして、今、僅かに3題目。 宜しくお願いします。 なお、コンソールではなくWindowsアプリケーションで演習中です。

  • do while

    do whileの文で do{… }while(c!=1 && c!=2 && c!=3); つまり1,2,3以外の数字を入力した場合はループするようにしました。…は無限ループしないようにしています。実際1,2,3以外の数字を入力しても無限ループしません。しかし、数字以外の文字を入れてしまうと、無限ループします。%dがいけないのでしょうか?初心者ですので分かりやすくよろしくお願いします。多分これだけじゃ情報不足だと思うので、足りない情報があれば言ってください。すぐに書き込みます。

  • このプログラムのフローチャートについて。

    フローチャートについての質問です。 main() {     この辺に変数宣言     while(1)     {        省略        while(1)        {           省略        }        if(firstletter == '\0')            break;        printf("ワード数:%d\n",wordnum);     } } というようなプログラムでフローチャートを書こうとしたのですが、 これって初めの無限ループを抜ける事がないから 開始→変数宣言→ループ→中略→ループ閉じ で終わってもいいのでしょうか?最後に ・・・→終了 で終わらなくてもいいのでしょうか? でも最後のif文で初めの無限ループを抜けるようになってますよね? ということは「開始→」から始まって最後が「→終了」でいいですよね? もしbreakが無かったら最後が「→ループ閉じ」でOKでしょうか?