<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=TI%2FW%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach</id>
	<title>TI/Włączanie kodu w innych językach - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=TI%2FW%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach"/>
	<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/W%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach&amp;action=history"/>
	<updated>2026-04-23T09:20:54Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=TI/W%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach&amp;diff=1977&amp;oldid=prev</id>
		<title>Jarekz: Utworzono nową stronę &quot; Spróbujmy tu podystkutować co ma to zawierać, bo w tej tabelce to jest mało miejsca. * &lt;s&gt;język skryptowy vs kompilowany? na przykładzie pythona i C, trochę o ty...&quot;</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/W%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach&amp;diff=1977&amp;oldid=prev"/>
		<updated>2015-05-23T14:09:28Z</updated>

		<summary type="html">&lt;p&gt;Utworzono nową stronę &amp;quot; Spróbujmy tu podystkutować co ma to zawierać, bo w tej tabelce to jest mało miejsca. * &amp;lt;s&amp;gt;język skryptowy vs kompilowany? na przykładzie pythona i C, trochę o ty...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
Spróbujmy tu podystkutować co ma to zawierać, bo w tej tabelce to jest mało miejsca.&lt;br /&gt;
* &amp;lt;s&amp;gt;język skryptowy vs kompilowany? na przykładzie pythona i C, trochę o tym, że jest cPython i inne pythony i wstępniak, że sami możemy coś w C sobie włączyć do pythona i po to będziemy mówić o C.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;hello world w C ?&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;opis procesu kompilacji, plików, które powstają?&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;instrukcja include i jej uzycie? Gdzie szukać tych plików, które tam są? jak je samemu tworzyć?&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;prosty makefile?&amp;lt;/s&amp;gt;&lt;br /&gt;
* sposób korzystania z tablicy w C, sumowanie liczb od 1 do n w C?  iloczyn skalarny. I może kilka innych prostych ćwiczeń? metoda korzystania z wejścia/wyjścia podana na pamięć, bez zrozumienia, deklaracje zmiennych, typy zmiennych, i to tyle samodzielnego działania z C, a dalej już korzystanie z cudzych dóbr? Powyższe w 4 h się zmieści? &lt;br /&gt;
* włączenie tego własnego iloczynu skalarnego do pythona &lt;br /&gt;
* &amp;lt;s&amp;gt;tak jak Dobi radził -- w przypadku przykładów z numrical costam nacisk na problemy typu &amp;quot;nie mam biblioteki ktorej ten program wymaga&amp;quot;?&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;swig? boost? &amp;quot;ręczne&amp;quot; włączanie?&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;omówienie proces kompilacji programu w C/C++ (pre-procesor, kompilator, linker)&amp;lt;/s&amp;gt;&lt;br /&gt;
* Przy pre-procesorze problem plików nagłówkowych (gdzie szukać jak rozwiązywać problemy z makrami itp) czy co robić się nie kompiluje bo czegoś brakuje :)&lt;br /&gt;
* biblioteki statyczne (*.a) i współdzielone (*so).&lt;br /&gt;
* problemy z linkowanie (brak symboli) bibliotek itp&lt;br /&gt;
* zmienna LD_LIBRARY_PATH&lt;br /&gt;
* &amp;lt;s&amp;gt;&amp;quot;maglowanie&amp;quot; nazw (kod C/C++) problemy z wersjami kompilatorów. &amp;lt;/s&amp;gt;&lt;br /&gt;
* współdziałanie kodu napisanego w różnych językach (dlaczego to działa) może nie od razu do   Pythona (tylko C/C++/Fortran) - jak mapują się typy i stos. &lt;br /&gt;
* to samo tylko dla Python'a &lt;br /&gt;
* makefile jak najbardziej może warto wspomnieć o automatach do ich generowania (np.tmake)&lt;br /&gt;
* configure (ale od strony użytkownika a nie sposobu jego generowania)&lt;br /&gt;
==Język &amp;lt;tt&amp;gt;C&amp;lt;/tt&amp;gt;==&lt;br /&gt;
Język &amp;lt;tt&amp;gt;C&amp;lt;/tt&amp;gt; kochamy z wielu powodów. Przede wszystkim za jego piekno, uniwersalność, prostotę, finezję i szybkość. Jednym z pobocznych powodów jest też łatwo dostępny manual &amp;amp;mdash; wystarczy po prostu napisać &amp;lt;tt&amp;gt;man nazwafunkcji&amp;lt;/tt&amp;gt; w terminalu. Czasami trzeba napisać &amp;lt;tt&amp;gt;man 3 &amp;lt;/tt&amp;gt;, jeżeli dostępna jest funkcja systemowa o tej samej nazwie. &lt;br /&gt;
&lt;br /&gt;
Języka &amp;lt;tt&amp;gt;C&amp;lt;/tt&amp;gt; nienawidzimy również z wielu powodów. Wymaga on od nas ogromnej dyscypliny w programowaniu &amp;amp;mdash; musimy pamiętać o deklaracji zmiennych, definiowaniu funkcji w odpowiedniej kolejności, a jeżeli nie korzystamy z jakiejś sprytnej biblioteki też o alokowaniu potrzebnej pamięci np. na tablice; nie jest językiem interpretowalnym, więc musimy kompilować nasze programy, co zwykle polega na byciu obrzuconym nie do końca czytelnymi dla nas informacjami o błędach przez kompilator; a do tego jeszcze na końcu każdej instrukcji postawić należy średnik. Oprócz instrukcji, na których końcu nie wolno tego robić &amp;amp;mdash; jak na przykład  pętle, bo program nie wywoła instrukcji, które są w pętli. Powodów nienawiści jest oczywiście dużo więcej. Tutaj wymieniliśmy jedynie kilka z nich.&lt;br /&gt;
===Podstawy składni===&lt;br /&gt;
Bloki instrukcji zawierają się w nawiasach klamrowych &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;. Zwykle zagłębione bloki w pętlach i warunkach zaznacza się również za pomocą wcięć, nie są one jednak kluczowe w poprawnym działaniu programu, przeciwnie do Pythona. Pojedyncze instrukcje kończy średnikk &amp;lt;tt&amp;gt;;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
====Polecenie printf====&lt;br /&gt;
Szczegółowy opis polecenia &amp;lt;tt&amp;gt;printf&amp;lt;/tt&amp;gt; i &amp;lt;tt&amp;gt;fprintf&amp;lt;/tt&amp;gt; znajduje się [http://pl.wikibooks.org/wiki/C/printf przetłumaczonym na polski manualu].  &lt;br /&gt;
=====Zadanie=====&lt;br /&gt;
Spróbuj napisać program przeprowadzający operacje matematyczne i wypisujący ich wynik na ekran. Do wypisywania użyj polecenia &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt; znajdującego się w pliku &amp;lt;tt&amp;gt;stdio.h&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
        printf(&amp;quot;%i\n&amp;quot;,5*6);&lt;br /&gt;
        printf(&amp;quot;%i\n&amp;quot;,1/2);&lt;br /&gt;
        printf(&amp;quot;%f\n&amp;quot;,1./2);&lt;br /&gt;
        return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zmienne====&lt;br /&gt;
W &amp;lt;tt&amp;gt;C&amp;lt;/tt&amp;gt; zmienne muszą zostać zadeklarowane, nie wystarczy ich zadeklarować jak w Pythonie.&lt;br /&gt;
Zmienne możemy deklarować w każdym miejscu programu. Deklaracja zmiennej składa się z podania jej typu i nazwy — &amp;lt;tt&amp;gt;int licznik&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Przykładowe typy zmiennych:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;int&amp;lt;/tt&amp;gt; &amp;amp;mdash; całkowity&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;short int&amp;lt;/tt&amp;gt; &amp;amp;mdash; krótki całkowity&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;long int&amp;lt;/tt&amp;gt; &amp;amp;mdash; długi całkowity&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;double&amp;lt;/tt&amp;gt; &amp;amp;mdash; zmiennoprzecinkowy o podwójnej precyzji&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;float&amp;lt;/tt&amp;gt; &amp;amp;mdash; zmiennoprzecinkowy o pojedynczej precyzji&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;char&amp;lt;/tt&amp;gt; &amp;amp;mdash; znak&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Zmienne mogą być &amp;lt;tt&amp;gt;signed&amp;lt;/tt&amp;gt; &amp;amp;mdash; całkowite, bądź &amp;lt;tt&amp;gt;unsigned&amp;lt;/tt&amp;gt; &amp;amp;mdash; naturalne.&lt;br /&gt;
&lt;br /&gt;
Zmienne można zainicjalizować bezpośrednio przy deklaracji &amp;amp;mdash; &amp;lt;tt&amp;gt;int licznik = 0;&amp;lt;/tt&amp;gt; lub w kodzie po deklaracji &amp;amp;mdash; &amp;lt;tt&amp;gt;licznik = 0;&amp;lt;/tt&amp;gt;. Jeżeli zmienna nie zostanie zainicjalizowana, przyjmuje wartość pseudolosową.&lt;br /&gt;
&lt;br /&gt;
Staramy się w mniej oczywistych miejscach kodu pisać komentarze. Jeżeli chcemy zapisać komentarz w jednej linijce robimy to po znakach &amp;lt;tt&amp;gt;//&amp;lt;/tt&amp;gt;, jeżeli miałby być dłuższy, rozpoczynamy go znakami &amp;lt;tt&amp;gt;/*&amp;lt;/tt&amp;gt;, a kończymy &amp;lt;tt&amp;gt;*/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
=====Zadanie=====&lt;br /&gt;
Napisz program, w którym zmienna &amp;lt;tt&amp;gt;licznik&amp;lt;/tt&amp;gt; zostanie zadeklarowana i zainicjalizowana z wartością 5. Zwiększ ją o jeden używając operatorów: &amp;lt;tt&amp;gt;+&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;+=&amp;lt;/tt&amp;gt;, oraz operatorem inkrementacji prefiksowanym i suffiksowanym (&amp;lt;tt&amp;gt;++licznik;&amp;lt;/tt&amp;gt; oraz &amp;lt;tt&amp;gt;licznik++;&amp;lt;/tt&amp;gt;).&lt;br /&gt;
Zmiennym nadajemy nazwy, które umożliwią zrozumienie działania programu (po analizie kodu) po 2,3,…,40,80 tygodniach. Zmienne te powinny umożliwić zrozumienie programu także osobie postronnej, która zmuszona jest czytać kod programu. Po każdym zwiększeniu &amp;lt;tt&amp;gt;licznika&amp;lt;/tt&amp;gt; o jeden wypisz jego wartość.&lt;br /&gt;
====Wyrażenie warunkowe====&lt;br /&gt;
W &amp;lt;tt&amp;gt;C&amp;lt;/tt&amp;gt; operator przypisania jest pojedynczym &amp;lt;tt&amp;gt;=&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;==&amp;lt;/tt&amp;gt; oznacza warunek równości. &amp;lt;tt&amp;gt;!=&amp;lt;/tt&amp;gt; oznacza warunek nierówności. Operator iloczyn logiczny przedstawia się &amp;lt;tt&amp;gt;&amp;amp;&amp;amp;&amp;lt;/tt&amp;gt;, a suma logiczna &amp;lt;tt&amp;gt;||&amp;lt;/tt&amp;gt;. Pojedyncze &amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt; i &amp;lt;tt&amp;gt;|&amp;lt;/tt&amp;gt; oznaczają te same operacje bitowe.&lt;br /&gt;
&lt;br /&gt;
Wyrażenie warunkowe jest następującej postaci:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
if (warunek){&lt;br /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
}&lt;br /&gt;
else{&lt;br /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Pętle====&lt;br /&gt;
=====Pętla &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt;=====&lt;br /&gt;
Wróć do poprzedniego zadania. O ile łatwiejsze byłoby, gdyby można było skorzystać z pętli. Pętla &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt; ma następującą konstrukcję:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
while(WARUNEK){&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Przy każdym wykonaniu pętli kompilator sprawdza, czy warunek jest&lt;br /&gt;
prawdziwy. Jeżeli warunek jest fałszywy przechodzi do następnej po&lt;br /&gt;
pętli &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt; instrukcji. Jeżeli warunek jest prawdziwy,&lt;br /&gt;
wykonuje instrukcje wewnątrz pętli jeszcze raz.&lt;br /&gt;
======Zadanie 1======&lt;br /&gt;
Zwiększ zmienną &amp;lt;tt&amp;gt;licznik&amp;lt;/tt&amp;gt; o 4, korzystając z pętli &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt; i wypisz wynik końcowy.&lt;br /&gt;
======Zadanie 2======&lt;br /&gt;
Napisz program wypisujący pięć kolejnych wyrazów ciągu &amp;lt;math&amp;gt;\frac{1}{i^2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
======Zadanie 3======&lt;br /&gt;
Napisz program dodający pierwsze dziesięć wyrazów ciągu &amp;lt;math&amp;gt;\frac{1}{i^2}&amp;lt;/math&amp;gt; od początku i&lt;br /&gt;
od końca.&lt;br /&gt;
=====Pętla &amp;lt;tt&amp;gt;for&amp;lt;/tt&amp;gt;=====&lt;br /&gt;
O ile wygodniej byłoby skorzystać z pętli &amp;lt;tt&amp;gt;for&amp;lt;/tt&amp;gt;. Umożliwia ona wpisanie ustawiania zmiennej, sprawdzania warunku i operacji na zmiennej (zwykle zwiększenia bądź zmniejszenia zmiennej, która jest ustawiana i której warunek jest sprawdzany) w jednej linijce co często zwiększa (lub wręcz przeciwnie) czytelność kodu. Instrukcję for stosuje się w następujący sposób:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
 for (ustawienie; warunek; operacja) {&lt;br /&gt;
   /* instrukcje do wykonania w pętli */&lt;br /&gt;
 }&lt;br /&gt;
 /* dalsze instrukcje */&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Pętla &amp;lt;tt&amp;gt;for&amp;lt;/tt&amp;gt; jest w języku &amp;lt;tt&amp;gt;C&amp;lt;/tt&amp;gt; szalenie wygodną i elastyczną konstrukcją, mimo że na pierwszy rzut oka nie sprawia takiego wrażenia.&lt;br /&gt;
&lt;br /&gt;
Przyjrzyjmy się raz jeszcze jej konstrukcji:&lt;br /&gt;
* ustawienie &amp;amp;mdash; jest to instrukcja, która będzie wykonana przed pierwszym przebiegiem pętli. Zwykle jest to inicjalizacja zmiennej bądź zmiennych, która będzie służyła jako &amp;quot;licznik&amp;quot; przebiegów pętli,&lt;br /&gt;
* warunek &amp;amp;mdash; jest warunkiem zakończenia pętli. Pętla wykonuje się tak długo, jak prawdziwy jest ten warunekm&lt;br /&gt;
* operacja &amp;amp;mdash; jest to instrukcja, która wykonywana będzie '''po''' każdym przejściu pętli. Zamieszczone są tu instrukcje, które zwiększają licznik o odpowiednią wartość.&lt;br /&gt;
&lt;br /&gt;
Poszczególne instrukcje składające się na ustawienie, warunek i operację, oddzielone są od siebie przecinkiem. Samo ustawienie oddzielone jest od warunku średnikiem, tak samo, jak warunek od ustawienia i operacji.&lt;br /&gt;
&lt;br /&gt;
Jeżeli wewnątrz pętli nie ma żadnych instrukcji '''continue''' (opisanych niżej) to jest ona równoważna z:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   wyrażenie1;&lt;br /&gt;
   while (wyrażenie2) {&lt;br /&gt;
     /* instrukcje do wykonania w pętli */&lt;br /&gt;
     wyrażenie3;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 /* dalsze instrukcje */&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
======Zadanie======&lt;br /&gt;
Przepisz rozwiązania zadania na pętlę &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt; tak, żeby korzystały z pętli &amp;lt;tt&amp;gt;for&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Zastanów się, czy możesz pętle sformuować tak, żeby wewnątrz niej nie było żadnej instrukcji.&lt;br /&gt;
====Pętla &amp;lt;tt&amp;gt;do...while&amp;lt;/tt&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
===Zadania===&lt;br /&gt;
===Wskaźniki i tablice===&lt;br /&gt;
&lt;br /&gt;
===Problem wejścia/wyjścia===&lt;br /&gt;
===Funkcje===&lt;/div&gt;</summary>
		<author><name>Jarekz</name></author>
		
	</entry>
</feed>