Submit Search
Upload
第6回
•
Download as PPTX, PDF
•
0 likes
•
318 views
E
evesanta1224
Follow
プログラミング演習第6回の解説アンドヒントです
Read less
Read more
Software
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 38
Download now
Recommended
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
Yasumasa Suenaga
Isaac Ashkenazi - PPT 1- Paris terrorism 13-Nov-2015
Isaac Ashkenazi - PPT 1- Paris terrorism 13-Nov-2015
Isaac Ashkenazi MD
Project M & E Indicators
M & e indicators
M & e indicators
Krishna Mishra
VIRUS Y ANTIVIRUS
Dayana quezada
Dayana quezada
Dayana Quezada
PResentación PPT
Presentación riesgo electrico
Presentación riesgo electrico
Evoltis
CONCEPTUALIZACION DE LAS TIC
Tic
Tic
Ana la Rosa
Mi portfolio
Portfolio
Portfolio
Amelia Becerro
Final Presentation Project for my 2015 Social Media Tools and Strategies Class
Jasmine McKinney’s final presentation
Jasmine McKinney’s final presentation
Jasmine McKinney
Recommended
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
Yasumasa Suenaga
Isaac Ashkenazi - PPT 1- Paris terrorism 13-Nov-2015
Isaac Ashkenazi - PPT 1- Paris terrorism 13-Nov-2015
Isaac Ashkenazi MD
Project M & E Indicators
M & e indicators
M & e indicators
Krishna Mishra
VIRUS Y ANTIVIRUS
Dayana quezada
Dayana quezada
Dayana Quezada
PResentación PPT
Presentación riesgo electrico
Presentación riesgo electrico
Evoltis
CONCEPTUALIZACION DE LAS TIC
Tic
Tic
Ana la Rosa
Mi portfolio
Portfolio
Portfolio
Amelia Becerro
Final Presentation Project for my 2015 Social Media Tools and Strategies Class
Jasmine McKinney’s final presentation
Jasmine McKinney’s final presentation
Jasmine McKinney
Social Media (edited)
Social Media (edited)
Kathryn Ellis
Stepping into a role which requires business finance knowledge? Here is a short guide offering advice, tools, and expertise that you will need to equip yourself with to be successful. Check out our Diploma in Business Finance for more.
Business finance essentials
Business finance essentials
James Bannigan
International finance instruments for iranian companies after the sanction
International Finance after the Sanction for Iranian Companies
International Finance after the Sanction for Iranian Companies
molavipeyman
.
Jaime fernandez
Jaime fernandez
jaimefernandezhdez5
it is has two main parts.one is contain brief intro with history and interesting information about android and second has a method by using we can develop an android application
Introduction to android
Introduction to android
Tanzeel ul Rehman
Presented at the RCPE Workshop Course 'Research - an introduction for trainee physicians', Royal College of Physicians of Edinburgh 28 October 2015
Introduction to RDM for trainee physicians
Introduction to RDM for trainee physicians
Historic Environment Scotland
Plan de Negocio
Glosario
Glosario
digmaryuris
Все о ФГОС дошкольного образования
Изучаем ФГОС дошкольного образования
Изучаем ФГОС дошкольного образования
detskiy_sad_120_Samara
Ruby のコンパイラ開発を通じて言語処理系を作ってみよう。 基礎:構文解析結果 → バイトコードへの変換 発展:さらなる最適化・高速化
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Koichi Sasada
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
2011年12月9日
2011年12月9日
nukaemon
社内勉強会の資料です。 初心者〜中級者くらいを想定しています。
最近の単体テスト
最近の単体テスト
Ken Morishita
PFI社内セミナー(2012/11/22)で動的計画法の新手法・代数的動的計画法について発表した際の発表資料です。発表の模様はこちら: http://www.ustream.tv/recorded/27196711
Algebraic DP: 動的計画法を書きやすく
Algebraic DP: 動的計画法を書きやすく
Hiromi Ishii
C言語入門 式と演算子について
6_C言語入門 - 式と演算子について
6_C言語入門 - 式と演算子について
bc_rikko
1/30 に行った、 Thrive on development 勉強会で使用したスライドです。 Rubyの基本について語っています。
Start!! Ruby
Start!! Ruby
mitim
Introduction to programming: variable, operation, standard I/O, if, for/while, array in C++
Introduction to programming
Introduction to programming
HCPC: 北海道大学競技プログラミングサークル
PFI Christmas seminar 2009
PFI Christmas seminar 2009
Preferred Networks
2014/10/11 PHPカンファレンス2014
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
Tokyo.SciPy 2011/8/28 で使用
Introduction to NumPy & SciPy
Introduction to NumPy & SciPy
Shiqiao Du
普通のRubyコード(235バイト)を40バイトに縮めていく過程を解説したスライドです。
普通のコードがCodeGolfコードになるまで in Ruby
普通のコードがCodeGolfコードになるまで in Ruby
Akito Sano
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
Keisuke Umeno
まだ作りかけ。
JavaScriptクイックスタート
JavaScriptクイックスタート
Shumpei Shiraishi
More Related Content
Viewers also liked
Social Media (edited)
Social Media (edited)
Kathryn Ellis
Stepping into a role which requires business finance knowledge? Here is a short guide offering advice, tools, and expertise that you will need to equip yourself with to be successful. Check out our Diploma in Business Finance for more.
Business finance essentials
Business finance essentials
James Bannigan
International finance instruments for iranian companies after the sanction
International Finance after the Sanction for Iranian Companies
International Finance after the Sanction for Iranian Companies
molavipeyman
.
Jaime fernandez
Jaime fernandez
jaimefernandezhdez5
it is has two main parts.one is contain brief intro with history and interesting information about android and second has a method by using we can develop an android application
Introduction to android
Introduction to android
Tanzeel ul Rehman
Presented at the RCPE Workshop Course 'Research - an introduction for trainee physicians', Royal College of Physicians of Edinburgh 28 October 2015
Introduction to RDM for trainee physicians
Introduction to RDM for trainee physicians
Historic Environment Scotland
Plan de Negocio
Glosario
Glosario
digmaryuris
Все о ФГОС дошкольного образования
Изучаем ФГОС дошкольного образования
Изучаем ФГОС дошкольного образования
detskiy_sad_120_Samara
Viewers also liked
(8)
Social Media (edited)
Social Media (edited)
Business finance essentials
Business finance essentials
International Finance after the Sanction for Iranian Companies
International Finance after the Sanction for Iranian Companies
Jaime fernandez
Jaime fernandez
Introduction to android
Introduction to android
Introduction to RDM for trainee physicians
Introduction to RDM for trainee physicians
Glosario
Glosario
Изучаем ФГОС дошкольного образования
Изучаем ФГОС дошкольного образования
Similar to 第6回
Ruby のコンパイラ開発を通じて言語処理系を作ってみよう。 基礎:構文解析結果 → バイトコードへの変換 発展:さらなる最適化・高速化
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Koichi Sasada
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
2011年12月9日
2011年12月9日
nukaemon
社内勉強会の資料です。 初心者〜中級者くらいを想定しています。
最近の単体テスト
最近の単体テスト
Ken Morishita
PFI社内セミナー(2012/11/22)で動的計画法の新手法・代数的動的計画法について発表した際の発表資料です。発表の模様はこちら: http://www.ustream.tv/recorded/27196711
Algebraic DP: 動的計画法を書きやすく
Algebraic DP: 動的計画法を書きやすく
Hiromi Ishii
C言語入門 式と演算子について
6_C言語入門 - 式と演算子について
6_C言語入門 - 式と演算子について
bc_rikko
1/30 に行った、 Thrive on development 勉強会で使用したスライドです。 Rubyの基本について語っています。
Start!! Ruby
Start!! Ruby
mitim
Introduction to programming: variable, operation, standard I/O, if, for/while, array in C++
Introduction to programming
Introduction to programming
HCPC: 北海道大学競技プログラミングサークル
PFI Christmas seminar 2009
PFI Christmas seminar 2009
Preferred Networks
2014/10/11 PHPカンファレンス2014
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
Tokyo.SciPy 2011/8/28 で使用
Introduction to NumPy & SciPy
Introduction to NumPy & SciPy
Shiqiao Du
普通のRubyコード(235バイト)を40バイトに縮めていく過程を解説したスライドです。
普通のコードがCodeGolfコードになるまで in Ruby
普通のコードがCodeGolfコードになるまで in Ruby
Akito Sano
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
Keisuke Umeno
まだ作りかけ。
JavaScriptクイックスタート
JavaScriptクイックスタート
Shumpei Shiraishi
HTML5 CONFERENCEでの発表資料です https://events.html5j.org/conference/2018/11/session/
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
LINE Corporation
Introduction of Synthesijer.Scala, which is a DSL to write HDL with Scala
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)
Takefumi MIYOSHI
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
Shintaro Fukushima
Boost.勉強会4にて発表した内容です。http://atnd.org/events/11551
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
AtCoder Inc.
新しくプログラミング言語・・・Rubyでやってみた
新しくプログラミング言語・・・Rubyでやってみた
Tomoaki Ueda
Similar to 第6回
(20)
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
2011年12月9日
2011年12月9日
最近の単体テスト
最近の単体テスト
Algebraic DP: 動的計画法を書きやすく
Algebraic DP: 動的計画法を書きやすく
6_C言語入門 - 式と演算子について
6_C言語入門 - 式と演算子について
Start!! Ruby
Start!! Ruby
Introduction to programming
Introduction to programming
PFI Christmas seminar 2009
PFI Christmas seminar 2009
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Introduction to NumPy & SciPy
Introduction to NumPy & SciPy
普通のコードがCodeGolfコードになるまで in Ruby
普通のコードがCodeGolfコードになるまで in Ruby
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
JavaScriptクイックスタート
JavaScriptクイックスタート
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
新しくプログラミング言語・・・Rubyでやってみた
新しくプログラミング言語・・・Rubyでやってみた
第6回
1.
プログラミング演習 第6回
2.
6-1
3.
6-1概要 • 乱数をn回生成する • 生成した乱数の最小値と最大値を出力 •
rand()で生成される最大値も出力 • 乱数を生成するシード値はユーザが設定
4.
6-1考察 • for文を回して、その中のif文で最小値と最大値の処 理を行うのが良さそう • この処理を関数に入れておくと、かっこいいソース ができるはず
5.
6-1ヒント • シード値をこちらで決めなければいけないので srand(変数);//この括弧の中に入力した値を入れたら いいね • 最大値や最小値の処理は今まで何回もやったはずな のでできる! 注意としては最小値の初期化でmin
= 0にせずに 限りなく大きい値である9999くらいにしておい た方が良い
6.
6-2
7.
6-2概要 • 6-1のように乱数を作る • 乱数を生成するのにかかった時間を求めよ
8.
6-2考察 • ヒントにも書いてある通り時間を測定するには 処理後の時間ー処理前の時間 で測定できる
9.
6-2ヒント • プログラムを実行してからの時間はclock()を使うと 測定できます//time.hのインクルード必要 • このclock()を処理前と処理後においてその返り値を 変数に格納しておきましょう •
そして出力するときに計算で実行時間を求めよう
10.
6-3
11.
6-3概要 • 都道府県の人口を多い順に並び替えて出力せよ
12.
6-3考察 • 並び替えは前回の課題でやったので簡単ですね • でも、今回は都道府県も覚えなければいけないので 少し工夫がいるようです
13.
6-3ヒント • 選択ソートやバブルソートで実装すればできそう • あとは前やったこと一緒ですね
14.
6-4
15.
6-4概要 • 人口増加率を求める • 人口増加率の高い順に並び替えて出力
16.
6-4考察 • 国税調査の結果を配列または、みんな大好き構造体 に入れておくと便利かな • あとはいつも通り並び替えだね
17.
6-4ヒント • この課題で一番面倒なのはデータを手で入力するこ とだね • それ以外は今までやってきたことと一緒だからでき る
18.
6-A1
19.
6-A1概要 • 0から9までの数字をn個使って • 合計sになる組み合わせの数を出力 •
この課題が一番難しい! • この課題をノーヒントで解けたらすごい! • 頑張ろう!
20.
6-A1考察 • 複雑なプログラムになりそうな予感がする。 • 数字を適当にn個選んでそれがsになっているか確認 すればできそう •
適当に数字を選ぶ方法を考えよう
21.
6-A1ヒント • 適当に選ぶ方法 • 一番簡単なのは2進数!! •
????なんで? • 10桁の2進数を考えてみよう!(解法1) • すると…
22.
6-A1解法1 • 10桁の2進数…例えば • 1010010100
こんな感じ • そして、1の時だけ足すという2進数の法則を考え てみる
23.
6-A1解法1 1010010100 これが1になってたらを0を足す! これが1になってたら1を足す! 23456789 01 これが1になってたら7を足す! というような感じにすれば 重複がなく足し算ができるね!
24.
6-A1解法1 • 先ほどの法則で足してみる • 2+4+7+9=22 •
この場合nが4でsが22だったら条件に合うね! • この処理を0000000000から • 1111111111(2^10乗−1) まで繰り返せばいいですね 1010010100 2479
25.
6-A1解法1 • 1)繰り返しの中身はまず1の個数を数える!(nの数があってない といけないからね) • 2)規則通りに足し算してsと一致しているかを見る(こっちの方が 計算量が多そうなので後にした方がいいです) •
この二つをクリアしたら1カウントする • 処理を早くするコツですが、条件に合わないとわかったらすぐに次 の値を読み込むと速くなります • 例えばnの個数が合わなかったら足し算をせずに次の値に移るとかね
26.
6-A1解法1 • そしてカウントした数を出力すれば完成! • 計算量は多くなるけどこれが簡単! •
次に示す解法2は再帰関数を使うので少し難しいね • わからなかったら飛ばしておk!
27.
6-A1解法2 • 数字の足し算や数字の個数の計算を関数でやらせる とスマートなプログラムができます • 説明の前に再帰関数とは? •
ユーザー定義関数の中で同じユーザー定義関数を呼 び出すことです!なんじゃそりゃ!
28.
6-A1解法2 • 例えばcalc()という関数で考える • int
calc(int a){ //処理 calc(); ←同じ関数を呼び出してる! } • こんな呼び出しを再帰と言います。 • 再帰関数で使う変数はグローバル変数で宣言!
29.
6-A1解法2 • では早速! • 関数の概要を考える。 •
記憶するべきことは • 今までの合計と今まで足してきた個数と次足すべき 数字の三つですね • これらを引数として考えます
30.
6-A1解法2 • void calc(int
合計,int 個数,int 次){ //処理 } • こんな感じの関数ができます
31.
次6-A1解法2 • calc関数に書くこと!パート1 • 今現在の合計がsになっているのか? •
今現在の個数がnになっているのか? • この2つがクリアできればカウントアップ! →片方だけなら不正解なのでreturn; • 今現在の次が10以上になっていないか? →これが10以上になっていたらもう解はないのでreturn;
32.
6-A1解法2 • calc関数に書くこと!パート2 • calc関数をもう一度呼び出す。 ーこの時、①次足すべき数字を足して呼び出すか、 ②足さずその数字をスルーして次の数字に変える か
の2通りが考えられます。 • つまり→次のスライド
33.
足してないでしょ!? でも次はプラス1 6-A1解法2 • 関数を呼び出す時 • calc(合計+次,個数+1,次+1); •
と • calc(合計,個数,次+1); • この2つを書く必要があります。 足してる方
34.
6-A1解法2 • この関数を完成させて • 最初にcalc(0,0,0); •
を呼び出せば自然と答えが出てきます
35.
6-A2
36.
6-A2概要 • ガラケーのような入力をしてそれから文字を解読し 結果を出力する
37.
6-A2考察 • 数字の先頭から0までの個数を数えたら文字が呼び出せそう • でも9回とか押されたらどうしよう? if文を使いますか? •
文字は配列に格納しておけば簡単になるっぽい! char moji[10][5] = { “.,!?”, {“abc”}, {“def”}, { }, { } };//こんな感じで出来るかな?(実際にやってません)
38.
6-A2ヒント • 9回押された時とかは %
を使うとあまりができます ね • 今回は文字列で入力なので’¥0’までのwhileで回すと良い • その中でもう一回whileを使って次の0までの距離を調べ よう! • 数えた0までの距離を配列の要素番号にして出力すれば 完成
Download now