❤恋するコンピュータサイエンス❤

コンピュータサイエンス、3DCGをもっと楽しく、もっと本質的に!c言語、c++の記事中心です

grasshopper のデータ構造の作り方(GRAFT )

Q.GRAFTとは何か?データツリーの観点から説明せよ。 A.グラフトとはブランチを増やして、リストの数値を個別に格納させる機能である。 GRAFT を使いこなせるようになるには、ブランチ(BRANCH) とリスト(LIST) の関係の理解しておく必要があるGRAFTとは…

3DCG grasshopper をコンピュータサイエンスで考える

RHINO GRASSHOPPERを通じてコンピュータサイエンスの入口にすることに興味を持っている方へ RHINO GRASSHOPPERは、デザインや建築分野で広く使われているツールですが、実はコンピュータサイエンスの入門にも最適なプラットフォームです。その理由は、グラフ…

grasshopper のデータ構造をコンピュータサイエンスで考える

プログラムでは扱うデータに何かしらの意図を持たせたいとき、扱うデータに構造を持たせます。構造とはヒエラルキーをつけるということです。いきなり問題です。一番シンプルなデータ構造は何だと思いますか?正解は配列arrayです。一度は聞いたことがある人…

APIって何?

Q.APIとは何か?A.簡単に言えば、APIは異なるソフトウェアやサービス間の「通訳」のようなものです。一方のアプリケーションが理解できる形で情報を要求し、もう一方のアプリケーションが理解できる形で情報を提供します。これにより、異なるシステム間でス…

C言語おすすめ本

chatGPT がなんでも教えてくれる便利な時代だが、本を読むことは本質及び体系の理解につながり、技術者として生きていく糧になるものだと思う。そのような観点から下記2冊おすすめの本をピックアップしてみた。 ■魔法のcプログラミング各テーマごとに例題…

2次元配列とポインタの関係とは?

Q: char **av ={ "abc", "def", "ghi" }上記のようにavが文字列の集合を指している場合、各文字列とそれぞれの文字にどのようにアクセスできるか? A: char **av が文字列の配列を指している場合、av はそれぞれの文字列の先頭アドレスを指すポインタの配列…

fd ファイルディスクリプタとは

プロセスは下記を参照 プロセスとプロセスID - 恋するコンピュータサイエンス

プログラミング上達の速度(理解の歩幅)

初心者 思考(理解)の歩幅 プログラミングの理解の歩幅プログラミングを学ぶ際、人それぞれ理解のスピードや進む歩幅は異なります。理解が早い人は、まるで階段を2、3段飛ばしで駆け上がるかのように、新しい知識や技術を素早く吸収していきます。一方理…

ポインタ理解のコツ③【レファレンス・デリファレンス】

Q,ポインタのレファレンス(参照)・デリファレンス(脱参照)とは何かA. そもそも、ポインタが何故必要かといえばレファレンス・デリファレンスするためといえる。下記用語の理解から始めよう レファレンス(参照)は、変数やデータ構造などが格納されてい…

int *str = "abc" は可能か?

Q. int *str = "abc" は可能か? A. 駄目。 char *str = "abc" としてchar ポインタ型で文字列は宣言しなければならない。 C言語ではint型の変数を直接使って文字列を格納することは許可されていません。その主な理由は以下の通りです: データ型のサイズ: i…

【C言語】文字列を数値に変換する方法(atoi)

そもそも何故このようなatoi関数が必要かというと、コマンドラインで入力した文字列を、10進法のint型にする事で、入力した文字列→整数として扱う為だ。 下記の例をみてみよう。 例えば0,10という数値をコマンドラインに入力した場合、 "0" → 0 "10" → 1…

write 関数の基礎

char n = 48;write(1, &n ,1); Q.上記何が表示されるか答えよ A. `0`が表示される。 文字をWRITE関数で出力する場合、その文字は ASCII コードに基づいた整数値として表現されます。48はASCII コードで、0に対応している為。

42 Tokyo Picsine 28日目(ピシン)【ついに最終日!!】

ついに来てしまった。 最終日。 泣いても笑っても最終日だ。 それにしても、不思議であり驚異的ですらある。 0と1だけの信号処理をするだけで、素数、文字列、さらには画像まで全てが表せてしまう。 考えてみると不思議で、掘っても掘っても新しい発見があ…

EOF とはなにか?

Q. EOFとは何か? A EOFとは "End of File" の略で、ファイルの終わりを示すマーカーまたは特殊な状態を意味します。これは、ファイルの読み取りを行っているプログラムが、これ以上読み取るデータがないことを認識するために使用されます。 C言語では、read…

C言語の文字列とC++の文字列の違いを説明せよ

Q .C言語の文字列とC++の文字列の違いを説明せよ C言語では文字列をポインタとして渡すことが一般的です。C言語にはC++のような組み込みの文字列データ型は存在せず、代わりに文字の配列として表現されます。文字列はヌル文字('\0')で終端された文字の配列と…

