Elementarne wiadomości o języku C

Podobne dokumenty
1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Języki i metodyka programowania. Wprowadzenie do języka C

2 Przygotował: mgr inż. Maciej Lasota

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Zmienne, stałe i operatory

Podstawy programowania skrót z wykładów:

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Programowania C++

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Programowanie strukturalne i obiektowe

Podstawy Programowania Podstawowa składnia języka C++

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Programowanie komputerowe. Zajęcia 1

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Podstawy programowania C. dr. Krystyna Łapin

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Wstęp do Programowania, laboratorium 02

Część 4 życie programu

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Funkcja (podprogram) void

Metodyki i Techniki Programowania MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Podstawy programowania w języku C

Struktura pliku projektu Console Application

Programowanie w języku Python. Grażyna Koba

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Wykład 2 Składnia języka C# (cz. 1)

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

IX. Wskaźniki.(3 godz.)

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

1. Wprowadzanie danych z klawiatury funkcja scanf

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

tablica: dane_liczbowe

Ćwiczenie 1. Wprowadzenie do programu Octave

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Języki i metody programowania. Omówienie języków C, C++ i Java

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Programowanie strukturalne język C - wprowadzenie

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Podstawy programowania - 1

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

( wykł. dr Marek Piasecki )

Proces tworzenia programu:

Wstęp do programowania

Umieszczanie kodu. kod skryptu

Metody numeryczne Laboratorium 2

Co nie powinno być umieszczane w plikach nagłówkowych:

lekcja 8a Gry komputerowe MasterMind

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

KURS C/C++ WYKŁAD 1. Pierwszy program

Język C, tablice i funkcje (laboratorium)

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

4. Funkcje. Przykłady

Język C, tablice i funkcje (laboratorium, EE1-DI)

Wprowadzenie do języka Java

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Język ludzki kod maszynowy

Elementy języków programowania

Języki programowania - podstawy

Podstawy programowania (1)

Ćwiczenie 1. Wprowadzenie do programu Octave

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Mikrokontroler ATmega32. Język symboliczny

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja;

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Powtórka algorytmów. Wprowadzenie do języka Java.

Język C - podstawowe informacje

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Język C zajęcia nr 5

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Wykład 1

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Transkrypt:

Elementarne wiadomości o języku C 1. Wprowadzenie Oprac.: Zbigniew Rudnicki Pierwszą wersję języka C opracował Dennis Ritchie w roku 1972 (wykorzystując niektóre rozwiazania z opracowanych w latach1967-1970 języków BCPL oraz B). Pełny opis został zawarty w książce Briana W. Kernighana i Dennisa M. Ritchie: "The C programming language" w roku 1978. Język C opracowano głównie dla potrzeb programistów tworzących systemy operacyjne (w nim napisano w r.1973 system UNIX) i dlatego jest znacznie trudniejszy i bardziej złożony niż np. BASIC - przeznaczony dla początkujących, czy Matlab przeznaczony dla szerokich rzesz użytkowników. Dalszy rozwój języka C doprowadził m.in. do ogłoszenia w roku 1988 standardu języka ANSI C. W latach osiemdziesiątych Bjarne Stroustrup opracował znacznie rozszerzony, obiektowy i dostosowany do graficznego interfejsu język C++ w którym m.in. opracowano system Ms Windows. Poniższy opis jest bardzo okrojony i uproszczony zarówno ze względu na znaczną trudnośc bardziej zaawansowanych środków języka jak przewidziany niewielki udział tego języka w aktualnie skonstruowanym programie nauczania oraz preferowaniem Matlaba. 1.1. Struktura programu Program w języku C składa się z funkcji( 1 ). Funkcja jest wydzieloną częścią programu, realizującą pewne zadanie. Główny program musi mieć postać funkcji o nazwie main() - od niej rozpoczyna się wykonanie programu. Instrukcje składające się na treść funkcji zwaną jej "ciałem" umieszcza się w nawiasach klamrowych. Nawiasy klamrowe są także używane wszędzie tam gdzie dwie lub więcej instrukcji ma utworzyć blok, na przykład wewnątrz pętli lub w opcjach instrukcji warunkowej. Dla ilustracji podaję najprostszy przykład programu: /* Program wyświetla napis: WITAM */ #include <stdio.h> main() printf("witam \n"); Pozostałe objaśnienia: W dowolnych miejscach mogą być umieszczane komentarze ujęte między znakami /*... */ Na początku programu niezbędne są zazwyczaj tak zwane "dyrektywy preprocesora" rozpoczynające się znakiem #. Dyrektywa #include pozwala wstawić zawartość określonego pliku (w tym przypadku stdio.h), dokładnie w miejscu tej dyrektywy. W szczególności wstawiane są podprogramy. Plik stdio.h to tak zwany plik nagłówkowy (header - o czym świadczy rozszerzenie.h). Zawiera on funkcje obsługi standardowego ("std") wejścia i wyjścia ("io" = input-otput) a wśród nich definicję funkcji printf(). Funkcja printf() kopiuje na ekran znaki zawarte między cudzysłowami " ", za wyjątkiem sekwencji znaków specjalnych poprzedzonych znakiem backslash "\" i nazywanych "sekwencjami 1 ) W innych językach program składa się z podprogramów wśród których jako funkcje definiowane są te które zwracają pojedynczą wartość (tak jest np. w językach BASIC oraz FORTRAN) lub macierz (w Matlabie) a inne definiowane są jako procedury, które nie muszą dawać w wyniku wartości liczbowych. W języku C są tylko funkcje, dlatego wprowadzono typ void czyli "wartości których nie ma"

