絞り込み条件を変更する
検索条件を絞り込む
有料ブログの投稿方法はこちら

すべてのカテゴリ

48 件中 1 - 48 件表示
カバー画像

続・c言語入門の記事です。ファイル処理と簡易ゲーム

最初のファイル処理としてテキストファイルが適しています。続けてバイナリファイルです。まず、以下のプログラムを入力してください。#include<stdio.h> int main() {     FILE *fp;     int i,num;     fp=fopen("inputdata.txt","w");     for(i=0;i<5;i++)     {         printf("input data?\n->");         scanf("%d",&num);         fprintf(fp,"%d\n",num);     }     fclose(fp); }DOS画面のプログラムが終了した後にDOS画面でそのプログラムのあるディレクトリ内でinputdata.txtと入力してエンターを押すと入力された値がメモ帳などのtxtファイルの拡張子に対応したアプリが立ち上がるはずです。面白い実験をWINAPIと行うことができます。マウスの座標を動かす実験です。#include<stdio.h> #include<windows.h> #define INPUT 0 #define OUTPUT 1 int main() {     FILE *fp;     int i,num;     POINT PT;     int Mode=OUTPUT;//ココをINPUTかOUTPUTかに書き換える    if(Mode==INPUT)         fp=fopen("mouse.txt","
0
カバー画像

C言語学習のポイント

期末試験も終わり、来週からは春休みになります。(^^)/専門学校でC言語とJava、DB設計などの指導をしています。C言語の期末試験で出題した内容と基本情報技術者試験の関係などについてお話ししたいと思います。C言語といえば、「構造体」「関数」「再帰呼び出し」「ポインタ」がわかっていないといけません。期末試験では、これらをポイントに出題しました。仕様書どおりに、関数を使った構造体のプログラムが作成できるかどうかが合格ラインです。他にも簡単な「再帰呼び出し」のプログラムや「値渡し・参照渡し」についても出題しました。基本情報技術者試験での科目Bでも「構造体」「関数」「再帰呼び出し」の問題が出題されます。値渡しや参照渡しは科目Aの方で出題されるかと思います。C言語の学習をしている方は、構造体のプログラムが作れることを目標に学習していきましょう。(オリジナル問題が欲しい方は差し上げますのでご連絡ください。)特に、「プログラムの勉強をしているけれど、プログラムが作れない。」といった悩みのある人は多いものです。プログラムが作れなければ、他人が作ったプログラムなど読めません。基本情報技術者試験を受験される方は、必ずしもC言語の学習をしていないと合格できない、というものでもありませんが、プログラムのトレースをするためには上記の知識は必須です。構造体や関数を使ったアルゴリズム問題に悩んでいる方は、ココナラでも解説サービスを出品していますので、どうぞご利用ください。#基本情報技術者試験 #科目B #C言語
0
カバー画像

C言語を学ぼう!

みなさん、こんにちは!歌い手 兼 MIX師 兼 動画師 兼 ボカロP(仮) 兼 プログラマー(仮) 兼 …っていくつあるんやっっ!ほぼ全て初心者です。すみません(笑)色々チャレンジしてます、Suq./月詠乃 桜 と申します。とりあえず、ネット上でやったり、趣味でやったりしてることは、・歌い手・Vroidを用いた配信(OBSなど)・MIX師・動画師(主にMV, Short)・ボカロP/作曲→勉強・試作中・プログラマー→HTML/CSS/Javascript/C言語を大学で履修、        C#/Pythonは勉強中、        Javaはインターンで学んだ初学者・Blenderで3Dモデリング(Vtuber, その他)・Unityで共同ゲーム開発→だがほぼ音響担当ってところですね。大学では薬学を学んでいます。C言語は工学部の講義をとらせて頂きました。ので、基礎的な理解はあると思います。Blender・作曲は高校から、そのほかは大学入学から始めました。(現大学2年)とまぁ、忙しない日々を送っていますが、このブログでは、C言語の導入講座?のようなものをしたいと思っています。基礎的なコードの理解、つまずきやすいポインタの理解など、少しずつ更新しながら書いていければと思います。私も初学者な部分もありますが、しっかりデバックや実行して、エラーなどの無いコードを紹介しますので、その辺は安心していただければと思います。C言語から派生したプログラミング言語は沢山あり、工学部でも1年で習うような、基礎的なプログラミング言語がC言語です。近年ではChatGPTなど、プログラムを自動で書いてく
0
カバー画像

最速プログラミング学習

プログラムなんて基本はすべて一緒  何かひとつの言語を学べば、おのずと他の言語も分かる
0
カバー画像

一旦まとめ --いままで書いたブログのリンクなど--

さてさて、今までブログをがんがん書いてきた感じなので、ここいらで一旦まとめて、いままで書いたブログを振り返ります。その上で、最後のほうにもう少し、WEBシステムとはなにか、みたいなとか、ネットワークでの情報流通ってなんだろう、みたいな話も書こうと思います。ブログを書き始める前に考えたことまず、最初に書いたのがこのブログですね。1990年代のWEBというものの始まりから、その後の進展を駆け足で見ながら、今後についても考えていくみたいな内容でした。ここでは、NFTとかWeb3みたいな話も結構肯定的に考えていたんですが、どうも、ブログを書いているうちに、いろいろネガティブになってきた感じです。いずれにせよ、検索エンジンは、今後ますます使い難くなるでしょうから、時代は、超SNSみたいな方向かもしれませんね。システム全体像を決めるCGIについてこちらでは、WEBサーバで動いているCGIについて、結構詳細に書きました。初の有料ブログにさせていただきました。ここでご紹介した、CGIは、実は、ほとんど何もしないもので、ブラウザからのデータを、そのままデータベースサーバに丸投げして、さらに、データベースサーバから返ってきたデータをそのままブラウザに丸送りする、というものです。普通、WordPressとか使った場合は、CGIがかなりキモで、PHPなどを動かしていたりするんですが、それをやると、セキュリティが難しいので、そのあたり、こちらは、丸投げな分セキュリティはしっかり対策できてます。C言語だからこそできる、みたいな。データベースサーバの設計そして、CGIから、データを丸投げされたデータベースサ
0
カバー画像

