using System; using System.IO; using System.Text; namespace ConsoleApplication1 { class Program { static void Main() { double z,y,x; StreamReader f1 = new StreamReader("input.txt"); StreamWriter f = new StreamWriter("output.txt"); string buf = f1.ReadLine(); z = Convert.ToDouble(buf); buf = f1.ReadLine(); x = Convert.ToDouble(buf); f.WriteLine("z = {0} x = {1} ", z, x); y = z / x; f.WriteLine(" z / x = {0} ", y); y = x / z; f.WriteLine(" x / z = {0} ", y); y = -z / 0; f.WriteLine(" - z / 0 = {0} ", y); y = -0.0 / 0.0; f.WriteLine("-0.0 / 0.0 = {0} ", y); y = 0.0 / 0.0; f.WriteLine(" 0.0 / 0.0 = {0} ", y); f1.Close(); f.Close(); } } } input.txt «кірістік» файлында 123 саны жазылған, осы сан z айнымалысына меншіктеледі. Екінші сан берілмегендіктен x айнымалысына нӛл меншіктеледі. Бағдарлама жҧмысының нәтижесі output.txt шығыстық, мәтіндік файлда орналасады, нәтижені «блокнот» арқылы кӛруге болады: z = 123 x = 0 z / x = бесконечность x/z=0 - z / 0 = -бесконечность -0.0 / 0.0 = NaN 35
0.0 / 0.0 = NaN Бағдарлама жҧмысының нәтижесін толығырақ қарастырайық. Біз нӛлге бӛлу жағдайын жасадық, бҧл жағдай кӛптеген бағдарламалау тілдерінде бағдарлама жҧмысын ҥзеді. C# тілінде нақты сандар ҥшін ҥш нҧсқа қарастырылған (бағдарламаның есептеу нәтижелері ҥшін) – Infinity, NegativeInfinity және NaN. Алғашқы екеуі математикадан белгілі - шексіздік және теріс шексіздік. Ҥшінші NaN (Not a Number) мәні нәтиже нақты сан болмағанда немесе бағдарлама нәтижені анықтай алмаған жағдайда орын алады. Осы мәндердің пайда болу жағдайларын қарастырайық. Егер кӛбейту немесе бӛлу операциясының орындалуы барысында модуль бойынша нәтиже ең жоғарғы мҥмкін саннан артық болса, онда нәтиженің таңбасына қараймәнішексіздіккенемесетерісшексіздіккеиеболады. Осымәндерді анықтайтын double және float типтерінің тҧрақтылары бар. Нақты сандар мен шексіздік арасында қосу, алу және кӛбейту операцияларын орындағанда нәтиже шексіздік мәніне ие болады, нәтиже теріс таңбада болуы мҥмкін. Нақты санды шексіздікке бӛлгенде нәтиже нӛлге тең болады. Егер шексіздік шексіздікке бӛлінсе немесе нӛл шексіздікке кӛбейтілсе,онданәтижеNaN болады.Операцияорындалунәтижесінақты сан болмаса, мысалы, теріс сан квадратының тҥбірін шығару кезінде, онда нәтиже жоғарыдағыдай NaN болады. Егер операциялар ішінде NaN қолданылса, онда нәтижеNaN болады.
Қарастырылған мысалдың екінші мақсаты - мәтіндік файлдармен жҧмыс. Осы жҧмыстың негізгі кезеңдерін қарастырайық. Біріншіден, арнайы атаулар кеңістігін қосу керек: using System.IO, файлдың енгізу-шығару жҧмысына жауап береді. Екіншіден, файлдың айнымалыларын жариялау керек – файлмен жҧмыс жасау ҥшін объекттерді қҧру: (StreamReader f1 = new StreamReader("input.txt"); StreamWriter f = new StreamWriter("output.txt");), Оларға магнитті дискідегі файл аты сәйкес келеді Ҥшіншіден, магнитті дисктегі мәтіндік ақпаратты жазу мен оқу операцияларын орындау (енгізу және шығару). Тӛртіншіден, алынған мәтіндік ақпаратты сәйкес типтердің мәндеріне тҥрлендіру операцияларын орындау. Бесіншіден, мәтіндік файлмен жҧмысты орындап болғаннан кейін оны жабу керек. 36