escape". Znak \n to polecenie zmiany linii - spowoduje, że kolejny wydruk (w tym przypadku na ekranie) pojawi się w następnej linii. Złożone programy składają się z wielu funkcji pełniących rolę podprogramów (zarówno funkcyjnych jak i proceduralnych). Oto kolejny przykład programu z objaśnieniami: Program ten wczytuje długość w metrach, przelicza ją na centymetry i milimetry i wyświetla na ekranie. Program kończy działanie po wprowadzeniu liczby ujemnej. #include <stdio.h> dołączenie pliku nagłówkowego stdio.h main () funkcja main() - to główny blok programu początek ciała funkcji main(), w nawiasach int metr, centymetr, milimetr; deklaracja typu zmiennych printf ( \n Podaj długość ); w nowej linii wyświetla napis "Podaj..." scanf ("%d",& metr); wczytanie wartości całkowitej ("%d") do zmiennej metr while (metr >=0) początek pętli while() dla dodatnich wart. metr ciało pętli umieszcza się w nawiasach centymetr = 100*metr; nadanie wartości zmiennej centymetr milimetr=1000*metr; nadanie wartości zmiennej milimetr printf ("\n %d w metrach\n", metr); wyświetlenie wyniku w metrach printf ("%d w centymetrach \n", centymetr); wyświetlenie wyniku w centymetrach printf ("%d w milimetrach \n", milimetr); wyświetlenie wyniku w milimetrach printf ("Podaj następną długość"); wyświetlenie napisu: "Podaj następną..." scanf ("%d", &metr); wczytanie wartości do zmiennej metr koniec pętli while printf (" *** koniec programu *** \n"); wyświetlenie napisu: "***koniec programu.." return (0) funkcja main() zwraca zero koniec ciała funkcji main() 1.2. Podstawowe pliki nagłówkowe Pliki nagłówkowe zawierają deklaracje (tzw. prototypy) różnorodnych funkcji z bibliotek standardowych niezbędnych dla działania konkretnego programu. Najczęściej dołączane dyrektywą #include pliki nagłówkowe to: stdio.h, conio.h, stdlib.h, math.h, float.h 1.3. Typy. Deklaracje typów zmiennych Wszystkie zmienne i struktury danych muszą być zadeklarowane na początku tej funkcji w której są używane. Omówimy tylko deklaracje zmiennych prostych oraz tablic. 1.3.1. Zmienne proste i ich deklarowanie Deklaracja zmiennych prostych składa się z nazwy typu i listy zmiennych: lista zmiennych nazwa_typu zmienna, zmienna,...zmienna; Przykład: int metr, centymetr, milimetr; deklaracja ta rezerwuje obszary pomięci dla trzech zmiennych: metr, centymetr, milimetr; typu całkowitego - o czym świadczy nazwa typu: int. 2