C言語でCMSを書く その7 ページの追加・更新を簡単にする

WEBページはページの追加と更新が面倒ってことがよくあるわけです。20年以上前は、ホームページはHTMLでベタに書かれていて、ページの追加も更新も、HTMLを変更したり、HTMLファイルを追加して、メインのページからリンク張ったり、っていうことで、それはHTMLを知っている場合は、それでなんでも出来たんですが、ページを追加したり更新したりするたびに、ftpとかでファイルをサーバに転送してアップロードしたりという面倒がことがありました。いや、本当に面倒でしたが、当時ホームページを持つ人は、HTMLも分かっていたし、ftpの使い方も分かっていたし、だから、逆に自由になんでもできました。最近では、多くのWEBページがブログシステムなんかをもっていて、新しいページをどんどん追加もできるし、一度書いたページを更新するのもできるようになっています。でも、たしかに、ページの追加や更新、「できるようになっている」けれど、「簡単にできる」でしょうか?現在WEBサイトのページはほとんどの場合、WordPressを使っています。これを使えば、ページの追加、更新もかなり自由にできるようになります。でも、簡単にできますか?っていうのが問題ですね。SNSだと、アカウントつくって、プロフィールページを設定して、アイコンを設定して、背景画像なども入れて、それから投稿して、投稿に写真を貼り付けたり、動画を貼り付けたり、かなり自由にできます。しかも、スマホからでも簡単にできる。でも、WordPressで管理されたWEBサイト、それほど簡単ではありません。スマホからのページ追加や、ブログの投稿はできないし、外部のペ
0
カバー画像

C言語でCMSを書く その6 HTMLとCSSの生成

さて、前回で最後にしようとおもったけど、まだ続けます。CSSがらみで、いろいろ書き足りないことがあったからです。これは前回のブログです。っていうか、CSSについてはほとんど触れてなかったし。ということで、HOTPortでの、CSS生成と、HTMLとのからんだところなどをここではしっかりと書いていきます。HTMLとCSSを組み合わせたいろいろなテクニックについては、ググったりすると、結構出て来ることが多いです。で、そういうテクニックを見ていると、ときに、「ここまでやらんでもできるでぇ」みたいなのも出くわします。iOSのブラウザで背景画像が固定できない、っていう点についても、かなり面倒な解決法が書かれていることもありましたし、あと、メニューを左右のサイドに固定する方法とかも、むちゃくちゃ面倒な方法が書いてあったりしました。で、そういうのを参考にしつつ、一番単純にできそうなものを、利用しています。JavaScriptは使っていません。タブの切り替えも、通常の方法ではなく、ページ遷移を使っています。だから若干反応が遅いこともあります。ただ、確実なのと、セキュリティ的に万全です。そのあたりで、最後に書いたように、打倒!WordPressなのでした。CSSはなんかややっこしいなんか、CSSって面倒なんです。大昔、CSSがないころは、HTMLの中にスタイルに相当するレイアウトとかがいろいろ簡単に書き込めて、それで、それなりになんとかなっていたんですが、いまは、ほとんどのWEBページが、パソコンとスマホの両方に対応する必要があるんで、そうなると、HTMLの中にスタイルを書き込んでしまうと、パソ
0
カバー画像

C言語でCMSを書く その5 multipart/form-data の処理

