{"id":23346,"date":"2017-01-24T20:46:20","date_gmt":"2017-01-24T19:46:20","guid":{"rendered":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/?page_id=23346"},"modified":"2017-01-24T20:46:22","modified_gmt":"2017-01-24T19:46:22","slug":"08-zmienne","status":"publish","type":"page","link":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/projekty\/fortran-dla-uzytkownikow-mes\/08-zmienne\/","title":{"rendered":"08 Zmienne"},"content":{"rendered":"<p><br \/>\nZmienne to jeden z podstawowych rodzaj\u00f3w obiekt\u00f3w u\u017cywanych podczas programowania. S\u0142u\u017c\u0105 one do przechowywania r\u00f3\u017cnych, potrzebnych w trakcie oblicze\u0144, warto\u015bci. Idea zaczerpni\u0119ta zosta\u0142a z algebry, gdzie nikogo nie dziwi zapis postaci:<br \/>\n$$y=ax^2+bx+c$$<br \/>\nW powy\u017cszym r\u00f3wnaniu \\(a, b, c\\) oraz \\(x\\) i \\(y\\) to zmienne \u201eskalarne\u201d (jednowymiarowe). Na og\u00f3\u0142 nie zastanawiamy si\u0119 jakie warto\u015bci mog\u0105 one przyjmowa\u0107, ale za\u0142o\u017cenie, \u017ce s\u0105 to warto\u015bci rzeczywiste nie ogranicza w \u017caden spos\u00f3b rozwa\u017ca\u0144. Przyzwyczajeni te\u017c jeste\u015bmy dokonywa\u0107 przekszta\u0142ce\u0144 takich wyra\u017ceni, \u017ceby wyliczy\u0107 warto\u015b\u0107 miejsca zerowego \\(x\\) trzeba b\u0119dzie policzy\u0107:<br \/>\n$$\\Delta = b^2-4ac$$<br \/>\na nast\u0119pnie wyliczy\u0107 \\(x_1\\) oraz \\(x_2\\) ze wzor\u00f3w:<br \/>\n$$x_1=\\frac{-b-\\sqrt{\\Delta}}{2a}$$ i $$x_2=\\frac{-b+\\sqrt{\\Delta}}{2a}$$<br \/>\nRozwa\u017cania \u201ematematyczne\u201d (prowadzone na odpowiednio wysokim poziomie og\u00f3lno\u015bci) pozwalaj\u0105 zapomnie\u0107 o tym czy \u0394 jest dodatnie czy ujemne (je\u017celi tylko cokolwiek wiemy o liczbach zespolonych). W obliczeniach praktycznych okaza\u0107 si\u0119 mo\u017ce, \u017ce interesuj\u0105 nas wy\u0142\u0105cznie pierwiastki rzeczywiste, co spraw\u0119 mo\u017ce nieco skomplikowa\u0107. Osobno trzeba b\u0119dzie rozpatrzy\u0107 przypadek gdy \u0394 \u2265 0, a osobno gdy \u0394 &lt; 0.<br \/>\nSpr\u00f3bujmy zaprojektowa\u0107 prost\u0105 aplikacj\u0119, kt\u00f3ra najpierw pyta o warto\u015bci \\(a, b\\) i \\(c\\), a nast\u0119pnie dokonuje wszystkich wylicze\u0144 i przedstawia wyniki. Z oczywistych wzgl\u0119d\u00f3w (budowanie aplikacji okienkowych wymaga sporej wiedzy na temat funkcjonowania \u015brodowiska graficznego Systemu Operacyjnego) b\u0119dzie to bardzo prosta aplikacja \u201etekstowa\u201d.<br \/>\nZacznijmy od naszkicowania schematu blokowego:<br \/>\n<a href=\"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/projekty\/fortran-dla-uzytkownikow-mes\/08-zmienne\/diagram\/\" rel=\"attachment wp-att-23354\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-23354 size-full\" src=\"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-content\/uploads\/sites\/2\/2017\/01\/diagram.png\" width=\"309\" height=\"872\" srcset=\"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-content\/uploads\/sites\/2\/2017\/01\/diagram.png 309w, https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-content\/uploads\/sites\/2\/2017\/01\/diagram-106x300.png 106w\" sizes=\"auto, (max-width: 309px) 100vw, 309px\" \/><\/a><br \/>\nTeraz mo\u017cemy zacz\u0105\u0107 programowa\u0107. Musimy rozstrzygn\u0105\u0107 jakie zmienne b\u0119d\u0105 nam potrzebne (i jakiego typu)? Zmienne to <tt>A, B, C, DELTA<\/tt> (odpowiednik \u0394) oraz <tt>X1 i X2<\/tt>. Wszystkie zmienne b\u0119d\u0105 typu <tt>REAL<\/tt> (cho\u0107 za\u0142o\u017cenie, \u017ce b\u0119d\u0105 one typu <tt>DOUBLE PRECISION<\/tt> wcale nie b\u0119dzie karygodne).<\/p>\n<div class=\"zim-object\">\n<pre class=\"brush: fortran;\">1&nbsp;PROGRAM PIERWIASTEK\r\n2&nbsp;REAL A, B, C, DELTA, X1, X2\r\n3&nbsp;WRITE(*,*) \"Podaj A\"\r\n4&nbsp;READ(*,*) A\r\n5&nbsp;WRITE(*,*) \"Podaj B\"\r\n6&nbsp;READ(*,*) B\r\n7&nbsp;WRITE(*,*) \"Podaj C\"\r\n8&nbsp;READ(*,*) C\r\n9&nbsp;DELTA = B * B - 4. * A * C\r\n10&nbsp;IF (DELTA &lt; 0.) THEN\r\n11&nbsp;  WRITE(*,*) \"Nie ma pierwiastk\u00f3w rzeczywistych!\"\r\n12&nbsp;ELSE\r\n13&nbsp;  X1 = (-B - SQRT(DELTA))\/(2. * A)\r\n14&nbsp;  X2 = (-B + SQRT(DELTA))\/(2. * A)\r\n15&nbsp;  WRITE(*,*) \"X1=\", X1, \" X2=\", X2\r\n16&nbsp;END IF\r\n17&nbsp;END PROGRAM<\/pre>\n<\/div>\n<p>Kilka s\u0142\u00f3w obja\u015bnienia<\/p>\n<ul>\n<li><tt>WRITE(*,*) \"Tekst\"<\/tt> to polecenie wypisania tekstu na konsoli, podobnie <tt>WRITE(*,*) \"Tekst\", zmienna<\/tt> to polecenie wypisania najpierw tekstu i w tej samej linii warto\u015bci zmiennej.<\/li>\n<li><tt>READ(*,*) zmienna<\/tt> to polecenie powoduj\u0105ce \u201ezatrzymanie\u201d programu w oczekiwaniu na wprowadzenie przez u\u017cytkownika warto\u015bci rzeczywistej, kt\u00f3ra zostanie wczytana, zinterpretowana, skonwertowana do postaci dw\u00f3jkowej i podstawiona jako warto\u015b\u0107 zmiennej.<\/li>\n<li>Na koniec zosta\u0142o polecenie <tt>IF (warunek) THEN polecenie1 ELSE polecenie2 END IF<\/tt>. Wydaje si\u0119 by\u0107 ono dosy\u0107 oczywiste: je\u017celi warunek jest spe\u0142niony \u2014 wykonywane jest polecenie1, w przeciwnym razie \u2014 polecenie drugie. Pomi\u0119dzy <tt>IF<\/tt> a <tt>ELSE<\/tt> lub pomi\u0119dzy <tt>ELSE<\/tt> a <tt>END IF<\/tt> mo\u017cna umie\u015bci\u0107, oczywi\u015bcie, wi\u0119cej ni\u017c jedno polecenie.<\/li>\n<li><tt>SQRT()<\/tt> to funkcja standardowa wyliczaj\u0105ca warto\u015b\u0107 pierwiastka kwadratowego z argumentu. argument (warto\u015b\u0107 lub wyra\u017cenie podane w nawiasach) musi mie\u0107 warto\u015b\u0107 wi\u0119ksz\u0105 od zera; dzia\u0142a na warto\u015bciach rzeczywistych i podaje wyniki rzeczywiste.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Zmienne to jeden z podstawowych rodzaj\u00f3w obiekt\u00f3w u\u017cywanych podczas programowania. S\u0142u\u017c\u0105 one do przechowywania r\u00f3\u017cnych, potrzebnych w trakcie oblicze\u0144, warto\u015bci. Idea zaczerpni\u0119ta zosta\u0142a z algebry, gdzie nikogo nie dziwi zapis postaci: $$y=ax^2+bx+c$$ W powy\u017cszym r\u00f3wnaniu \\(a, b, c\\) oraz \\(x\\) i \\(y\\) to zmienne \u201eskalarne\u201d (jednowymiarowe). Na og\u00f3\u0142 nie zastanawiamy si\u0119 jakie warto\u015bci mog\u0105 one &hellip; <a href=\"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/projekty\/fortran-dla-uzytkownikow-mes\/08-zmienne\/\" class=\"more-link\">Czytaj dalej <span class=\"screen-reader-text\">08 Zmienne<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":23294,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ngg_post_thumbnail":0,"footnotes":""},"class_list":["post-23346","page","type-page","status-publish","hentry"],"publishpress_future_action":{"enabled":false,"date":"2026-04-12 04:45:33","action":"change-status","newStatus":"draft","terms":[],"taxonomy":"language","extraData":[]},"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/pages\/23346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/comments?post=23346"}],"version-history":[{"count":10,"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/pages\/23346\/revisions"}],"predecessor-version":[{"id":23357,"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/pages\/23346\/revisions\/23357"}],"up":[{"embeddable":true,"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/pages\/23294"}],"wp:attachment":[{"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/media?parent=23346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}