「void」を含む日記 RSS

はてなキーワード: voidとは

2019-03-12

anond:20190312212825

C言語ってちょっとやったけど、これができて何が楽しいの?

ってなったんだけど。これからどうやってマインクラフト作れるようになるのか分かんない。

#include <stdio.h>

int main(void)

{

printf("Hello masuda");

retern 0;

}

2019-03-05

なぜ「Hello world」は誰が書いても高品質になるのか

品質ソフトウェアは変更が容易である

例としてこちらをご覧いただきたい。

/* Hello world */
#include <stdio.h>

int main(void) {
    printf("Hello, world!");
    return 0;
}

このコードは高品質である

理由は以下の通り。

  1. 設計シンプル
    何の分岐も判定もない。容易にC2カバレッジ100%にできるシンプルさ。
  2. 高凝集度、かつ低結合度
    変数を使っていないし、そもそも単一ブロック構成されているので結合のしようがない。
  3. 環境依存せず、移植性が高い
    標準ライブラリのみで構成されている。
  4. 適切に構造化されている
    そもそも構造と呼べる要素がない。
  5. 実行時エラーの恐れがない
    唯一、コンパイル時に検出できないのはprintf引数だが、例えここが"hellow world"になっていたとしてもプログラム問題なく実行できる。

2019-02-12

エロ画像思ひ出

エロ動画ではない。エロ画像である。なにせこれは20年以上前の話だからだ。

当時、Windows ユーザの間でもモデムテレホーダイの併用でネット接続が普及しつつあった頃だった。俺は貧乏学生だったけど、常時接続された環境でのうのうとネットワークを使っていて(誤解を避けるために最初に書いておくが、俺は工学系だが情報系の専攻ではない)、Linux独立したサーバを組んで研究室に設置し、テレホーダイタイムに家の PC98 で hterm を走らせてターミナル接続し、emacsメールの読み書き、kermit で小さいファイルのやりとりをしているような、そんな感じの日々だった。テキストターミナルだけ、って、今の人には信じられないかもしれないけれど、メールネットニュースの読み書き、あとはサーバ管理を行う上では、これで何の不自由もなかった。まあそういう時代だったのだと思っていただきたい。

おそらくここを読んでいる方の多くは ネットニュースという言葉を聞いてもピンとこないと思う。誤解を恐れず簡単に言うと、オープンかつ分散的なネットワークで構成された5ちゃんねる、みたいなもの……かな。5ちゃんねるはオープンでも(ネットニュース程に)分散的でもない(いや内部では分散されているんだろうけどね)し、投稿匿名で行われるわけだけど、ネットニュースは個々のサーバ独立して運営されていて、上流のサーバとの間で NNTP によるバケツリレー方式ニュース記事ファイル転送される。ネット上を流れているニュースグループとその記事の数は膨大なもので、そこではほとんどの場合所属名前オープンにしたやりとりが行われていた。日本では fj.* ってのがあって…… void 氏とか lala 氏とか、何かまあ色々有名人物がいたわけだ。何か投稿する際にびくびくしながらやっていたのを今でも思い出す。

いや、まあ fj の話はよろしい。あくまでここではエロ画像の話だった。先のネットニュースニュースグループには comp.*, news.*, sci.* 等があったわけだけど、これらの枠組みに入らない、もしくは入れたくないような話題に関して収納する目的alt.* というのが作られていた。この alt.* はある意味無法状態に近くて、alt(言うまでもなくこれは alternative の略である)は実は "Anarchists, Lunatics and Terrorists" の略である、などと言われた位だった。そしてこの alt.* 内には alt.binaries.* というサブグループ形成され、そこに様々なバイナリデータが流されていた。ただし、ネットニューステキストしか流すことはできないので、バイナリデータuuencode(この頃まだ Base64 なんてなかったので)でテキスト文字列に変換され、分割されて投稿されていたわけだ。