ブラウザから送られて来るデータの処理さて、いよいよ 「C言語でCMSを書く」の最後になりますね。前回のブログでは、検索エンジンについて、その利用法とかいろいろかきまして、そこで、multipart/form-dataの処理のための、binstr()という関数をちょっとご紹介しました。これは、strstr() の拡張版で、strstr()では、文字列に対して、検索するものでしたが、binstr() は、バイナリデータの中で特定のパターンを検索することのできるものでした。今回は、それを使って、multipart/form-dataを処理する部分についてご紹介です。一応、有料ブログなんですけれど、有料部分には、ちょっと長いプログラムを書いておくだけですので、必要な内容は、無料で読めるようになっています。HTTPのヘッダ部分の処理まず、ブラウザが、WEBサーバにアクセスする場合、ほとんどは、ページを見るためなので、ブラウザから送られてくるのは、HTTPのヘッダと呼ばれる部分だけです。で、このヘッダは、WEBサーバのhttpdというシステムが、勝手に環境変数に変換して、CGIに送ります。で、CGIは、それを展開して、データベースサーバHOTPortに丸投げします。それを受け取るHOTPortは、環境変数として受け取り、threadManager* ThMPtr の中にいれます。----ここから----typedef struct           threadManager{//メモリーマネージャ  memoryManager         MM;//Envsの中に、CGIから受け取
0 500円
カバー画像

C言語でCMSを書く その4 サーチエンジンとハッシュタグ

WEBサイト内サーチエンジンWEBサイトの中でも、ページ数が多くなってくれば、サーチエンジンでページを検索するようになるのは、まあ、当然です。とくに、NFTプラットフォームでは、多数のユーザがアカウントを持って行て、かつそのユーザが自分のブログとかコンテンツとかをどんどん投稿することになるから、ユーザ検索ができて、かつユーザごとにブログやコンテンツを検索できて、さらに、サーバ内にある全てのブログやコンテンツを一挙に検索できるような仕組みも必要です。ところが、ブログやコンテンツといったもののテキストファイルを一挙に検索とかなると、それはそれで結構大変なので、一番良いのは、ブログやコンテンツのタイトル(表題)を検索対象にする、というもの。これだと、せいぜい数百文字の程度だから、多数のブログ、コンテンツからの検索もかなり高速で行けるわけです。逆にそうすると、ブログやコンテンツの文章内に、検索ワードをハッシュタグとして潜ませておけば、そこをクリックしたときに、そのハッシュタグを表題に含むブログやコンテンツの一覧を出してくれたりします。また、ブログやコンテンツの題名にハッシュタグがいくつか入っているようにすると、同じハッシュタグが入っているブログやコンテンツが関連ブログ、みたいな形でスレッドを形成するようにもできます。実は、 "#" の後ろに適当な長さの文字列を書いて、空白か改行までを一つのハッシュタグと見做す、みたいなのは実に理にかなっているもので、これで検索キーワードが明確に指定できるし、それに表題にたくさんのハッシュタグをいれておけば、それを全部検索ワードに指定できるので、ブログや
0
カバー画像

C言語でCMSを書く その3 HTMLの生成(マクロ展開とか)

マクロ展開機能はとっても重要さて、前回のブログでは、CMSで必要なデータ構造体 element型について、かなり突っ込んで書きました。今回は、element型に入っているデータからHTMLを生成して、ブラウザに返すところについて書いていきます。で、そのキモとなるのは、マクロ展開です。マクロ展開というのは、生成されるHTMLのテキストの中に、マクロ定義された文字列があったら、その文字列を定義されている別の文字列に変更する、っていう話です。AWExion HOTPortは、一応、分散サーバ型のNFTプラットフォームということになっているので、同じC言語のソースコードで動くサーバが多数あるわけですね。そうすると、サーバのURLなどをソースコードに埋め込んでしまうと、他のサーバで利用するときには、いちいちそこを書き換えたりする、みたいな話も出て来るから、そこは、生成されるHTMLの中で、たとえば、ThisHostと書いておいて、その部分を、実際のサーバのURLに変換してくれたりすれば良いわけです。書き方は簡単です。生成されるHTMLの中で、${ThisHost} という部分を見つけたら、その ${ThisHost}というのを、別の、たとえば、Https://coconala.com (頭のHは本当は小文字です)に変換してくれたりすれば良い、ということになりますね。ほかに、こういうプラットフォームでは、ログインして、アクセスしてきたユーザのIDやセッションID(ログイン中に付加されるID)をあちこちに埋め込まないといけませんから、UserIdとかSessionIdとかも、マクロ定義してお
0
カバー画像

C言語でCMSを書く その2 CMSのための構造体

HTMLのもととなる構造体 element 型さて、前回のブログは、CMSについてHTMLの重大な問題について、ほぼ愚痴としてぐちぐち書きました。今回は、もっともっと具体的な話になります。HTMLをベタ書きしてWEBページを造ることはほとんどなくなり、HTMLというのは、いわば裏にかくれたWEB用ページ記述言語になっています。しかも、WEBページを生成する CMS 自身がHTMLを生成することもなくなりつつあり、HTMLを生成しているのは、WEBページ内に埋め込まれた、あるいはWEBページからリンクされたJavaScriptのスクリプトが、なんらかのページの元となるデータ(構造化されたコンテンツとかいうものかな)から、HTMLを生成する、という形がほとんどです。最初のブログ↓にも書きましたが、WEBサイトというのは、多層構造になっています。まず、WEBサイトのいろいろなページの元になるデータがデータベースサーバに入っています。そして、ブラウザからのリクエストでCGIが、リクエストされたページの元になるデータをデータベースに問い合わせて、そしてデータベース中のページの元からHTMLページを作り出すわけですね。ブラウザからのリクエストの中には、データベースの内容を書き換えることを要求するものもあって、その場合は、CGIがデータベースの内容の更新をする問い合わせをデータベースに対して行う、というような構造です。ということで、データベースの中には、WEBページの元になるデータを表現する仕組みが必要です。そのWEBページの元になるデータとはどういう構造をもったデータ構造か、というのが今回
0
カバー画像

C言語でCMSを書く その1 HTMLの最大の問題点

CMSの話の前にさて、前回のブログ↓は、とても気合をいれて長いものになってしまったので、内容も濃いし、ちょっと今回はリラックスして、短めに行きます。まずCMSとは、Content Management System の略です。WEBページのコンテンツ、つまり、文書とか、画像、動画、音声、添付のデータファイルとかを管理する仕組みのことです。で、WEBページはまず基本的にHTMLで書かれているわけで、CMSがやることは、ページの内容(content)を管理して、その内容からHTMLファイルを生成して、ブラウザに送り返すことをします。もちろん、CMSなんかなくても、HTMLでベタに書いておけば良いのですが、そうなると、内容を更新するときには、いちいちHTMLファイルを変更して、それをWEB サーバにアップロードする必要があって、ブラウザから簡単に内容を更新とか、画像を追加とかをすることはできません。だから、ページの更新とか内容の追加とか、そういうことを簡単にできるようにするには、CMSが必要だということになります。つまり、CGIを使ってページをアクセスできるようにして、ブラウザからのリクエストを処理して、ページをの内容を書き換えたりできないと行けないわけです。そのあたりのことは、最初のブログに書きました。で、CMSは、実体としては、CGI + データベースサーバの形をとっていて、通常は、PHPなどで書かれていて、PHPがブラウザからのリクエストを読み込み、そしてデータベースにソケット通信でアクセスして、データベースの内容を取り出したり、あるいはデータベースの内容を更新したりして、その
0
カバー画像

C言語で多次元拡張ブロックチェーン chainmail

ブロックチェーンとはなにかさて、ココナラブログ、初回のものからはじめて、その6まで来ました。前回のその5では、メモリー管理についてお話しました。今回は、NFTでもっとも重要なブロックチェーンについてのお話です。ただし、ここでご紹介するのは、仮想通貨(暗号資産)などで使われているブロックチェーンではありません。むしろ、NFTに特化した多次元拡張ブロックチェーンで、名前は、chainmail (鎖かたびら)です。そこで、まずは、ブロックチェーンとはなにか、ということを、さらっとおさらいしておきます。まずは、ブロックチェーンが最初に脚光を浴びた仮想通貨ビットコイン(Bitcoin)のお話から。簡単にいうと、通貨(お金)は、誰がどれだけ持っているか、ということが重要です。Aさんが10ビットコイン持っている、Bさんが50ビットコイン持っている、という話です。ですから、BさんがAさんに10ビットコイン渡し(送金し)たら、Aさんは20ビットコイン、Bさんは40ビットコインになりますね。だから、参加している人みんなの相互の送金情報(たとえば、BさんがAさんに10ビットコイン渡したという情報)を記録しておけば、だれがビットコインをどれだけ持っているか常に分かるわけですね。送金情報は送金が行われるごとに、溜まっていくので、それが一定の量溜まったら、それを一つのブロック(送金情報の塊)にして、鍵をかけて中身が改竄されないようにして、前のブロックとしっかり繋ぐ、ってことです。で、このブロックの繋がったものがブロックチェーンと呼ばれるもので、それだけなんです。で、ブロックに鍵をかけるときに、重要な整数を
0
カバー画像

C言語によるメモリー管理

マルチスレッドデータベースサーバで必要なメモリー管理本ブログも5回目となりました。前回のブログでは、マルチスレッドデータベースサーバでCGIと通信するソケットプログラミングについて詳細を書いておきました。今回は、マルチスレッドデータベースサーバで重要なメモリー管理についてお話します。この話は、前々回のブログの内容とかなり関連しますので、一応リンクしておきます。C言語でメモリー領域は、1)関数内で宣言する固定的なメモリー領域のもの(スタック上に確保される)と、2)malloc()などの関数で、動的に確保したメモリー領域があります。1の場合はスタック上に確保されたものだから、そのメモリー領域は、その関数内と、その関数から呼び出される関数の中だけで有効です。そして、関数からreturnで抜けると、そのメモリー領域はスタックから解放されて、以降、参照できなくなります。いや参照してもよいですが、内容はどうなっているか不明です。2の場合は、ヒープ領域にメモリが確保されていますから、プログラム終了までメモリー領域は解放されず、もし、解放する必要があるときは、free()で明示的に解放する必要があります。WEBサーバでCGIは、httpdがリクエストを受けた段階で立ち上げられ、終ると終了しますので、CGIの中でmallocなどによるメモリー確保をしても、それは終了とともに解放されます。しかし、マルチスレッドのデータベースサーバの場合は、スレッド内で確保したメモリー領域は、スレッドが終了してもサーバ自体が動いている間は、解放されません。ですから、スレッドが終了するときに、明示的にメモリーを解放す
0
カバー画像

