Kurs programowania ( Język C )
    Zaloguj FAQ  •  Szukaj    


Obecny czas: 08 Lut 2012, 13:07

Pomysł na Biznes to tylko krok do Twojego sukcesu. Sprawdź jak łatwo zostać milionerem.




Napisz nowy temat Odpowiedz  [ 10 posty(ów) ] 
Autor Wiadomość
 
PostWysłany: 17 Paź 2007, 14:50 
Offline
Fachowiec
Fachowiec
Awatar użytkownika

Dołączenie: 29 Wrz 2007, 21:26
Posty: 443
Miejscowość: Bydgoszcz
A więc zaczynamy.

Borland C download: http://konto.bydgoszcz.wsinf.edu.pl/~grad/inne/bc.zip

Polecam ściągnąć plik i przepisywać programy, duŻo lepiej się tak uczyć (w praktyce).

Przypomnienie "hello world"

#include<stdio.h>
int main(void)
{
printf("Hello World !!!");
return 0;
}


Następny program. Jest to prosty programik, który wczytuje zmienną a i b, następnie je sumuje i wyświetla wynik na ekranie.

#include<stdio.h>
int a, b;

int main(void)
{
printf("Podaj a: ");
scanf("%d", &a);
printf("Podaj b: ");
scanf("%d", &b);

printf("Suma a i b wynosi %d", a+b);

return 0;
}

Opis:
W programiku "hello world" poznaliśmy polecenie printf (wyświetlanie) i zmienną main (podstawę programu).

W tym programiku doszły:

deklaracja zmiennych a i b - "int a, b;". Integer (int), czyli liczba całkowita. W dalszej części poznamy inne typy deklaracji zmiennych. Zmienne muszą mieć swój "prototyp", Żeby kompilator mógł je rozpoznać i zaszeregować do odpowiedniej grupy w dalszej części programu.

polecenie "scanf" - to polecenie zczytuje, w tym przypadku cyfrę z klawiatury, tzn. po wyświetleniu tekstu "Podaj a:" program zatrzymuje się i czeka na reakcję uŻytkownika. W tym przypadku czeka na podanie liczby całkowitej (integer, w skrócie int) i zapamiętuje ją w zmiennej "a", a następnie robi to samo ze zmienną "b". %d w poleceniu scanf, znaczy, Że ma być to liczba całkowita.

No i na końcu polecenie "printf", które w tym przypadku jest troszeczkę bardziej rozbudowane niŻ w "hello world". A mianowicie równieŻ zawiera zwrot %d. W tym przypadku zwrot ten umiejscowiony jest w miejscu, gdzie ma się wyświetlić wynik, który równieŻ jest liczbą całkowitą (świadczy o tym litera "d").

W cudzysłowiu znajduje się zawsze tekst, który ma się wyświetlić na ekranie. Po zamknięciu cudzysłowia, po przecinku, znajduje się działanie (a+b), do którego odnosi się zwrot "%d".

Na koniec dodam, Żebyście pamiętali o składni programu, czyli kaŻdy wers kończy się średnikiem, z kilkoma wyjątkami oczywiście (jak narazie jest to deklaracja zmiennej "main" i deklaracja biblioteki <stdio.h>). Brak średnika lub błąd w pisowni jakiegoś polecenia powoduje wykrzaczenie się programu, dlatego uwaŻajcie.

Dalsza część kursu będzie kontynuowana juŻ w tym temacie. Wszelkie pytania i wątpliwości proszę kierować tutaj. Niedługo następny programik, oczywiście juŻ bardziej rozwinięty.

[ Dodano: 2007-10-18, 17:41 ]
No dobra, widzę, Że pytań nie ma (albo zainteresowania :mrgreen: ), więc moŻemy iść dalej. Dodam jeszcze, Że Żeby uruchomić Borland C, wchodzimy w borlandc\bin\bcw.exe. Na początku programik, a potem omówienie.


#include<stdio.h>

int wybor;
float a, b;