で……長いな前置きが。要するに、alt.binaries.erotica.* というサブグループがあって、ここにエロ画像が大量に流れていたわけだ。勿論、大学企業ニュースサーバはこんなグループを購読したりはしないわけなのだが、あるときに噂が流れたのだ。**大学のこのサーバで、どうやら購読しているらしいぞ、と。アクセスのあからさまな制限がされておらず、見てみると……うわー、あらかた購読してるじゃん。まさに宝の山であった。ちょっと考えて、俺は自分サーバ上でスクリプトを書き始めた。

alt.binaries.erotica.* には、様々な性的嗜好に合わせた画像のサブグループがある。ガチムチホモの絡みなんてのはお呼びじゃないので、見目麗しそうな女性画像がありそうなグループをまず選び、そこの記事一定時間間隔(traffic を徒に増やすのはさすがに気がひけたので)で自動的採取、結合し、uudecode でバイナリに変換して HDD にストアする……そういうスクリプトを書いてみた。たまたまある目的で、データストア専用の HDDサーバに付けたところだったので、そこにバイナリを溜めるようにして、ちょっとわくわくしながら眠りについた。

翌日、早めに研究室に行き、他の学生がいないのを確認して HDD の中身を見ると……おー、溜まっとる溜まっとる。中には外れもあってスカトロやら妊婦やらエラいものも混じっているわけだが、さすがにこれは人力で弾くしかない(今ならそこも自動化するかもしれないが)。数日で HDD 一杯にファイルが蓄積されたのだった。さあ、めくるめくエロライフの始まりまり……と思ったのだが、そうはならなかった。結論から言うと、俺は1、2週間でそれをやめてしまったのだ。

まず俺は洋ピンマニアではなかった。そして、エロ画像ってのは飽きる。最初は、今風に言うと「これは俺の嫁」みたいなのを選んで、精選版画像アーカイブみたいなのを作ろうかとも思ったのだが、そういうところにそういう食指をそそられる画像ってまぁ流れてこないんだな。圧倒的に多いのは「ノイズ」。人力ノイズリダクションに嫌気がさしてしまったのだった。おまけに HDD は逼迫してくるし、結局あるところで意を決して、HDD を unmount してファイルシステムの再構築。すかーっと容量が空いたそのときが、実は一番快楽を感じた瞬間だったかもしれない。

まあ、あれだな。足るを知る、ってやつですよ。たくさんありゃいいってものでもない。それをちょっと学習したのだった。

2019-02-07

anond:20190207081714

いや、俺が取った魚拓じゃないので…

あるかなー、と思って確認してみたらあった


このブックマークレットでワンクリックでチェックできるので便利

archive.org

javascript:void(window.open('https://web.archive.org/web/*/'+location.href));

archive.is

javascript:void(open('https://archive.is/search/?q='+escape(location.href)));

Web魚拓

javascript:void(open('http://gyo.tc/'+location.href));

2019-02-01

スクリプト言語からJava

なにこれ融通利かなすぎわろた


でもこれが本来プログラミングなんだよな

いちいちpublicだのstaticだのvoidだのアホくさく思えてくるけどCのポインタ管理と比べたら圧倒的に楽なんだよな(たぶん)

宣言すらいらない言語に馴染みすぎるのもよくないなと実感、ちゃんJavaも書けるようになろう

2018-12-23

anond:20181223184745

この辺になってくると初心者の人は面倒かな?

解説をつければかなりわかりやす

基本的な書き方


class mystring
{
public:
	char *buffer;
	mystring() 
	{
		buffer = (char*)"";
	}

	void operator = (const char*t)
	{
		int len = strlen(t);
		buffer = new char[len + 47];
		strcpy(buffer, t);
	}

	void operator = (const mystring&src)
	{
		int len = strlen(src.buffer);
		buffer = new char[len + 47];
		strcpy(buffer, src.buffer);
	}

