{"id":23373,"date":"2017-01-31T10:18:43","date_gmt":"2017-01-31T09:18:43","guid":{"rendered":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/?page_id=23373"},"modified":"2017-01-31T10:18:43","modified_gmt":"2017-01-31T09:18:43","slug":"ciekawostki","status":"publish","type":"page","link":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/projekty\/fortran-dla-uzytkownikow-mes\/99-dygresje\/ciekawostki\/","title":{"rendered":"Ciekawostki"},"content":{"rendered":"<h2>Liczby zmiennoprzecinkowe<\/h2>\n<p>Popatrzmy na poni\u017cszy program:<\/p>\n<div class=\"zim-object\">\n<pre class=\"brush: fortran;\">1&nbsp;  program test\r\n2&nbsp;  print *, 0.1e0\r\n3&nbsp;  print *, 0.1e0_8\r\n4&nbsp;  print *, 0.1e0_16\r\n5&nbsp;  print *, 0.1e0 - 0.1e0_8\r\n6&nbsp;  print *, 0.1e0 - 0.1e0_16\r\n7&nbsp;  print *, 0.1e0_16 - 0.1e0_8\r\n8&nbsp;  end program test<\/pre>\n<\/div>\n<p>Oto wynik jego dzia\u0142ania:<\/p>\n<pre>  0.100000001    \r\n  0.10000000000000001     \r\n   1.00000000000000000000000000000000005E-0001\r\n   1.4901161138336505E-009\r\n   1.49011611938476562499999999518517514E-0009\r\n  -5.55111512312578269730333347948601193E-0018\r\n<\/pre>\n<p>Wnioski ka\u017cdy wyci\u0105ga sam.<\/p>\n<h2>Sta\u0142e tekstowe<\/h2>\n<p>Poni\u017cej przyk\u0142ad pokazuj\u0105cy jak mo\u017cna korzysta\u0107 z innych kodowa\u0144:<br \/>\nW szczeg\u00f3lnych przypadkach mo\u017cna sta\u0142\u0105 tekstow\u0105 poprzedzi\u0107 parametrem kind-param (i znakiem podkre\u015blenia).<br \/>\nDo zapisu sta\u0142ych tekstowych u\u017cywa si\u0119 kodowania ASCII. Standard nie przewiduje(?) innych rodzaj\u00f3w kodowania, ale mo\u017ce to by\u0107 realizowane rozszerzenie, jak w przyk\u0142adzie:<\/p>\n<div class=\"zim-object\">\n<pre class=\"brush: fortran;\">1&nbsp;program character_kind\r\n2&nbsp;  use iso_fortran_env\r\n3&nbsp;  implicit none\r\n4&nbsp;  integer, parameter :: ascii = selected_char_kind (\"ascii\")\r\n5&nbsp;  integer, parameter :: ucs4  = selected_char_kind ('ISO_10646')\r\n6&nbsp;          \r\n7&nbsp;  character(kind=ascii, len=26) :: alphabet\r\n8&nbsp;  character(kind=ucs4,  len=30) :: hello_world\r\n9&nbsp;          \r\n10&nbsp;  alphabet = ascii_\"abcdefghijklmnopqrstuvwxyz\"\r\n11&nbsp;  hello_world = ucs4_'Hello World and Ni Hao -- ' &amp;\r\n12&nbsp;      \/\/ char (int (z'4F60'), ucs4)     &amp;\r\n13&nbsp;      \/\/ char (int (z'597D'), ucs4)\r\n14&nbsp;          \r\n15&nbsp;  write (*,*) alphabet\r\n16&nbsp;          \r\n17&nbsp;  open (output_unit, encoding='UTF-8')\r\n18&nbsp;  write (*,*) trim (hello_world)\r\n19&nbsp;end program character_kind<\/pre>\n<\/div>\n<p>Wynik dzia\u0142ania tego programu jest nast\u0119puj\u0105cy:<\/p>\n<pre> abcdefghijklmnopqrstuvwxyz\r\n Hello World and Ni Hao -- \u4f60\u597d\r\n<\/pre>\n<p>Zwracam uwag\u0119 na konstrukcj\u0119 tego programu.<br \/>\nPo pierwsze wczytywany jest \u201emodu\u0142\u201d <tt>iso_fortran_env<\/tt>.<br \/>\nP\u00f3\u017aniej definiowane s\u0105 sta\u0142e sta\u0142e ca\u0142kowite <tt>integer, parameter<\/tt>, jedna o nazwie <tt>ascii<\/tt> (druga <tt>ucs4<\/tt>), kt\u00f3rym nadawana jest warto\u015b\u0107 zwracana przez funkcj\u0119 standardow\u0105 <tt>selected_char_kind<\/tt>.<br \/>\nKolejna deklaracja zmiennej typu <tt>CHARACTER<\/tt> u\u017cywa konstrukcj\u0119 wskazywania explicite typu zmiennej (<tt>kind=<\/tt>).<br \/>\nProblem zaczyna si\u0119 gdy trzeba zakodowa\u0107 \u201erozszerzone\u201d \u2014 u\u017cywana jest funkcja <tt>char<\/tt> konwertuj\u0105ca warto\u015b\u0107 ca\u0142kowit\u0105 zadan\u0105 jako sta\u0142\u0105 szesnastkowa, u\u017cywaj\u0105c kodowania <tt>ucs4<\/tt>: <tt>char (int (z'4F60'), ucs4).<\/tt><br \/>\n<a class=\"https\" title=\"Kodowanie ucs4\" href=\"https:\/\/pl.wikipedia.org\/wiki\/UTF-32\/UCS-4\">Kodowanie ucs4<\/a> jest wariantem Unicode, w kt\u00f3rym ka\u017cdy znak kodowany jest na 32 bitach (czterech bajtach). Standardowo edytory i strony WWW u\u017cywaj\u0105 kodowania <a class=\"https\" title=\"UTF-8\" href=\"https:\/\/pl.wikipedia.org\/wiki\/UTF-8\">UTF-8<\/a>, w kt\u00f3rym ka\u017cdy znak kodowany spoza zestawu ASCII kodowany jest z u\u017cyciem zmiennej liczby bajt\u00f3w (znak\u00f3w).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Liczby zmiennoprzecinkowe Popatrzmy na poni\u017cszy program: 1&nbsp; program test 2&nbsp; print *, 0.1e0 3&nbsp; print *, 0.1e0_8 4&nbsp; print *, 0.1e0_16 5&nbsp; print *, 0.1e0 &#8211; 0.1e0_8 6&nbsp; print *, 0.1e0 &#8211; 0.1e0_16 7&nbsp; print *, 0.1e0_16 &#8211; 0.1e0_8 8&nbsp; end program test Oto wynik jego dzia\u0142ania: 0.100000001 0.10000000000000001 1.00000000000000000000000000000000005E-0001 1.4901161138336505E-009 1.49011611938476562499999999518517514E-0009 -5.55111512312578269730333347948601193E-0018 Wnioski ka\u017cdy &hellip; <a href=\"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/projekty\/fortran-dla-uzytkownikow-mes\/99-dygresje\/ciekawostki\/\" class=\"more-link\">Czytaj dalej <span class=\"screen-reader-text\">Ciekawostki<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":23371,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/full-width.php","meta":{"ngg_post_thumbnail":0,"footnotes":""},"class_list":["post-23373","page","type-page","status-publish","hentry"],"publishpress_future_action":{"enabled":false,"date":"2026-04-19 21:16:58","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\/23373","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=23373"}],"version-history":[{"count":1,"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/pages\/23373\/revisions"}],"predecessor-version":[{"id":23374,"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/pages\/23373\/revisions\/23374"}],"up":[{"embeddable":true,"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/pages\/23371"}],"wp:attachment":[{"href":"https:\/\/kmim.wm.pwr.edu.pl\/myszka\/wp-json\/wp\/v2\/media?parent=23373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}