Oprócz konieczności zadeklarowania trzeba jeszcze dobrać typy odpowiednie do roli zmiennych i operacji w jakich mają brać udział. Na przykład wskaźniki (indeksy) elementów wektorów i macierzy muszą być typu całkowitego, a zmienne dla których ma sens dzielenie, pierwiastkowanie i inne działania dające wynik niecałkowity - muszą być typu rzeczywistego. W języku C są cztery podstawowe proste typy zmiennych o nazwach: char - znak, int - wartości całkowite, float oraz double - wartości rzeczywiste void - typ bezwartościowy (to znaczy brak zmiennej tam gdzie teoretycznie powinna być, na przykład brak argumentu funkcji lub jej rezultatu) Typy te mogą być zmodyfikowane przez poprzedzenie nazwy typu (w deklaracji) jednym ze słów: unsigned - bez znaku; short - krótki long - długi Wymienione typy scharakteryzowano w tabeli: Nazwa typu Typ Zakres Bajtów void brak wartości Całkowite używane dla znaków drukarskich: char całkowity -128...127 1 unsigned char całkowity 0...255 1 Całkowite int całkowity -2^31...2^31-1 4 (lub 2) unsigned int całkowity 0...2^32 4 (lub 2) short int całkowity -32768...32767 2 unsigned short int całkowity 0...65535 2 long int całkowity -2^31...2^31-1 4 unsigned long int całkowity 0...2^32 4 Rzeczywiste float rzeczywisty 6 znaków precyzji 4 double rzeczywisty 10 znaków precyzji 8 1.3.2. Tablice i deklaracje tablic Tablica jednowymiarowa czyli wektor jest zbiorem ponumerowanych elementów jednakowego typu. Numer pierwszego elementu w tablicy jest zawsze równy zero. Tablice muszą - tak jak inne zmienne - być deklarowane. Deklaracja tablicy zawiera: nazwę typu listę nazw tablic z ich wymiarami - czyli po każdej nazwie w nawiasach prostokątnych muszą być podane maksymalne przewidywane wartości wskaźników (zwanych też indeksami lub numerami elementów). Przykład deklaracji dwu tablic o nazwach "a" oraz "wektor": int a[5], wektor[10]; Tablicę można także inicjować podając w deklaracji po jej nazwie i znaku równości listę wartości oddzielonych przecinkami i zamkniętych w nawiasach klamrowych. Przykład: int a1[5] = 1, 5, 3, 4, 2; W programach posługujemy się elementami tablic określanymi przez nazwę tablicy oraz indeksy ujęte w nawiasy kwadratowe. Jako indeks czyli numer elementu może służyć 3

stała całkowita, zmienna typu całkowitego lub dowolne wyrażenie, którego wynikiem jest liczba całkowita. Przykłady: a[5] = 10; b[i+1] = b[i]*2; Możliwe jest zadeklarowanie tablicy tablic (odpowiadającej tablicy dwu- lub więcej wymiarowej): int a[10][15]; Powyższa instrukcja deklaruje 10-cio elementową tablicę a, której polami są piętnasto elementowe tablice zmiennych typu int. Przy odwoływaniu się do elementów tablicy najpierw podaje się numer elementu pierwszej tablicy, potem numer elementu wewnątrz tej tablicy: a[4][5] = 10; 1.4. Stałe, zmienne, wyrażenia arytmetyczne, instrukcje przypisania Uwaga: duże i małe litery w języku C są rozróżniane! 1.4.1. Stałe Deklarowanie stałych jest możliwe przy pomocy dyrektyw #define w których podaje się nazwę stałej i oddzieloną odstępem jej wartość. Np.: # define NUMBER 3.15 # define NUMBER1 3.0 # define CHARACTER A # define STRING ABC 1.4.2. Identyfikatory (nazwy) Jeżeli piszemy program musimy wybrać nazwy dla zmiennych, funkcji i innych obiektów. Identyfikator w C musi spełniać następujące wymagania: - musi się zaczynać od litery (A do Z, a do z) lub też od znaku podkreślenia _; - musi się składać z liter (A do Z, a do z), cyfr lub też od znaków podkreślenia _; - nie może być słowem kluczowym (Słowo kluczowe to takie słowo jak int czy while, które ma specjalne znaczenie). 1.4.3. Operatory arytmetyczne Priorytet Operator Uwagi 3 - jednoargumentowy - 3 + jednoargumentowy + 2 * mnożenie 2 / dzielenie (rzeczywiste lub całkowite) 2 % reszta z dzielenia 1 - odejmowanie 1 + dodawanie ++ oraz -- objaśniono poniżej Operator ++ oraz - - Operator ++ użyty jako przyrostek to tzw. postinkrementacja, natomiast użyty jako przedrostek to tzw. preinkrementacja. Różnicę w ich działaniu pokazuje przykład: Załóżmy, że zmienna a ma wartość pięć i wykonujemy taką oto instrukcję: c = a++; 4