C言語でネットワークプログラミング --ソケット通信のワナ--

ソケット通信の始め方前回のブログでは、C言語で凄いデータベースサーバを書くという話でした。このデータベースサーバは、CGIとの間で、ソケット通信をします。したがって、CGIは、ソケット通信のクライアントで、データベースサーバは、ソケット通信のサーバになります。CGIは、WEBサーバのhttpdというデーモンプログラムからWEBへのリクエストが来るたびに立ち上げられ、ソケットのクライアントとして、データベースサーバに接続し、一方データベースサーバは、デーモンとして立ち上げておいて、CGIからのソケット通信のリクエストが来るのをlisten()で待っていて、そしてリクエストがきたら、新しいスレッドをpthread_create()で立ち上げて、そこに引渡しを行う、という話については、以下のブログで述べました。このブログの中で、CGIは、ブラウザからのデータ(標準入力)をサーバに渡す際に、client_socket()という関数を使っていますが、これが、クライアント側から、サーバに対してソケット通信をするリクエストを出す関数です。この関数で、クライアント(CGI)は、サーバとの通信のためのファイルデスクリプタを取得し、以降は、read(), write()(あるいは、recv(), send())で、サーバとのメッセージのやり取りができます。ファイルデスクリプタは入力、出力両方とも行うことができます。このあたりの基本的なことは、以下の教科書を参考にしました。小俣光之・種田元樹著「Linux ネットワークプログラミングバイブル」秀和システムソケット通信のクライアント側のプログラミングま
0 500円
カバー画像

C言語でデータベースサーバを書く --設計編--

凄いデータベースサーバを書くさて、このブログのシリーズ全体でNFTマーケットのプラットフォームをC言語でスクラッチから書いてしまう、という企画なので、ここで書くのも、すごいデータベースサーバです。こちらの最初のブログでは、WEBとは何か、ということで、概論を書きましたが、そこでWEBサイトにはデータベースシステムが不可欠で、一般的にはSQLが使われていて、で、データベースをソケットで叩いてWEBページを作り出すのが、CGIで、それは普通はPHPとかrubyとかperlなどのスクリプト言語で書かれている、という話をしました。で、このブログでは、弊社がスクラッチから開発したHOTPortという(広い意味での)NFTマーケットのプラットフォームでは、CGIは、ほとんど何もせず、ブラウザからのリクエストや送られてきたデータを、データベースサーバに丸投げして、データベースサーバから返ってきたデータを、そのままブラウザに丸投げする、まあ、かなりズボラなCGIについてご紹介しましたね。となると、そのズボラなCGIが叩くデータベースサーバは、本来ならCGIがやるようなことを全部やるような凄いデータベースサーバになります。具体的には、ブラウザからCGI経由で送られてきたリクエストを解析する。ついでブラウザからCGI経由で送られてきたデータを解析する。そして、そのリクエストやデータからWEBページを作ってそれをCGI経由でブラウザに送り返すということです。ということは、まず、データベースとはいうけれど、これはCMS(コンテンツ管理システム)を含むし、また、NFTなんで、ブロックチェーンの処理なども
0
カバー画像

CGIをC言語で書く

CGIとはなにかさて、昨今のWEB制作ではCGIという言葉もあまり使われなくなってきていますが、基本的にWEB制作で一番重要なのは、CGIです。なぜなら、WEBサーバが、ブラウザからアクセスされたときに、そのリクエストを処理して、ブラウザに表示させるページを生成するのがCGIプログラムだからです。固定的なhtmlファイルだけのWEBページなら、htmlファイルと、そこから表示する画像、動画などのファイルを、サーバの所定のディレクトリ(apacheのhttpdなら、/var/www/html)に入れておけば良いのですが、これだと、ページのアクセスカウンタすら設置できません。そのあたりの話は、下に示す前回のブログで書いた通りです。それでは、具体的にCGIは何をしているのでしょうか?インターネット上のWEBページにはURLがあり、そのURLには、どのWEBサーバの、どのWEBページにアクセスするか、が書かれています。そこで、ブラウザが、特定のWEBページをアクセスするときは、そのWEBページのURLにあるWEBサーバに対して、URL内にある特定のWEBページを指定します。たとえば、URLが "https://coconala.com/blogs/3431352/222524" の場合、サーバ名は、"https://coconala.com" で、その中の "/blogs/3431352/222524" というWEBページをあらわしています。この"/blogs/3431352/222524" というのが通常のHTMLで書かれたファイルであれば、そのファイルの内容が直接WEBサーバから、
0 500円
カバー画像