	mystring& operator + (const char*t)
	{
		int len = strlen(buffer);
		int len2 = strlen(t);
		char *buffer2 = new char[len + len2 + 47];
		strcpy(buffer2, buffer);
		strcpy(buffer2+len, t);
		buffer = buffer2;
		return *this;
	}
	mystring&  operator + (const mystring&src)
	{
		return ((*this) + src.buffer);
	}

};


STL化したもの

class mystringV
{
public:
	std::vector<char> buffer;
	mystringV()
	{
		buffer.resize(2);
		buffer[0] = ' ';
		buffer[1] = NULL;
	}

	void operator = (const char*t)
	{
		int len = strlen(t);
		buffer.resize(len+1);
		strcpy(&buffer.at(0), t);
	}

	void operator = (const mystringV&src)
	{
		buffer = src.buffer;
	}

	mystringV& operator + (const char*t)
	{
		int len = strlen(&buffer.at(0));
		int len2 = strlen(t);

		buffer.resize(len + len2 + 47);

		strcpy(&buffer.at(0) + len, t);

		return *this;
	}
	mystringV&  operator + (const mystringV&src)
	{
		return ((*this) + &src.buffer.at(0));
	}

};

考察

様々な話はあるものSTLの方を使えば

いろんな事をプログラマにかわってライブラリがやってしまうということ

どうなんだろうね。

この辺は あまりしっかり おしえてもらえないところではある。

でも プロならみんな 知っている

anond:20181223183225

初心者

class mystring
{
public:
	char *buffer;
	mystring() 
	{
		buffer = (char*)"";
	}

	void operator = (const char*t)
	{
		int len = strlen(t);
		buffer = new char[len + 47];
		strcpy(buffer, t);
	}

	void operator = (const mystring&src)
	{
		int len = strlen(src.buffer);
		buffer = new char[len + 47];
		strcpy(buffer, src.buffer);
	}

	mystring& operator + (const char*t)
	{
		int len = strlen(buffer);
		int len2 = strlen(t);
		char *buffer2 = new char[len + len2 + 47];
		strcpy(buffer2, buffer);
		strcpy(buffer2+len, t);
		buffer = buffer2;
		return *this;
	}
	mystring&  operator + (const mystring&src)
	{
		return ((*this) + src.buffer);
	}

};

	mystring my_space_org;
	for (int i = 0; i < 8; i++) {
		mystring space;
		space = my_space_org + " ";
		printf("%sHello world\n", space.buffer);
		my_space_org = space;
	}

2018-12-15

public class masda{

int age = 40;

int morasu(){

System.out.println("morasuta");

return 0;

}

public static void main(String[] args)

{

masda unko = new masda();

unko.morasu();

}

}

2018-12-14

C#Classについて知ってる人教えてほしい

VisualStudioローカル動作するアプリを作ろうと思ってるんだけど

本当に初歩的なことかもしれないことが分からない。

class」というやつについてだ。

XXXXX.csというファイル内にそいつは居るんだが、

そいつの中には複数classさんが存在してもいいのか?SAVACLASSとLOADCLASS存在しても良いのか?

namespaceって何だよ。名前空間意味分からん


public class Person
{
    public string name { get; set; }
    public int age { get; set; }
}
public class Office
{
    public string name;
    public ObservableCollection<Person> persons;
}


private Office office;
private void init()
{
    office = new Office();
    office.name = "オフィス";
    office.persons = new ObservableCollection<Person>();
    office.persons.Add(new Person { name = "001", age = 11 });
    office.persons.Add(new Person { name = "002", age = 22 });
    office.persons.Add(new Person { name = "003", age = 33 });
}

上記って全て同じCLASSファイルに置いていいの?

OFFICEという属性にはPARSONというものが集まってて、そのPARSONの情報にはNAMEAGEがありますよ!というのは分かるんだけど

1から書けといわれたらちょっとからなくなる……

シリアライズも、デシリアライズも、「圧縮解凍」みたいなイメージしかないし

うーん。難しい。

クラスって何なんだ。VBA風に説明できる人いない?(VBAでもClassは使わずにFunctionとSUBだけ使い回してた)