ソケットとは何か?

ソケットとは何か? ソケットはネットワークを介して他のプロセス通信をする為に用いられるファイルである。ソケットはインターネットアドレスと16ビット整数のポートからなり、 アドレス:ポートという表記であらわされる。

42Tokyo Piscine  2日目(ピシン)【テーマを探り当てる】

42の課題はテーマがあり、そのテーマを探り充てることが初心者プログラマーにとっての最初の関門である。テーマを探り当てるためには、その前提知識を理解することから始まる 。 プログラマー経験のある生徒なら、ははーんこれはこの意図をもって作られた…

シェルとは何か?

Q. シェルとは何か? A. シェルとはシステムコールの為の関数です。 システムコールとはカーネルの外の階層に位置し、カーネルを操作するためのインターフェイスシステムコールの一般的な関数ライブラリはC言語で定義されている。 情報を出力したり、入力し…

42 Tokyo Piscine(ピシン)17日目【習うより慣れろ】

Piscine(ピシン)も2週間程過ぎた17日目、自分のプログラムの勉強法に致命的な欠陥を見つけてしまった。学生時代数学が得意だったこともあり、一行一行理解して数学の定理を証明するようにコードを書いていたが、この方法だと一行書くのに人より何倍も時間…

chat GPT の衝撃

Q 将棋や碁を極めたいと思うか? A. 私は思わない。なぜならAIにはかなわないからだ。 この問いは、プログラミング学習においてAIとのかかわり方への踏み絵だとおもう。 今まで推理小説を解くようにプログラミングをしていたのだが、 Chat GPTの登場でプロ…

class と struct の違い

Q.class と struct の違いは何か?A.構造体structはデータのまとまりに名前を付けただけ。 classはコンストラクタを実装できる。 class と struct は、C++において構造体を定義するためのキーワードであり、大きな違いはありません。両者の機能はほぼ同じで…

origin/main とmain とorigin mainの違いは何か?

Q.origin/main とmain とorigin mainの違いは何か? (main は、masterと同じ意味) A. originとは リモートリポジトリのアクセス先に対してGitがデフォルトでつける名前です。 この説明だとイメージしづらいかと思うので、実際にリモートリポジトリのアクセ…

write関数を深掘りする。(STDOUT_FILENO)

Q. write関数の write(STDOUT_FILENO, buf, n) のSTDOUT_FILENOの意味を説明せよ。 A. STDOUT_FILENOとは標準出力のこと unistd.hライブラリで定義されるマクロ。STDOUT_FILENOを1と書いても同じ意味。 凡人: write(STDOUT_FILENO, buf, n) っていうコード…

バブルソートアルゴリズム C

バブルソートは配列をソートするアルゴリズムとしては直感的にわかりやすいアルゴリズムと言える。隣り合った要素を比較して入れ替えるという動作を要素数-1回繰り返すというアルゴリズムです #include <stdio.h> void sort(int a[]){ int i,j; i = 0; while(i < 5) {</stdio.h>…

ポインタ変数 ★の位置

Q. char* test; char *test; 上記はポインタ変数宣言だが同じか? A.同じ 型の後ろにアスタリスク *をつけるか、変数名の前につけても同じ事です。このように宣言した変数は、ある変数のアドレスを記憶することができます。

size_t と unsigned long は同じか?

Q.size_t と unsigned long のメモリサイズは同じか? A.使っているPCの環境によって同じ場合もある。 size_tの大きさは環境依存である。(環境依存とは使っているPCのメモリサイズによるという意味。)strlen の返り値のような「長さ」といった曖昧で環境…

コピーコンストラクタと代入演算子による初期化

Q. コピーコンストラクタと代入の違いを説明せよ。 A.コンストラクタには、コピーコンストラクタと言うコンストラクタがあり、コピーコンストラクタの書式は, クラス名 (const &obj) のように定義する. 引数に同名の参照を指定します。コピーコンストラク…

空文字と空文字列の違いは?

Q. 空文字 '\0' (ヌル文字をシングルクォーテーションではさむ) 空文字列 "" (ダブルクォーテーションのみ)の違いを説明せよ。 A.空文字 ('\0')ASCIIコードの0番目の値(ヌル文字)。空文字列("")文字'\0'が格納されている配列。 凡人: 空文字と空文…

配列のアドレスは?

Qdata[];という配列がある。 data &data[0] 上記2つのアドレスは同じか? A 同じアドレスを指す。 &data[0] == data である つまりdataは配列の先頭のアドレスを表示する為の簡易表現ともいえる。

文字列リテラルは変更できるか?

C++

Q.下記のように文字列リテラルは変更できるか? char *str = "ABC";str[0] = 'D'; A. 文字列は、一旦文字型配列に格納してから処理をするのが無難 char str = "ABC"; strcpy(str, "DEF"); 文字列リテラルは、通常、プログラムの静的メモリ領域に格納され、変…