int main(void)
{

printf("Podaj a: ");
scanf("%f", &a);
printf("Podaj b: ");
scanf("%f", &b);

printf("Wybierz dzialanie:\n1-Dodawanie\n2-Odejmowanie\n3-Mnozenie\n4-Dzielenie\n");
scanf("%d", &wybor);

if(wybor==1) printf("Suma a(%f) i b(%f) wynosi %f", a, b, a+b);
if(wybor==2) printf("Roznica a(%f) i b(%f) wynosi %f", a, b, a-b);
if(wybor==3) printf("Iloczyn a(%f) i b(%f) wynosi %f", a, b, a*b);
if(wybor==4) printf("Iloraz a(%f) i b(%f) wynosi %f",a, b, a/b);


return 0;
}

Co doszło: instrukcja "if", deklaracja "float", "\n", no i reszta działań na zmiennych.

1. Deklaracja "float" - definiuje zmienne jako zmiennoprzecinkowe, czyli moŻemy juŻ wpisywać cyfry po przecinku. W języku C jak i w większości języków, przecinek jest zapisywany jako kropka (.). Domyślnie po przecinku wyświetlane jest 6 zer, później nauczymy się ograniczać liczbę zer wyświetlanych po przecinku.

2. \n - jest to przejście do następnego wiersza. Kilka przykładów:

JeŻeli napiszemy
printf("Hello");
printf("World");
wyświetlone zostanie
Hello World

JeŻeli napiszemy
printf("Hello\n");
printf("World");
wyświetlone zostanie
Hello
World

JeŻeli napiszemy
Printf("Hello\nWorld");
wyświetlone zostanie
Hello
World

Chyba zrozumiałe.

3. Działania
a+b - suma
a-b - róŻnica
a*b - iloczyn
a/b - iloraz

To teŻ chyba jasne

4. Instrukcja if

Budowa:
if(a==1) - jeŻeli zmiennej "a" przypisana jest 1, wtedy wykonaj instrukcję
if(a==2) - jeŻeli zmiennej "a" przypisana jest 2, wtedy wykonaj instrukcję
if(a==3) - i tak dalej

JeŻeli instrukcja if zawiera dwa lub więcej wierszy, wtedy naleŻy zastosować klamrę ({ }).

if(warunek)
{
polecenie1
polecenie2
}

JeŻeli instrukcja if zawiera tylko jeden wiersz (czyli jedno polecenie), nie trzeba stosować klamry. ZauwaŻcie teŻ, Że po "if(warunek)" nie wpisujemy średnika.

[ Dodano: 2007-10-18, 17:44 ]
MoŻe ktoś napisze jakiś komentarz, refleksję, pytanie, spostrzeŻenie. Następny programik napiszę w oddzielnym poście, bo juŻ za duŻo tego w jednym i się robi mało czytelnie. Poza tym nie mogę edytować posta.

Z góry dzięki.

[ Dodano: 2007-10-19, 17:24 ]
(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)
---------------------------------------------------------------------------------------------------------------------------------------------------------
No dobra, znalazłem sposób na oddzielenie lekcji he he. No to polecimy następnym programikiem, juŻ bardziej funkcjonalnym. Jest to oczywiście przeróbka poprzedniego.


#include<stdio.h>
#include<conio.h>

int wybor;
float a, b, suma, roznica, iloczyn, iloraz;

int main(void)
{
do
{
clrscr();
printf("Wybierz dzialanie:\n1-Dodawanie\n2-Odejmowanie\n3-Mnozenie\n4-Dzielenie\n5-Koniec\n");
scanf("%d", &wybor);

if(wybor!=5)
{

clrscr();
printf("Podaj a: ");
scanf("%f", &a);
printf("Podaj b: ");
scanf("%f", &b);

suma=a+b;
roznica=a-b;
iloczyn=a*b;
iloraz=a/b;

clrscr();
if(wybor==1) printf("Suma a(%.2f) i b(%.2f) wynosi %.2f", a, b, suma);
if(wybor==2) printf("Roznica a(%.2f) i b(%.2f) wynosi %.2f", a, b, roznica);
if(wybor==3) printf("Iloczyn a(%.2f) i b(%.2f) wynosi %.2f", a, b, iloczyn);
if(wybor==4) printf("Iloraz a(%.2f) i b(%.2f) wynosi %.2f",a, b, iloraz);

getchar();
getchar();

}

}while(wybor!=5);


clrscr();
printf("Koniec!!!");

return 0;
}

Czyli tak, co nowego: biblioteka <conio.h>, pętla do while, nadawanie wartości zmiennym, clrscr(), getchar().

1. <conio.h> - jest to biblioteka, która zawiera prototypy takich funkcji jak clrscr(), czy getchar().

2. Nadawanie wartości zmiennym - czyli zamiast wpisywania działań na bieŻąco, moŻna zdefiniować np zmienną "suma", której wynikiem jest suma a i b. Potem w miejsce gdzie naleŻy wpisać a+b, moŻna wpisać: suma.

3. clrscr() - ta funkcja "czyści" ekran przed zastosowaniem instrukcji, która znajduje się bezpośrednio pod funkcją.

4. getchar() - funkcja "Żąda" wciśnięcia dowolnego klawisza, zanim program ruszy dalej.

5. pętla do...while - no i się zaczynają schody.

do
{
dzialanie
}while(warunek);

czyli, na przykładzie naszego programu wygląda to tak. Program powtarza działanie z pętli dopuki z naszego małego interface'u wybieramy 1, 2, 3, 4. Wtedy pętla się nie skończy, bo spełnia warunek na końcu pętli ( while(wybor!=5), czyli wybor jest róŻny od 5). JeŻeli natomiast wybierzemy z interface'u numer 5, czyli nie spełnimy warunku, pętla się zakończy i program przejdzie do dalszej części. W naszym przypadku program, po zakończeniu pętli, wyświetla na ekranie napis: koniec!!!.

Trzeba zawsze pamiętać, Żeby zapewnić pętli wyjście, bo program się wykrzaczy, albo nigdy się nie zakończy.

Proszę równieŻ zwrócić uwagę na to, Że po interface'ie znajduje się warunek if(wybor!=5). Gdyby nie było tego warunku, to po wybraniu z menu 5, czyli końca, program najpierw spyta o liczbę a i b, a dopiero potem się zakończy. MoŻecie spróbować usunąć ten warunek i zobaczyć co się stanie. Program się nie wykrzaczy.

Narazie wszystko. Jak zwykle proszę o pytania, spostrzeŻenia. Jak lecę z tym za szybko, to teŻ napiszcie. MoŻecie równieŻ wkleić tu swoje programiki i opisać jak działają.

(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)
---------------------------------------------------------------------------------------------------------------------------------------------------------


 Profil E-mail  
    unknownunknown

   
 
PostWysłany: 20 Paź 2007, 14:17 
Offline
Specjalista
Specjalista
Awatar użytkownika

Dołączenie: 06 Lut 2007, 12:01
Posty: 918
Miejscowość: P
Raziel napisał(a):
No dobra, widzę, Że pytań nie ma (albo zainteresowania )

Zainteresowanhie jest :mrgreen: ja che sie nauczyć tego, i od dziś zaczynam.
Ale jest teŻ pytanie, przepisałem pierwszy program (hello word) i nie działa :-/ wciskam Ctrl+F9 i pokazują mi sie dwa błędy:
1. "Unabel to open include file 'STUDIO.H' "
2. "Function 'printf' should have a prototype"

Czemu mi sie pokazują te błędy, co robie nie tak ? przepisałem program dokładnie tak jak go Ty napisałeś.


 Profil E-mail  
    unknownunknown
 
PostWysłany: 20 Paź 2007, 17:57 
Offline
Fachowiec
Fachowiec
Awatar użytkownika

Dołączenie: 29 Wrz 2007, 21:26
Posty: 443
Miejscowość: Bydgoszcz
1. Napisałeś <studio.h>, a powinieneś napisać <stdio.h> (na początku teŻ robiłem ten błąd)
2. JeŻeli biblioteka <stdio.h> jest źle zdefiniowana to printf nie ma prototypu, więc poprawne wpisanie biblioteki załatwia sprawę.


 Profil E-mail  
    unknownunknown
 
PostWysłany: 20 Paź 2007, 19:42 
Offline
Specjalista
Specjalista
Awatar użytkownika

Dołączenie: 06 Lut 2007, 12:01
Posty: 918
Miejscowość: P
Aha, dzięki wielkie, jedna literka a tyle potrafi namiszać :-P


 Profil E-mail  
    unknownunknown
 
PostWysłany: 21 Paź 2007, 18:09 
Offline
Fachowiec
Fachowiec
Awatar użytkownika

Dołączenie: 29 Wrz 2007, 21:26
Posty: 443
Miejscowość: Bydgoszcz
#include<stdio.h>
#include<conio.h>
#define wielkosc 100

float tablica[wielkosc];
int wybor, a, rozmiar;

int main(void)
{
printf("Ile pozycji ma miec tablica?\n");
scanf("%d", &rozmiar);

do
{
clrscr();
printf("Wybierz dzialanie:\n1-Wczytaj dane do tablicy\n2-Wyswietl dane z tablicy\n3-Koniec!!!\n");
scanf("%d", &wybor);

if(wybor!=3)
{

if(wybor==1)
{
clrscr();
printf("Tablica1: Zbior liczb\n");
for(a=1; a <= rozmiar; a++)
{
printf("%d pozycja = ", a);
scanf("%f", &tablica[a]);
}
}

clrscr();
if(wybor==2)
{
printf("Tablica1: Zbior liczb\n");
for(a=1; a<= rozmiar; a++) printf("%d pozycja = %.2f\n", a, tablica[a]);
getchar();
getchar();
}

}

}while(wybor!=3);

clrscr();
printf("Koniec!!!");

return 0;
}

W tym programiku poznajemy pętlę "for", polecenie #define, działania na tablicach, ograniczenie liczby float do 2 miejsc po przecinku.

Na początek opiszę działanie programu, bo chyba rzeczywiście stało się to juŻ dosyć skomplikowane.

Na samym początku program prosi o podanie ilości pozycji, które ma posiadać tablica. Potem wyświetla się mały interface. Mamy do wyboru 1. Wczytaj dane do tablicy (wczytuje dane do kaŻdej pozycji tablicy), 2. Wyświetl dane z tablicy (oczywiście wyświetla pozycje tablicy) 3. Koniec (chyba jasne). Samo działanie w miarę proste. A teraz opis kodu źródłowego:

1. #define - definiuje wartość zaraz pod deklaracją biblioteki.

2. float tablica[wielkość] - jest to tablica, która posiada maksymalnie tyle pozycji ile wynosi wielkość (w naszym przypadku 100). Jak uruchomimy program musimy podać rozmiar tablicy, jeŻeli podamy rozmiar na przykład 5, to tablica będzie miała rozmiar 5, natomiast jak podamy rozmiar 150, to i tak wczyta nam tylko 100 cyfr.

3. %.2f - tak się zapisuje ograniczenie liczby zmiennoprzecinkowej float do 2 miejsc po przecinku.

4. Pętla for - najtrudniejsze na koniec. Pętle mają to do siebie, Że się powtarzają aŻ do momentu spełnienia określonego warunku. Akurat ta pętla ma największą tendencję do wykrzaczania się, bo z reguły przerabia się sama bez naszego udziału, więc nie mamy moŻliwości wyłączenia programu krzyŻykiem w prawym górnym rogu, kiedy program się zapętli.

for(a=1 ; a <=rozmiar ; a++) no to teraz napiszę o co tu chodzi.

a = 1 - oznacza to, Że pętla zaczyna się z wartością zmiennej a równej 1. MoŻemy równie dobrze zacząć odliczanie od 0, albo od 100.

a <= rozmiar - to zapewnia wyjście z pętli. Pętla będzie się powtarzać aŻ do momentu, kiedy wartość zmiennej a będzie mniejsza lub równa wartości zmiennej "rozmiar". JeŻeli zmienna a będzie większa od zmiennej "rozmiar", program się zakończy. Zamiast słowa "rozmiar" moŻemy tu wpisać na przykład jakąś cyfrę.

a++ - znaczy to tyle samo co "a = a + 1", tyle, Że inaczej zapisane. Ta część dodaje wartość 1 do a, zawsze wtedy, kiedy pętla się kończy. Wtedy znowu się zaczyna juŻ z a podniesionym o 1. AŻ do momentu, kiedy a będzie większe od zmiennej rozmiar (w naszym przypadku).

Pętla ta działa tak, Że zaczyna się jak a jest równe 1, czyli od pierwszej pozycji tablicy. Wczytuje cyfrę w zmiennej tablica[a], czyli tablica[1]. Potem dodaje 1 do a i zaczyna się na nowo. Wtedy a jest równe 2, czyli druga pozycja tablicy. Wczytuje cyfrę w zmiennej tablica[a], czyli juŻ teraz tablica[2]. No i znowu dodaje 1 do a, czyli juŻ w tym momencie a = 3. I tak dalej. AŻ do momentu, kiedy a nie będzie większe od zmiennej rozmiar.

Mam nadzieję, Że nie zamotałem za bardzo i Że coś z tego zrozumiecie. Pytania, spostrzeŻenia, wnioski, zaŻalenia, skargi jak zwykle poniŻej.
(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


 Profil E-mail  
    unknownunknown
 
PostWysłany: 21 Paź 2007, 22:39 
Offline
Specjalista
Specjalista
Awatar użytkownika

Dołączenie: 06 Lut 2007, 12:01
Posty: 918
Miejscowość: P
Raziel napisał(a):
Jak zwykle proszę o pytania, spostrzeŻenia. Jak lecę z tym za szybko, to teŻ napiszcie.

No więc tak, spostrzeŻenia: C jest trudniejszy niŻ TP :-P .
Nie lecisz z tym za szybko, ja sie wyrabiam :-P


 Profil E-mail  
    unknownunknown
 
PostWysłany: 07 Kwi 2010, 18:00 
Offline
Lamer
Lamer

Dołączenie: 07 Kwi 2010, 17:58
Posty: 1
Dlaczego w tym kodzie

#include<stdio.h>
int main(void)
{
printf("Hello World !!!");
return 0;
}

jak klikne na RUN to nic się nie wyświetla tylko wychodzi z programu?


 Profil E-mail  
    WindowsXPOpera
 
PostWysłany: 17 Kwi 2010, 08:28 
Offline
Admin
Awatar użytkownika

Dołączenie: 11 Paź 2006, 20:54
Posty: 6040
Miejscowość: z repozytorium
Pochwały: 20
1) znacznik "code" to zaginął na łączach?
2) bo to program konsolowy


 Profil  
    UbuntuFirefox
 
PostWysłany: 05 Maj 2010, 18:27 
Offline

Dołączenie: 28 Sie 2009, 07:14
Posty: 43
Raziel mam prośbę czy mógłbyś poprawić link do Borland C :!:


 Profil E-mail  
    Windows7MSIE7
 
PostWysłany: 11 Maj 2010, 06:52 
Offline
Admin
Awatar użytkownika

Dołączenie: 11 Paź 2006, 20:54
Posty: 6040
Miejscowość: z repozytorium
Pochwały: 20
http://www.embarcadero.com.pl/produkty/cbuilder/


 Profil  
    UbuntuFirefox
Wyświetl posty z poprzednich:  Sortuj według  
Napisz nowy temat Odpowiedz  [ 10 posty(ów) ] 

Ciekawe tematy: Biznes reklamowy:D oraz Logistyka światowych przedsiębiorstw.






Suknie Ślubne na tę wyjątkową chwilę. Zapraszamy!

phpBB skin developed by: John Olson Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group