これでいいの?日本のプログラミング教育 💻💦

こんにちは(hello world この業界ではよく出てくる挨拶の呪文)地味に疑問系のテーマではじまりましたが、本記事がsoraCodeの初記事となります💡まさかいつもお世話になっているcoconalaさんでブログ機能が実装されているなんてと、かなり遅ればせながらですが、個人的な気付きなどをゆるく発信していけたらなと考えております。ということで方向性としては、何にしようかなと思っていたのですが、スキルマーケットということもあり、マイペースなテックブログとして考えています😄さて、2020年に小学校などの指導学習領域がずいぶんと刷新され、ついに日本でもプログラミング教育の義務化がスタートしました👏背景にはIT人材が不足しているなどの理由があるそうですね。ところで、あれから2年ほどが経ったわけですが、みなさんのお子さんや近所の子どもたちの感想はいかがでしょうか?個人的に小学校の先生たちもそろそろ悲鳴をあげているころなのかなとつくづく思うところであります。というのもいきなり「これからプログラミングを教えてね〜」と言われましても、先生たちは、プロのエンジニアじゃあるまいし、無理難題ですよね笑とはいえ、「Scratch」というビジュアルプログラミングといって、論理的思考を鍛えたりする第一歩として、ブロックを積み木のように組み立てて、順序制御、反復制御、分岐処理などのプログラミングの基礎を学ぶための学習教材を使って、「学び始めたよ〜」という声もちらほら聞きます。「楽しいよ〜」といった意見を聞く反面、「これをやっても結局なにができるようになるの?」とエンジニアの仕事がイメージできず、モチベーシ
0
カバー画像

初投稿!けんたの自己紹介です^^

はじめまして、けんたです。ココナラでサービスを出品したばかりで、まだランクも付いていない初心者ですが、ブログを通じて私のことを知ってもらえたら嬉しいなと思って書き始めてみました。ココナラのユーザー名は「けんたのC言語教室」にしました。料理上手な奥さんと結婚して、もう高1になった勉強熱心な娘を授かり、毎日しょうもないことで頬っぺたが痛くなるくらい笑って過ごしている幸せ者です。カバー画像は、娘が幼稚園の頃に書いてくれた似顔絵です^^そんな私は、SE(システムエンジニア)として会社勤めをしています。SEなのですが、プログラミングもするので、PG(プログラマー)も兼任しています。得意なプログラミング言語はC言語とC++なのですが、中でもC言語は高校生の頃から勉強しているので、一番得意なプログラミング言語ですね。C言語を勉強したい方のお手伝いが出来たら良いなと思い、ココナラでサービスの出品をしてみました。ココナラのプロフィールだけでは伝えきれないことを、ブログに書いていけたらと思っています。この記事を読んで頂きまして、ありがとうございました!また別の記事でお会いできる日を楽しみにしています^^
0
カバー画像

C言語プログラミング 10/3

Twitterで見かけた、下記のような出力をするプログラムを書いてみました。#include <stdio.h> int main(void){     int i,j,k;     for(i=0;i<6;i++){         for(j=0;j<5-i;j++){ //最後の行はスペース不要なので6-1             printf(" ");         }         for(k=0;k<i+1;k++){ //最低1個は*出すので+1             printf("*");         }         printf("  ");         for(k=0;k<i+1;k++){ //この辺、何か上手い処理したい・・・             printf("*");         }         for(j=0;j<5-i;j++){             printf(" ");         }         printf("\n");     } } 一応、行後半にもスペースを入れています。何か泥臭い書き方になってしまった感じですね。
0
カバー画像

C言語プログラミング 9/19

今回は、昨日のgets置き換え関数を使いながらトリボナッチ数列(直前3項の和で生成される数列)のプログラムを実装しました。//tribonacci.h#ifndef _TRIBONACCI_H_ #define _TRIBONACCI_H_ //プロトタイプ宣言 long long int tri_calc(int, long long int[]); long long int tri(int); #endif // _TRIBONACCI_H//tribonacci.c#include <stdio.h> #include <stdlib.h> #include "tribonacci.h" #define none -1 long long int tri_calc(int n, long long int T[]){     if( T[n] != none ){         //T[n]は計算済み     }     else if( (n == 0) || (n == 1) ){         T[n] = 0;     }     else if ( n == 2 ){         T[n] = 1;     }     else{         T[n] = tri_calc(n-1,T) + tri_calc(n-2,T) + tri_calc(n-3,T);     }     return T[n]; } long long int tri(int N){     long long int *T,ret;     in
0
カバー画像

C言語プログラミング 9/18

gets関数の置き換え関数を作ってモジュール化してみました。遊びなので、ソースコードの保証はしません。// getsrpl.h#ifndef _GETSRPL_H_ #define _GETSRPL_H_ //プロトタイプ宣言 char *getsrpl(char *str, int len); #endif //_GETSRPL_H//getsrpl.c#include <stdio.h> #include <stdlib.h> #include <string.h> #include "getsrpl.h" char *getsrpl(char *str, int len){     int n;     int c;     //読み取りエラーの発生時や、配列に1文字も読み取らなかった場合     if( fgets(str, len, stdin) == NULL ){         return NULL;     }     n = strlen(str);     if( str[n-1] == '\n' ){ //改行文字が余計に格納されている場合         str[n-1] = '\0';     }     else{ //オーバーフローした場合読み捨てる         while(1){             c = getchar();             if(c == '\n'){                 break;             }             else
0
カバー画像

C言語プログラミング 9/4