2018-07-31

シェア」を「愛撫」に置き換えると愛情たっぷりになる

シェアさせていただきます!」→「愛撫させていただきます!」

ブックマークレット作るなら↓

javascript:void((function(){var d=document;d.body.innerHTML=d.body.innerHTML.replace(/シェア/g,'愛撫');})());

2018-07-09

2018-06-27

include <stdio.h>
int main(void){
  while(1){
    puts("5000兆円欲しい");
  }
}

2018-06-18

プログラミングやるようになって初めて出会った英単語 ~初級編~

思いつくまま、順不同です

invoke

void

cascade

increment

validation

carousel

boolean

callback

summation

cache

なお中級、上級、神級の執筆増田諸氏にお任せいたしま

2018-03-28

やったー Javahello world かけたよ!

    public static void main(String[] args) {
        System.out.println(helloWorld());
    }

    // https://stackoverflow.com/questions/15182496/why-does-this-code-using-random-strings-print-hello-world
    private static String helloWorld() {
        return IntStream.of(-229985452, -147909649)
                        .mapToObj(Random::new)
                        .map(ran -> IntStream.generate(() -> ran.nextInt(27))
                                             .takeWhile(k -> k != 0)
                                             .map(k -> k + '`')
                                             .collect(StringBuilder::new,
                                                      StringBuilder::appendCodePoint,
                                                      StringBuilder::append))                 
                        .collect(Collectors.joining(" "));
    }

StringBuilder で文字列化してるところがなんとも野暮ったい感じなんだけどどうにかならないかな?

# スーパー pre だと > が > に変換されて見にくいので修正しました (面倒くさいなあ、もう)

2018-02-13

anond:20180213003927

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button btClick = findViewById(R.id.btCalc);

CalcListener listener = new CalcListener();

btClick.setOnClickListener(listener);

}

private class CalcListener implements View.OnClickListener {

@Override

public void onClick (View view) {

EditText input1 = findViewById(R.id.etInput1);

EditText input2 = findViewById(R.id.etInput2);

TextView output = findViewById(R.id.tvOutput);

String input1str = input1.getText().toString();

Integer input1int = Integer.parseInt(input1str);

String input2str = input2.getText().toString();

Integer input2int = Integer.parseInt(input2str);

output.setText(input1int + input2int + "です" );

}

}

}

Integer.parseInt()を見つけるのが最大の難所であった

2017-12-16

とあるシステム会社金融システムに関わっている知り合いが

M銀行20人月案件の話を知らなかった。

Javaのpublic static void mainを習った次に習う事かと思ったのに意外と認知度低いんだな

2017-12-04

if(a){
   A(); return;
}
B();

より

if(a){
   A();
}else{
   B();
}

の方が可読性が高いのは自明なので、途中return禁止というのも合理性あるなと思った。

逆にvoidでないならむしろ末尾returnを禁止したほうが、値を返さなパスを検出できていい場合がある。

2017-11-01

anond:20171029161516

FizzBuzz問題を読み替える

具体的に1から15までの例で考えてみる。

集合で考えるとして、集合Aを3の倍数、集合Bを5の倍数とする。

U = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }

A = { 3, 6, 9, 12, 15 }

B = { 5, 10, 15 }

A∩B = { 15 }

¬(A∪B) = { 1, 2, 4, 7, 8, 11, 13, 14 }

ベン図は次のようになる。

+-----------U----------+
|                      |
| +---A------+         |
| | 3 6      |         |
| |  9 12 +--+---B---+ |
| |       |15|       | |
| +-------+--+ 5 10  | |
|         |          | |
|         +----------+ |
|                      |
| 1 2 4 7 8 11 13 14   |
+----------------------+

ド・モルガン定理より

¬(A∪B) = ¬A∩¬B