W takim przypadku zmiennej c zostanie przypisana wartość zmiennej a (czyli pięć) i dopiero po tym przypisaniu zmienna a zostanie zwiększona o jeden. Czyli w efekcie po wykonaniu tej instrukcji zmienna c będzie zawierała wartość pięć, natomiast zmienna a będzie równa sześć. Teraz przy założeniach takich samych jak powyżej wykonujemy taką instrukcję: c = ++a; W takim przypadku najpierw zmienna a zostanie zwiększona o jeden (czyli teraz będzie równa sześć) i następnie ta wartość będzie przypisana zmiennej c. Czyli w efekcie po wykonaniu tej instrukcji obie zmienne będą równe sześć. Analogicznie działa operator -- tylko zamiast zwiększania, zmniejsza wartość o jeden. 1.5. Funkcje wejścia i wyjście (liczbowe i tekstowe) Podstawowymi funkcjami dla wyprowadzania wyników są printf oraz fprintf. Funkcja printf ma najczęściej ogólną postać następującą: printf("format", lista_zmiennych) gdzie: lista_zmiennych - to ciąg nazw zmiennych lub elementów tablic pooddzielanych przecinkami "format" - to ciąg znaków umieszczony między cudzysłowami i zawierający: dowolne teksty kopiowane na ekran zaczynające się od znaku backslash "\" - sekwencje znaków specjalnych (m.in. sterujących drukowaniem), nazywane "sekwencjami escape". W szczególności znak \n to polecenie zmiany linii - spowoduje, że kolejny wydruk pojawi się w następnej linii. zaczynające się od znaku "%" opisy formatów w jakich mają być wyprowadzane wartości zmiennych Na przykładach poniżej objaśniono najprostsze i najczęściej używane formaty: %d - dla wartości typu całkowitego %6d - dla wartości typu całkowitego, która ma zająć co najmniej 6 znaków %f - dla wartości typu rzeczywistego (typ float) %8.4f - dla wartości typu rzeczywistego (typ float), która ma zająć co najmniej 8 znakówa w tym 4 miejsca po kropce dziesiętnej (nie przecinek tylko kropka zwyczajem anglosaskim) 1.6. Wyrażenia logiczne i instrukcja warunkowa IF Operatory relacji: Operator Znaczenie == równe > większe >= większe lub równe < mniejsze <= mniejsze lub równe!= nierówne Instrukcja if jest stosowana by komputer mógł - zależnie spełnienia lub nie spełnienia określonego warunku - wybrać odpowiednią sekwencję operacji. Najprostsza z form instrukcji if: if (warunek) blok instrukcji; umożliwia wykonanie bloku instrukcji tylko wtedy gdy jest spełniony podany warunek. Warunek jest wyrażeniem logicznym i musi być zawarty w nawiasach okrągłych, a blok instrukcji jest ujęty w nawiasy klamrowe, które pomija się gdy blok składa się tylko z jednej instrukcji. 5

Najpierw komputer określa czy ma wartość logiczną "prawda" czy "fałsz". Jeżeli warunek ma wartość logiczną "prawda" to zostaje wykonany blok instrukcji i sterowanie przechodzi do instrukcji następnej. Druga forma instrukcji if realizuje wykonanie blok instrukcji 1 gdy podany warunek ma wartość "prawda" natomiast blok instrukcji 2 gdy ma wartość "fałsz": if (wyrażenie) blok instrukcji 1; else blok instrukcji 2; 1.7. Pętle 1.7.1. Pętla FOR for(początek; warunek; zmiana) instrukcje wielokrotnie wykonywane Przykład: for (fahr=0; fahr<=300; fahr=fahr+20) printf("temperatura w stopniach Fahrnheita %3d w St.Celsjusza %6.1f\n",fahr, (5.0/9.0)*(fahr-32)); Instrukcja continue Instrukcja continue może wystąpić tylko wewnątrz instrukcji pętli i powoduje przeskok do końca pętli czyli do sprawdzenia możliwości dalszego wykonywania (kontynuacji) pętli. Instrukcja break Instrukcja break może wystąpić tylko wewnątrz pętli i powoduje wyskoczenie z tej pętli. 1.7.2. Pętla WHILE while(warunek) instrukcje wielokrotnie wykonywane Pętla ta powtarza instrukcje zawarte w nawiasach klamrowych tak długo dopóki spełniony jest warunek. 6