今日は久々にrand関数を使って遊んでみました。1から入力した整数までの範囲でランダムに値を返すものです。#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void){     int ret;     char buf[256];     int value;     int i = 0;     srand( (unsigned int)time(NULL) ); //時間を種にする     while(1){         i++;         printf("random number from 1 to :");         gets(buf);         ret = sscanf(buf, "%d", &value);         if( ret == 0 ){ //ret:変換出来た数             printf("fin...\n");             break; //数字以外で終了         }         else if( 1 > value ){ //負数は認めない             printf("invalid value.\n");         }         else{             printf("%2d: %d\n", i, ( 1 + rand() % value ) ) ;         }     }
0
カバー画像

C言語プログラミング 8/29

関数ポインタを使ったプログラミングをあまりやってこなかったので、少し遊んでいました。(本当は参照リンクがあるので載せたかったのですがダメなんですね・・・)(httpのhを省くという古の手法は何となく怖いのでやめときます)#include <stdio.h> void start(){     printf("Start.\n"); } void save(){     printf("Save.\n"); } void end(){     printf("End.\n"); } void (*menu[3])() = {     start,save,end }; int main(){     int i;     char buf[256];     while(1){         i = -1; //数以外が来たら取り込み失敗するので初期値0,1,2以外設定         printf("input:");        gets(buf);         sscanf(buf, "%d", &i); //整数じゃなく小数が来たら・・・        if( 0 <= i && i < 3){             menu[i]();         }         if( i == 2 ){             break;         }     }     return 0; } 私が参照したプログラムはgetchar関数を使ったり、end関数でexitを入れたりしてたけど、遊びです。(20
0
カバー画像

続・HTMLの基礎(Cも出てきます)

前の内容の紹介です。続きを書きます。001.画像の挿入<IMG SRC="imagefilename.jpg">002.ハイパーリンク<A HREF="link.html">Google Hyper LINK!!</A>link.htmlはgoogleのURLを都合上載せられなかったので変えた文字列です。003.画像のハイパーリンク<A HREF="link.html"><IMG  SRC="imagefilename.jpg" WIDTH="32" HEIGHT="32" ALT="imagefilename.jpgです。"></A>004.水平線<HR>005.テーブル<TABLE bgcolor=#fff000 border="2" width="300" height="150"><TR><TD>A</TD><TD>B</TD><TD>C</TD><TR><TD>D</TD><TD>E</TD><TD>F</TD></TABLE>006.太字、斜め字<B></B><I></I>007.中央揃え<CENTER>中央にそろいます</CENTER>ex.001黒い画面DOS画面などのプログラム実行中のような表現方法<TABLE 
0
カバー画像

趣味を活かす方法を探してココナラに登録しました。

ご覧いただきありがとうございます。自己紹介と、ココナラに登録した経緯についてお話します。私は工場に勤務しています。月曜日~金曜日は仕事および通勤のため、自由に使える時間が1日あたり2時間~3時間くらいしかありません。土日はほとんどお休みで、1年に数日土曜日に出勤日があるくらいです。大学在学時は機械工学科に所属していました。数学、物理、工学など様々な授業や実験を経験しました。そのなかに、当時から2022年現在まで細く長く続く趣味になるものが有りました。C言語を使用する計算処理です。実験結果を数値で得て、それをレポートにまとめるためにいろいろな計算をさせるのですが、電卓やエクセルよりも自由度の高い計算が必要になるときが有るから、C言語というプログラミング言語を使って任意の計算処理をさせる方法を学ぼう、という演習授業でした。そのテスト前勉強をしているときに、思ったのです。授業ではこの形の数式を実装して計算させたけど、自分の好きな数式を実装すれば、私はこのコンピュータにその数式で計算させれるのではないか、と。やってみました。初めに思いついたのは、実数要素の行列どうしの積を計算させることでした。授業のときの真似をして、数式を打ち込みました。できたのです。参考書の例題を打ち込んでみると、私が打ち込んだ数式に従ってコンピュータが計算し、正解を出してくれました。何度も計算ミスをしたこの計算、実装さえきちんとさせてしまえばもう計算ミスを起こすことはなくなるのだ! しかも手計算よりも圧倒的に早い! これがコンピュータの使い方なのかと、しみじみとしました。それ以来、数式の種類を増やし、扱う数の範囲を
0
カバー画像

C言語課題17

課題二つの数字を入力して商と余りを表示せよ。ただし、余りがない時は商だけを表示すること。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h> int main(void) {     int val1;     int val2;     int shou;     int amari;     printf("1つ目の数字を入力して下さい\r\n> ");     scanf("%d", &val1);     printf("2つ目の数字を入力して下さい\r\n> ");     scanf("%d", &val2);     if (val2 == 0) {         printf("2つ目の数字が0なので演算できません\r\n");     }     else {         shou = val1 / val2;         amari = val1 % val2;     }     printf("商は%d", shou);     if (amari != 0) {         printf("、余りは%d", amari);     }     printf("\r\n"); } 解説ポイントは、、、どこですかねー0除算を回避するところとあとは、出力するところであえて改行を最後に持ってきたとこでしょうか。
0
カバー画像

C言語課題16

課題入力した数字が4の倍数かどうか表示せよ。ゼロの場合は"ゼロ"と表示する。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int val;    printf("数字を入力して下さい\r\n> ");    scanf("%d", &val);    if (val == 0) {        printf("ゼロ\r\n");    }    else if ((val % 4) == 0) {        printf("4の倍数である\r\n");    }    else {        printf("4の倍数ではない\r\n");    }}解説% という演算子を知っているかどうかが鍵かと思います。% を知らない場合は、2つの方法があると思います。1) 4で減算し続けて、0になったら4の倍数。1〜3になったら4の倍数ではない。2)4で割って、その値に4をかけて、元の値から引いて 0 になったら4の倍数。1〜3になったら4の倍数ではない。上の二つのコードを書いてみても楽しいかもしれません。プログラミングの勉強としてはいいかもです。そういう課題もありかですかね。"%"を使わすに、、、みたいな課題。
0
カバー画像