よって、FizzBuzz問題は次のように読み替えられる。

  • (A∩¬B)3の倍数、かつ、5の倍数でなければ "Fizz"を出力
  • (¬A∩B)3の倍数でなく、かつ、5の倍数ならば "Buzz"を出力
  • (A∩B)3の倍数、かつ、5の倍数ならば "FizzBuzz"を出力
  • (¬A∩¬B)3の倍数でなく、かつ、5の倍数でもなければ元の数字を出力

表にしてみる。

5の倍数5の倍数ではない
3の倍数"FizzBuzz""Fizz"
3の倍数ではない"Buzz"元の数字

コード検討

よくあるコードスタイルWikipediaから借りることにして、使用する言語をCとする。

https://ja.wikipedia.org/wiki/Fizz_Buzz

さて、元の論理を愚直に実装するとどうなるだろうか。

#include <stdio.h>

int main(void) {
    int i;
    for (i = 1; i <= 100; i++) {
        if (i % 3 == 0 && i % 5 == 0) {
            printf("FizzBuzz\n");
        }
        if (i % 3 == 0 && i % 5 != 0) {
            printf("Fizz\n");
        }
        if (i % 3 != 0 && i % 5 == 0) {
            printf("Buzz\n");
        }
        if (i % 3 != 0 && i % 5 != 0) {
            printf("%d\n", i);
        }
    }
    return 0;
}

ここで、元増田が発想したような「3の倍数の後に5の倍数を判定させて"Fizz"と"Buzz"を連続出力すれば"FizzBuzz"の段は要らないんじゃね?」作戦を発動する。

"FizzBuzz"の判定をごっそり削り、"Fizz"と"Buzz"の条件が同時に起こることを考慮する。

forの終わりに改行するようにする。

コードを追って、元の論理と合ってるかを確認しておく。

#include <stdio.h>

int main(void) {
    int i;
    for (i = 1; i <= 100; i++) {
        if (i % 3 == 0) {
            printf("Fizz");
        }
        if (i % 5 == 0) {
            printf("Buzz");
        }
        if (i % 3 != 0 && i % 5 != 0) {
            printf("%d", i);
        }
        printf("\n");
    }
    return 0;
}

2017-06-06

ジェネリック医薬品.java

interface 頭痛薬 {}

class バファリン implements 頭痛薬 {}

class バッサニン implements 頭痛薬 {}

class 薬瓶<T> { /* 中略 */ }

public class Test {

  public static void main(String[] args) {

    薬瓶 頭痛薬入れ = new 薬瓶<頭痛薬>();

    頭痛薬入れ.add(new バファリン());

    頭痛薬入れ.add(new バッサニン()); // バファリンとバッサニンは成分が同じなので、同じ薬瓶に入れて混ぜて服用しても問題ない

    System.out.println(頭痛薬入れ.size()); // 2

  }

}

2017-06-02

http://anond.hatelabo.jp/20170602170355

Javaは、オブジェクト指向を盲信し、すべてにおいてオブジェクト指向強制したのが間違いだった。

Java で、hello worldプログラムすると

public class Hajimete {

public static void main(String[] args){

System.out.println("Hello, world.");

}

}

こんなに長く書く必要があるのが一番嫌われた理由

他の言語なら

print("Hello, world.");

ぐらいの1行で済むんだ。

2017-05-02

三木谷浩史さんのコードひどいのでなおしてみた

http://techwave.jp/archives/a-source-code-written-by-mr-mikitani.html

書き直してみた

void reverse(char* text, int length)

{

int i = 0;

int j = length;

while (i<j) {</p>

char temp;

temp = text[i];

text[i] = text[j];

text[j] = temp;

i++;

j--;

}

}

int add_comma(int n, int length, char *out)

{

int i = 1;

int j = 0;

int mod = n % 10;

n = n / 10;

while (n > 0) {

if ((i % 3) == 0) {

out[j] = ',';

j++;

}

out[j] = mod + '0';

i++;

j++;

mod = n % 10;

n = n / 10;

}

if (j > length) {

return -1;

}

out[j] = mod + '0';

reverse(out, j);

return j;

}

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん