基本的なことから始めます。
Am の主要3和音は Am, Dm, E7 です。この中で E7 はソ#を含んでいますから、このコードのところでソを使う場合は半音上げることになります。
他に#がつくのはファですが、Dm に含まれるのはファ(ナチュラル)です。ファ#が現れるのは、(ミ)-ファ#-ソ#-ラとメロディーが上向きに動くときです。ラから下がるときはラ-ソ-ファ-ミと#をつけません。これを旋律的短音階(メロディックマイナー)と言います。
和声的短音階はソだけにシャープをつけますが、これは Dm がファ#を含まないことから分かるように、 Am のスケールの各音の上に音を重ねて和音を作るときはファ#を使わないからです。しかしメロディーがファ-ソ#-ラと上行するとファ-ソ#間の音程が広すぎるのであまり使いません。むしろこれはジプシー音楽やいわゆる中近東風な響きをもつ特殊な効果を持ちます。
♭は Am の主要3和音や補助的な和音(C, F, Bm7-5, Em, G など)には現れないので、特殊な効果を狙って Bb を使ったときにシ♭が現れたり、ブルーな雰囲気を出すために F7 や D7 を使ったときにミ♭が現れたり、Dm へ進む前に A7 を挿入したときにシ♭が現れたりするくらいです。
まとめると#はメロディのソとファに付く、♭は特殊なコードに対しては付くと言えます。もちろんソに#が付かない曲もたくさんあり、一種素朴な感じがするのですが、このような曲では当然 E7 は使えず、 G や Em7 を代用します。
ただ、比較的短い音符であれば、コードに含まれない音でも経過的に使われることがあります。これは#が多く、また多くの場合コード構成音の半音下です。たとえば
コードが Am, E7 のとき、レ#-ミ
E7 のとき、ラ#-シ、レ#-ミ
のような動きは比較的多く見られます。
また、すばやく細かい音符でメロディーが半音ずつ下降するときは♭が多用されますが(ただしこれは♭自体に意味があるのではなく下降するときは♭の方が書きやすくまた「下がる」ことを表すのに適しているから)、歌物ではまれです。
以上のようなことはごく基本的なことであり、理論で説明しやすい部分です。これに合わない曲も多数あります。結局のところ多くの曲を「メロディやコードを意識して」聴くことで多くの例外的な使い方を覚えていくことになります。