<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LoSoft Blog &#187; C/C++</title>
	<atom:link href="http://www.losoft.org/blog/category/coding/cc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.losoft.org/blog</link>
	<description>Linux, Mac OS, programowanie ...</description>
	<lastBuildDate>Fri, 03 Dec 2010 20:29:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Watki w C</title>
		<link>http://www.losoft.org/blog/2009/10/watki-w-c/</link>
		<comments>http://www.losoft.org/blog/2009/10/watki-w-c/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 21:12:40 +0000</pubDate>
		<dc:creator>lookout</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Programy]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[programowanie]]></category>

		<guid isPermaLink="false">http://www.losoft.org/blog/?p=1319</guid>
		<description><![CDATA[Po tym jak napisalismy i uruchomilismy nasz programik helloworld, mozemy teraz przejsc do bardziej ciekawych rzeczy. Na rozgrzewke proponuje pare watkow. Naszymi bohaterami beda, zbieracze zbierajacy ziarno z pola i znoszacy je do spichlerza. Czym jest watek? Nie wiem jak w innych systemach, ale w unixach jest to proces, wykonywany w watku glownym, ktory jest [...]]]></description>
			<content:encoded><![CDATA[<p>Po tym jak napisalismy i uruchomilismy nasz programik <a href="http://www.losoft.org/blog/2009/10/hello-world-w-cc/" title="Hello world w C/C++" target="_blank">helloworld</a>, mozemy teraz przejsc do bardziej ciekawych rzeczy. Na rozgrzewke proponuje pare watkow. Naszymi bohaterami beda, zbieracze zbierajacy ziarno z pola i znoszacy je do spichlerza.</p>
<p>Czym jest watek? Nie wiem jak w innych systemach, ale w unixach jest to proces, wykonywany w watku glownym, ktory jest procesem <img src='http://www.losoft.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Dobrze, jak juz wiemy co to jest watek to przejdziemy dalej.</p>
<p>Tworzymy plik programu</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">nano seeds.c</span>
</pre>
<p>Dolaczamy pliki naglowkowe</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;string.h&gt;</span>
<span style="color: #339933;">#include &lt;pthread.h&gt;</span></pre></div></div>

<p>Tworzymy globalne przechowywacze oraz strukture wlasciwosci zbieracza</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> grain<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// ziarno na polu</span>
<span style="color: #993333;">int</span> granary<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// ziarno w spichlerzu</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// struktura wlasciwosci zbieracza</span>
<span style="color: #993333;">struct</span> collector
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">char</span> name<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">32</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// nazwa zbieracza</span>
	<span style="color: #993333;">int</span> seeds<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// ilosc zebranych ziaren</span>
	<span style="color: #993333;">int</span> performance<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// wydajnosc</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>I funkcje watku zbieracza &#8211; bedzie wywolywana podczas kazdego utworzenia</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span><span style="color: #339933;">*</span> collect_seeds <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #339933;">*</span> collector_data<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">// pobranie danych zbieracza</span>
	<span style="color: #993333;">struct</span> collector <span style="color: #339933;">*</span>data<span style="color: #339933;">;</span>
	data <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> collector <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> collector_data<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// zebranie ziarna</span>
	<span style="color: #993333;">int</span> collected<span style="color: #339933;">;</span>
	collected <span style="color: #339933;">=</span> data<span style="color: #339933;">-&gt;</span>performance<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>collected <span style="color: #339933;">&lt;=</span> grain<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		grain <span style="color: #339933;">=</span> grain <span style="color: #339933;">-</span> collected<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
		collected <span style="color: #339933;">=</span> grain<span style="color: #339933;">;</span>
		grain <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// aktualizacja danych zbieracza</span>
	data<span style="color: #339933;">-&gt;</span>seeds <span style="color: #339933;">=</span> data<span style="color: #339933;">-&gt;</span>seeds <span style="color: #339933;">+</span> collected<span style="color: #339933;">;</span>
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s zebral %i<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> data<span style="color: #339933;">-&gt;</span>name<span style="color: #339933;">,</span> collected<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// zwrocenie ilosci zebranych ziaren</span>
	<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> collected<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>A teraz watek glowny</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> main <span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">// ustalenie ilosci ziarna</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>argc <span style="color: #339933;">==</span> <span style="color: #0000dd;">2</span> <span style="color: #339933;">&amp;&amp;</span> atoi<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		grain <span style="color: #339933;">=</span> atoi<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>grain <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
		grain <span style="color: #339933;">=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
	granary <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// nie wymietli wszystkiego ; )</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// mieszadlo liczb losowych</span>
	srand <span style="color: #009900;">&#40;</span>time <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// ustalanie danych zbieraczy</span>
	<span style="color: #993333;">struct</span> collector collector1<span style="color: #339933;">;</span>
	strncpy <span style="color: #009900;">&#40;</span>collector1.<span style="color: #202020;">name</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Dziwigor&quot;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span> <span style="color: #009900;">&#40;</span>collector1.<span style="color: #202020;">name</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	collector1.<span style="color: #202020;">seeds</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	collector1.<span style="color: #202020;">performance</span> <span style="color: #339933;">=</span> rand<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">%</span> <span style="color: #0000dd;">10</span> <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// losowanie wydajnosci</span>
&nbsp;
	<span style="color: #993333;">struct</span> collector collector2<span style="color: #339933;">;</span>
	strncpy <span style="color: #009900;">&#40;</span>collector2.<span style="color: #202020;">name</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Niesiebud&quot;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span> <span style="color: #009900;">&#40;</span>collector2.<span style="color: #202020;">name</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	collector2.<span style="color: #202020;">seeds</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	collector2.<span style="color: #202020;">performance</span> <span style="color: #339933;">=</span> rand<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">%</span> <span style="color: #0000dd;">10</span> <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Ziarno na polu: %i ziaren<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> grain<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Ziarno w spichlerzu: %i ziaren<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> granary<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Zaczely sie zniwa<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #993333;">int</span> collected_seeds<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// wskazniki do watkow zbieraczy</span>
	pthread_t thread1<span style="color: #339933;">;</span>
	pthread_t thread2<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// petelka dopoki nie zostanie zebrane cale ziarno</span>
	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>grain <span style="color: #339933;">&gt;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></pre></div></div>

<p>Do tej pory luzik wszystko wiadomo, tworzenie i ustalanie wartosci zmiennych, no i teraz dochodzimy do najwazniejszego elementu programiku &#8211; wyzwalanie watkow</p>
<p>Utworzenie watku</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">		<span style="color: #666666; font-style: italic;">// utworzenie watku Dziwigora</span>
		pthread_create <span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>thread1<span style="color: #339933;">,</span> NULL<span style="color: #339933;">,</span> collect_seeds<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>collector1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Pobranie danych z watku</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">		<span style="color: #666666; font-style: italic;">// pobranie zebranych ziaren</span>
		pthread_join <span style="color: #009900;">&#40;</span>thread1<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>collected_seeds<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>&#8220;Przesypanie&#8221; ziarna do spichlerza, i tak w kolko, dopoki ludki nie zbiora wszystkiego</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">		<span style="color: #666666; font-style: italic;">// aktualizacja spichlerza</span>
		granary <span style="color: #339933;">=</span> granary <span style="color: #339933;">+</span> collected_seeds<span style="color: #339933;">;</span>
&nbsp;
		pthread_create <span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>thread2<span style="color: #339933;">,</span> NULL<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> collect_seeds<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>collector2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		pthread_join <span style="color: #009900;">&#40;</span>thread1<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>collected_seeds<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		granary <span style="color: #339933;">=</span> granary <span style="color: #339933;">+</span> collected_seeds<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Pozostalo: %i ziaren<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> grain<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Zniwa zakonczone<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s zebral %i<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> collector1.<span style="color: #202020;">name</span><span style="color: #339933;">,</span> collector1.<span style="color: #202020;">seeds</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s zebral %i<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> collector2.<span style="color: #202020;">name</span><span style="color: #339933;">,</span> collector2.<span style="color: #202020;">seeds</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Ziarno na polu: %i ziaren<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> grain<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Ziarno w spichlerzu: %i ziaren<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> granary<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Jezeli skonczylismy pisac kod, to kompilujemy programik</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">gcc -o seeds seeds.c -pthread</span>
</pre>
<p>za pomoca parametru <span class="notranslate code">-pthread</span> informujemy kompilator aby dolaczyl obpowiednie biblioteki, jak tego nie zrobimy to sofcik oczywiscie nie skompiluje sie.</p>
<p>Uruchamiamy programik</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">./seeds 100</span>
Ziarno na polu: 100 ziaren
Ziarno w spichlerzu: 1 ziaren
Zaczely sie zniwa

Dziwigor zebral 5
Niesiebud zebral 6
Pozostalo: 89 ziaren
Dziwigor zebral 5
Niesiebud zebral 6
Pozostalo: 78 ziaren
...
Dziwigor zebral 5
Niesiebud zebral 6
Pozostalo: 1 ziaren
Dziwigor zebral 1
Niesiebud zebral 0
Pozostalo: 0 ziaren

Zniwa zakonczone
Dziwigor zebral 46
Niesiebud zebral 54
Ziarno na polu: 0 ziaren
Ziarno w spichlerzu: 101 ziaren
</pre>
<p>Gdy widzimy cos podobnego to odnieslismy kolejny sukces <img src='http://www.losoft.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Tutaj wersja dla niecierpliwych:<br />
<a title="seeds.c" href="http://www.losoft.org/blog/download/ccpp/seeds.c" target="_blank">Pobierz zrodlo</a> i/lub <a title="seeds" href="http://www.losoft.org/blog/download/ccpp/seeds" target="_blank">binarke</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.losoft.org/blog/2009/10/watki-w-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world w C/C++</title>
		<link>http://www.losoft.org/blog/2009/10/hello-world-w-cc/</link>
		<comments>http://www.losoft.org/blog/2009/10/hello-world-w-cc/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 21:51:07 +0000</pubDate>
		<dc:creator>lookout</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.losoft.org/blog/?p=1288</guid>
		<description><![CDATA[Wstep do programowania C/C++ w Linuxie zaczniemy standardowo od programiku helloworld. Przygotowujemy srodowisko czlowiek@maszyna:~$ sudo apt-get install build-essential i to juz wystarczy aby napisac prosty programik w C. Generujemy kod programiku czlowiek@maszyna:~$ nano helloworld.c #include &#60;stdio.h&#62; &#160; int main &#40;int argc, char *argv&#91;&#93;&#41; &#123; printf &#40;&#34;Hello World!\n&#34;&#41;; return 0; &#125; Kompilujemy programik korzystajac ze standardowego [...]]]></description>
			<content:encoded><![CDATA[<p>Wstep do programowania C/C++ w Linuxie zaczniemy standardowo od programiku <span class="notranslate code">helloworld</span>.</p>
<p>Przygotowujemy srodowisko</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">sudo apt-get install build-essential</span>
</pre>
<p>i to juz wystarczy aby napisac prosty programik w C.</p>
<p>Generujemy kod programiku</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">nano helloworld.c</span>
</pre>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main <span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Hello World!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Kompilujemy programik korzystajac ze standardowego <span class="notranslate code">gcc</span>  (<span class="notranslate code">gcc [opcje] plik</span>)</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">gcc -o helloworld helloworld.c</span>
</pre>
<p>Uruchamiamy programik</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">./helloworld</span>
Hello World!
</pre>
<p>Niama. To teraz C++</p>
<p>Generujemy kodzik</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">nano helloworld.cpp</span>
</pre>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	std<span style="color: #008080;">::</span><span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Hello World!&quot;</span> <span style="color: #000080;">&lt;&lt;</span> std<span style="color: #008080;">::</span><span style="color: #007788;">endl</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Kompilujemy korzystajac tym razem z <span class="notranslate code">g++</span> (<span class="notranslate code">g++ [opcje] plik</span>)</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">g++ -o helloworld_c++ helloworld.cpp</span>
</pre>
<p>Uruchamiamy programik</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">./helloworld_c++</span>
Hello World!
</pre>
<p>cool. To pobawmy sie.</p>
<p>Tworzymy plik <span class="notranslate code">viewparams.c</span></p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">nano viewparams.c</span>
</pre>
<p>i wstawiamy to</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main <span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;argc = %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> argc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> argv<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;argv[%d]&quot;</span><span style="color: #339933;">,</span> i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot; = %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> argv<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Kompilujemy i uruchamiamy programik z parametrami</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">gcc -o viewparams viewparams.c</span>
czlowiek@maszyna:~$ <span class="command">./viewparams parametr1 parametr2 parametr3</span>
argc = 4
argv[0] = ./viewparams
argv[1] = parametr1
argv[2] = parametr2
argv[3] = parametr3
</pre>
<p>Teraz programik <span class="notranslate code">plus</span></p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">nano plus.c</span>
</pre>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main <span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>argc <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Niepoprawna liczba argumentow :/<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Przyklad uzycia: plus 50 25<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #993333;">int</span> sum<span style="color: #339933;">,</span> i<span style="color: #339933;">;</span>
	sum <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> argv<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		sum <span style="color: #339933;">+=</span> atoi<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> sum<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Kompilujemy i uruchamiamy</p>
<pre class="notranslate bash">
czlowiek@maszyna:~$ <span class="command">gcc -o plus plus.c</span>
czlowiek@maszyna:~$ <span class="command">./plus 50 25</span>
75
czlowiek@maszyna:~$ <span class="command">./plus 1 2 3 4 5 6 7 8 9 0</span>
45
</pre>
<p>plus-minus? <img src='http://www.losoft.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.losoft.org/blog/2009/10/hello-world-w-cc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