C言語課題15 part2

課題数値を入力し、その数値から0までのカウントダウンを順番に表示せよ。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int val;    printf("数字を入力して下さい\r\n> ");    scanf("%d", &val);    val++;    while (val) {        printf("%d\r\n", --val);    }}解説少し違う感じでも買いてみました。ポイントは、--val ですかね。前回のものは val--でした。違いは、--val は先にデクリメントしてval-- は後からデクリメントする。ということです。どういうことかというとprintf("%d\r\n", --val);というのは、分解するとprintf("%d\r\n", --val);val -= 1;という文になります。これを考慮に入れて一度"val++;"しました。ちなみにprintf("%d\r\n", val--);はval -= 1;printf("%d\r\n", val);という文になります。
0
カバー画像

C言語課題15

課題数値を入力し、その数値から0までのカウントダウンを順番に表示せよ。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int val;    printf("数字を入力して下さい\r\n> ");    scanf("%d", &val);    while (val > 0) {        printf("%d\r\n", val--);    }    printf("%d\r\n", val);}解説最も単純で無骨なコード。といった感じでしょうか。最後、0をどう出力するかというところで色々なコードが書けそうだと個人的には思います。いちばん易しいコードはこれだろうなぁと思って書きました。
0
カバー画像

C言語課題14

課題1〜100までの数字を表示せよ。表示する前に1〜9の数字を入力し、入力された数字の倍数か入力された数字を表示するときはアホになれ。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int a;    printf("1~9の数字を入力して下さい\r\n> ");    scanf("%d", &a);    for (int16_t i=0; i<=100; i++) {        if (ia == 0) {            printf("ポー\r\n");        }        else {            printf("%d\r\n", i);        }    }}解説今回のポイントは、アホになる。と言うところですかね。イメージはコウメ太夫です。もっと凝った作りにすることもできます。コウメ太夫より世界のナベアツ的に作ることも可能です。そうすると自作関数が便利かと思います。次は 自作関数でアホになる。ってのもありですかね。
0
カバー画像

C言語課題13

課題数値を入力し、入力された文字までを1から順番に表示せよ回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int a;    printf("数字を入力して下さい\r\n> ");    scanf("%d", &a);    for (int16_t i=1; i<=a; i++) {        printf("%d\r\n", i);    }}解説今回のポイントはfor () の中です。2つのポイントがあります。一つは、i=1で初期化することで、iを1から(0以外で)始めることができると言うこと。そしてもう一つは、1<=a で「未満」ではなく「以下」を表すことができること。このふたつをうまく使えれば課題解決は容易だったと思います。
0
カバー画像

素因数分解のプログラムをC言語で書いてみた

はじめまして。sqrt27です。「ルートさん」や「ルートくん」などと呼んで頂いて構いません。本名を知っている方に関してはここでの本名呼びを禁止しますのでよろしくお願いします。まずは私のいちステータスであるC言語プログラミングのことを書こうと思い、この題で書くことを決めました。ということで早速ですが、プログラムのソースコードをご覧下さい。ちなみにおおまかな解説はプログラム内コメントに書いています。なおプログラムは私自身の解釈によるものであり、課題等に役立つものとは限りませんのでご了承ください。#include<stdio.h> //標準入出力に必要#include<math.h> //平方根を使用するので欠かせないint main(void){    unsigned long long int num=2,division;    //num: 素因数分解対象(処理の都合上2に初期化する)    //division:割る数        printf("これは、素因数分解の演算を行うプログラムです.\nプログラムを停止するには,1以下の数を入力して下さい.\n");    while(num>1){        printf("\n入力:");        scanf("%llu",&num); //入力モード        printf("出力:%llu=",num); //素因数分解対象をまず表示        division=2; //割る数を最小の素数に設定する   
0
カバー画像

C言語課題12 パート2

課題数値を繰り返して入力し、0が入力されたら入力を止め、平均値を表示せよ。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int a;    int total;    int count;    total = 0;    count = 0;    do {        printf("数字を入力して下さい\r\n> ");        scanf("%d", &a);        total += a;        count++;    } while( a!=0 );    count--;    if (count == 0) {        printf("データがありません\r\n");    }    else {        printf("平均は、%d\r\n", total / count);    }}解説課題2の別バージョンの回答例です。do-while文を使ってみました。これで if(a==0)を書かなくて良くなります。つまり判定が一つ減ります。ただし、do-whileを抜けた後に count をディクリメントする必要が出てきます。これを美しいと思うか醜いと思うかは人それぞれですかね。
0
カバー画像

C言語課題12

課題数値を繰り返して入力し、0が入力されたら入力を止め、平均値を表示せよ。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ #include <stdio.h>int main(void){    int a;    int total;    int count;    total = 0;    count = 0;    while (1) {        printf("数字を入力して下さい\r\n> ");        scanf("%d", &a);        if (a == 0) {            if (count == 0) {                printf("データがありません\r\n");            }            else {                printf("平均は、%d\r\n", total / count);            }            break;        }        else {            total += a;            count++;        }    }}解説今回は、変数名に意味のある名前を使用しました。なんかそれっぽいコードになったんじゃないかと思います。今回は一気に難易度上がったかもです。このコードで目標は達成できると思います。他にもいいコードがあれば紹介してください。
0
カバー画像

C言語課題11

課題入力した数字が素数かどうか表示せよ。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int a;    int b;    printf("数字を入力して下さい\r\n> ");    scanf("%d", &a);    if (a % 2 == 0) {        // 偶数なら素数ではない        printf("素数ではない\r\n");    }    else {        // 半分以下の数のどの数で割っても余りが出る場合はそれすなわち素数        for (b = a/2; b > 1; b--) {            if (a%b == 0) {                printf("素数ではない\r\n");                break;            }        }        if (b == 1) {            printf("これは素数\r\n");        }    }}解説少し迷った。他にもっといい感じのコードがあればぜひ教えて頂きたいです。このコードで目標は達成できると思います。
0
カバー画像

C言語課題10

課題 二つの数字を入力して、一つ目の数字が二つ目の数字より大きいか小さいか同じか表示せよ。同じ時は「同じやん。」と表示せよ。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int a;    int b;    printf("1つ目の数字を入力して下さい\r\n> ");    scanf("%d", &a);    printf("2つ目の数字を入力して下さい\r\n> ");    scanf("%d", &b);    if (a > b) {        printf("一つ目の方が大きいです。\r\n");    }    else if (b > a) {        printf("二つ目の方が大きいです。\r\n");    }    else {        printf("同じやん。\r\n");    }}解説今回は、入力を受け付けて比較して表示するという単純な処理だと思います。結構基本のキの部類だと思うので少し悩んだなぁという人は翌日にでもまたこの課題にチャレンジしてもらいたいと思います。
0
カバー画像

C言語課題9

課題入力した数字が奇数か偶数か表示せよ。ゼロの場合は"ゼロ"と表示する。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int a;    int b;    printf("数字を入力して下さい\r\n> ");    scanf("%d", &a);    if (a == 0) {        printf("ゼロです\r\n");    }    else if (a % 2 == 0) {        printf("偶数です\r\n");    }    else {        printf("奇数です\r\n");    }}解説数値を受け取って判定して出力する。人によっては1ビット目をチェックして偶数か奇数かわかるし!なんていうひともいるでしょう。そんなかたにはこう伝えたいです。あなたは正しい。そうですに。1ビット目をみてチェックしてもいいです。2進数がきちんと理解できていればそういう見方もできますがまずは2で割ったあまりをチェックで十分だと思います。やりたいことできてますしね。
0
カバー画像

C言語課題8

課題二つの数字を入力して割り算の余りを表示せよ回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int a;    printf("数字を入力して下さい\r\n> ");    scanf("%d", &a);    if (a == 0) {        printf("ゼロです\r\n");    }    else if (a < 0) {        printf("負の整数です\r\n");    }    else {        printf("正の整数です\r\n");    }}解説数値を受け取って判定して出力する。ポイントは if-else ですかね。if-else は他にも書き方はあります。色々試してみて下さい。
0
カバー画像

C言語課題7

課題二つの数字を入力して割り算の余りを表示せよ回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int a;    int b;    printf("数字を入力して下さい\r\n> ");    scanf("%d", &a);    printf("数字を入力して下さい\r\n> ");    scanf("%d", &b);    printf("%d %% %d = %d\r\n", a, b, a%b);}解説割り算の余りは"%"です。printfで"%"を出力するには"%%"と記述します。
0
カバー画像

C言語課題5

課題キーボードから入力された2つの10進数を大小比較し,大きい方の整数をディスプレイに表示するプログラムを作成せよ回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int a, b;    int big;    printf("1つ目の数字\r\n> ");    scanf("%d", &a);    printf("2つ目の数字\r\n> ");    scanf("%d", &b);    if (a > b) {         big = a;    }    else {         big = b;    }    printf("大きいのは、%d\r\n", big);}解説bigという変数を準備するかどうかは意見が別れるとこかもしれませんが今回は、bigという変数を準備して結果を表示しました。
0
カバー画像

C言語課題4

課題xとyの値(実数値)をキーボードから入力し,四則演算(和、差、積、除算)をして、それぞれの結果を表示(符号付き10進数の実数)するプログラムを作成せよ自分の名前(ローマ字)をキーボードから入力し,その名前を出力するプログラムを作成せよ回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int x,y;    printf("x = ");    scanf("%d", &x);    printf("y = ");    scanf("%d", &y);    printf("x + y = %d\r\n", x + y);    printf("x - y = %d\r\n", x - y);    printf("x * y = %d\r\n", x * y);    printf("x / y = %d\r\n", x / y);}
0
カバー画像

中学生にプログラミング指導をしました。

昨日と今日で、それぞれ1時間ずつプログラミング初心者の中学3年生にC言語での開発指導をしました。いつも社会人や大学生などを対象に指導してきましたので、中学生は初めてでしたが、楽しんでいただけました。ちなみに2時間で、・四則演算のプログラム・生年月日(西暦8桁)を年・月・日に分割するプログラム。・パスワードチェックのプログラム・3科目(英数国)の点数を入力し、平均点を算出するプログラム。を作成してもらいました。作ったプログラムは「夏休みの自由研究」としても使っていただけます。(^^)/#プログラミング #自由研究 #C言語
0
カバー画像

ご挨拶と出品のご連絡

はじめまして!Riku_Toudouと申します。 IT・プログラミング関連、特にC言語を得意としている現役のエンジニアです。 今回、主に初学者向けのサービスとして、C言語プログラミングのお悩み相談を出品させていただきました。 私が初学者の頃は、詰まったら相談に乗ってくれる人がそれなりにいました。今度は自分がそういった立場になれたらな・・・と考えています。 丁寧に対応させていただきますので、なにとぞよろしくお願いいたします。
0
カバー画像

C言語課題6

課題キーボードから入力した整数を16進数で表示せよ。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    int x;    printf("数字を入力して下さい\r\n> ");    scanf("%d", &x);    printf("小文字だと[0x%x]\r\n", x);    printf("小文字だと[0x%X]\r\n", x);}解説課題作っといてなんですが、16真数を大文字小文字を指定しなかったんで、両方で出力してみました。こういう時、プログラムって自由だなぁと思うんですよねー。
0
カバー画像

C言語課題3

課題自分の名前(ローマ字)をキーボードから入力し,その名前を出力するプログラムを作成しなさい回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    char name[256];    printf("あなたの名前を入力してください >");    scanf("%s", name);    printf("あなたの名前は、%sです\r\n", name);    return 0;}
0
カバー画像

C言語課題2

課題呼び出した関数の中で“Hello World”と表示するプログラムを作成しなさい。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>void display_hello_world(void){    printf("Hello World\r\n");}int main(void){    display_hello_world();}
0
カバー画像

C言語課題1

課題“Hello World”と表示するプログラムを作成しなさい。回答↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#include <stdio.h>int main(void){    printf("Hello World\r\n");}
0
48 件中 1 - 48
有料ブログの投稿方法はこちら