Laboratorium z użyciem analizatora leksykalnego FLEX

Save this PDF as:
 WORD  PNG  TXT  JPG

Wielkość: px
Rozpocząć pokaz od strony:

Download "Laboratorium z użyciem analizatora leksykalnego FLEX"

Transkrypt

1 Laboratorium z użyciem analizatora leksykalnego FLEX Analizator leksykalny FLEX jest narzędziem służącym do tworzenia programów rozpoznających wzorce. FLEX na podstawie pliku wejściowego, za pomocą reguł i powiązanych z nimi akcji, tworzy program analizatora leksykalnego, który opiera się o maszynę stanów. Wynik działania tego programu jest zapisany w postaci kodu języka C, gdzie główna metoda rozpoczynająca działanie analizatora leksykalnego została nazwana yylex(). Analizator po pobraniu danych z wejścia dopasowuje wyrażenia regularne do podanych wzorców i wykonuje zdefiniowane dla nich akcje. Struktura pliku Plik podawany na wejście analizatora leksykalnego FLEX ma następującą postać: SEKCJA DEFINICJI SEKCJA REGUŁ SEKCJA KODU UŻYTKOWNIKA Przykłady najkrótszego programu, który przepisuje dane z wejścia na wyjście: %option noyywrap int main() Sekcja definicji Sekcja definicji zawiera deklaracje prostych nazwanych definicji, co ma za zadanie uprościć pisanie analizatora leksykalnego. Dodatkowo znajdują się tutaj definicję stanów analizatora. Składnia nazwanej definicji jest następująca: NAZWA DEFINICJA gdzie NAZWA jest dowolnym słowem, natomiast DEFINICJA jest zapisem wyrażenia regularnego. W sekcji reguł odwołujemy się do nazwanych definicji w następujący sposób: 1

2 NAZWA Przykłady nazwanych definicji: MAŁE [a-z]* CYFRY [0-9]? Jakikolwiek tekst nierozpoczynający się od pierwszego wiersza jak i wzięty w % % jest kopiowany bezpośrednio do pliku wyjściowego. Można również za pomocą bloku %top określić część tekstu, która ma zostać przekopiowana bezpośrednio do pliku wyjściowego, ale na samą górę tego pliku. Sekcja reguł Sekcja reguł składa się z serii reguł o następującym formacie: WZORZEC AKCJA, gdzie WZORZEC nie może być wcięty (nie może rozpoczynać go spacja) oraz AKCJA musi zaczynać się w tej samej linii. Przykłady reguł: [A-Z]* CYFRA printf( Rozpoznano duże litery %s, yytext); printf( Rozpoznano cyfrę ); Sekcja kodu użytkownika Sekcja kodu użytkownika jest opcjonalną częścią pliku, która jest bezpośrednio kopiowana do pliku wyjściowego. Zazwyczaj są tutaj umieszczane definicje funkcji napisanych w języku C, które wywoływane są w akcjach. Komentarze FLEX wspiera komentarze zgodnie ze składnią języka C i wszystko co znajduje się między znakami /* i */ kopiuje bezpośrednio do pliku wyjściowego. Jednak żeby komentarz nie został pomylony przez analizator z regułą, sugeruje się, aby nigdy nie rozpoczynał się on w pierwszej kolumnie. Wyrażenia regularne Wzorce zapisuje się za pomocą rozszerzonego zestawu wyrażeń regularnych. Poniżej wyrażenia regularne zgodnie z zapisem we FLEX Wzorzec Opis X Dopasuj znak X.. Dopasuj dowolny znak poza znakiem końca linii. \n Dopasuj koniec linii. [abc] (klasa znaków) Dopasuj znak a lub b lub c. [ab-fz] (klasa znaków z wykorzystaniem operatora zakresu) Dopasuj znak a lub od b do f lub z. [^A-C] (zanegowana klasa znaków) Dopasuj dowolny znak poza A, B i C. [a-z]* (* - zero lub wiele powtórzeń wyrażenia regularnego). Dopasuj ciąg składający się z zera lub wielu małych liter. [a-z]+ (+ - jedno lub wiele powtórzeń wyrażenia regularnego). Dopasuj 2

3 ciąg składający się z jednej lub wielu małych liter. [a-z]? (? zero lub jedno powtórzenie). Dopasuj ciąg składający się z żadnej lub jednej małej litery. [a-z]2,5 (n,m powtarzaj od n do m razy). Dopasuj ciąg skłdający się z od 2 do 5 małych liter. [a-z]2, (n,m). Dopasuj ciąg skłdający się z co najmniej 2 małych liter. [a-z]2 (n powtarzaj n razy). Dopasuj ciąg składający się z dokładnie 2 małych liter. CYFRY Odwołanie się do nazwanej definicji. Karolina Dopasuj ciąg do napisu Karolina. ([a-z]) (operator () do nadawania łączności regułom). [a-z] [A-Z] ( - operator wyboru) Dopasuj małą lub dużą literę. [a-z][a-z] (regularne wyrażenia następujące po sobie). Dopasuj ciąg znaków, gdzie pierwsza litera jest mała, a druga duża. A /[a-z] (dopasowanie warunkowe). Dopasuj A, ale tylko jeżeli występuje po nim mała litera. ^[a-z] (początek linii). Dopasuj małą literę, ale tylko na początku linii. [a-z]$ (koniec linii). Dopasuj małą literę ale tylko, jeżeli jest na końcu linii. <<EOF>> Koniec pliku. Dodatkowo zostały zdefiniowane pewne klasy wyrażeń znakowych, których nazwa jest podawana między znakami [: i :] i dodatkowo przy tworzeniu wyrażenia regularnego musi być wzięta w nawiasy kwadratowe. Klasa wyrażeń Znaczenie [[:lower:]] małe litery [[:upper:]] duże litery [[:digit:]] cyfry [[:space:]] spacja Działanie analizatora Po uruchomieniu analizator stara sie dopasować zadany ciąg znaków do wzorców znajdujących się w sekcji reguł w następujący sposób: W przypadku, gdy można dopasować kilka wzorców zawsze wybierany jest ten, który dopasowuje najwięcej znaków. Jeżeli istnieją dwa wzorce dopasowujące tą samą liczbę znaków, zawsze wybrany zostanie ten, który został zdefiniowany jako pierwszy. Po dopasowaniu do wzorca w akcji można odczytać dopasowany ciąg znaków poprzez odwołanie się do zmiennej yytext, natomiast długość bieżącego dopasowania jest przechowywana w zmiennej yyleng. Domyślnie zmienna yytext jest tablicą znakową o długości 256 znaków, jednak istnieje możliwość zdefiniowania jej jako wskaźnik poprzez zastosowanie przełącznika %pointer. Po dopasowaniu wzorca wywoływana jest akcja z nim związana, a następnie pozostała część ciągu znaków na wejściu jest dopasowywana do wzorców. 3

4 Przykłady zastosowania reguł: %option noyywrap LETTERS [a-z]* INTEGER [1-9][0-9]* 0 REAL INTEGER"."[0-9]+ DZIEN [1-9] 1[0-9] 2[0-9] 30 MIESIAC [1-9] 1[0-2] ROK [1-9][0-9]0,2 1[0-9]0,3 200[1-9] 20[1-4][0-9] 2050 DATA DZIEN"-"MIESIAC"-"ROK [^0-9] printf("to nie jest liczba %s\n", yytext); ^[a-z] printf("znak na poczatku linii %s\n", yytext); [a-z]$ printf("znak na koncu linii %s\n", yytext); REAL printf("rozpoznano liczbe zmiennoprzecinkowa %s\n", yytext); INTEGER printf("rozpoznano liczbe calkowita %s\n", yytext); DATA printf("rozpoznano date %s\n", yytext); LETTERS/INTEGER yytext); printf("rozpoznano litery przed liczbami %s\n", \n printf("koniec linii");. printf("nierozpoznany znak"); int main() Akcje Z każdym wzorcem połączona jest akcja, która może być dowolną instrukcją napisaną w języku C. Domyślnie akcja powinna zostać zapisana w jednej linii zaraz po wzorcu. W przypadku, gdy składa się ona z wielu instrukcji można zapisać instrukcje kolejno w jednej linii lub zapisać je w osobnych liniach; wtedy jednak należy zamknąć blok instrukcji w nawiasy i, dodatkowo takie rozwiązanie sprawia, że kod jest czytelniejszy. W akcjach można modyfikować zawartość zmiennej yytext, jednak nie można zmieniać jej długości, czy dopisywać znaków na końcu, gdyż spowoduje to nadpisanie znaków pobranych na wejściu analizatora; tych które nie zostały jeszcze przetworzone. W akcjach można również zmieniać wartość zmiennej yyleng, jednak jest to zabronione w przypadku gdy w tej samej akcji korzysta się z funkcji yymore(). Predefiniowane dyrektywy, z których można korzystać w akcjach: Dyrektywa Znaczenie ECHO Kopiuje zawartość zmiennej yytext na wyjście analizatora. BEGIN() Pozwala przechodzić między stanami w analizatorze leksykalnym. 4

5 REJECT yymore() yyless(int n) unput(char c) input() Wymusza na analizatorze znalezienie następnej pasującej reguły i wykonanie dla niej akcji. Wymusza na analizatorze pozostawienie w zmiennej yytext dopasowanego tokena, tak aby był on widoczny po dopasowaniu następnej reguły. Przesyła na wejście analizatora wszystkie poza n pierwszymi znakami z właśnie dopasowanego tokena, by umożliwić ich kolejne przetworzenie. Przesyła znak na wejście analizatora. Ten znak będzie jako pierwszy wzięty do dopasowania do wzorca. Pobiera kolejny znak z wejścia analizatora. Program do zliczania linii i znaków w pliku: %option noyywrap % % #include <stdlib.h> int liczbaznakow = 0; int liczbalinii = 0; \n liczbaznakow++;liczbalinii++;. liczbaznakow++; int main(int argc, char** argv) if(argc > 1) yyin = fopen(argv[1], r ); printf("liczba znaków wynosi %d natomiast liczba linii to %d", liczbaznakow, liczbalinii); fclose(yyin); Zadania: 1. Napisz program, który będzie zliczał liczbę liter oraz cyfr w linii tekstu. Po wciśnięciu entera powinien wypisać wynik. 2. Napisz program, który będzie liczył liczbę słów w podanej linii tekstu i po wciśnięciu entera wypisze wynik na ekranie. Wygenerowany analizator Wynikiem działania programu FLEX jest program zapisany w pliku lex.yy.c, który zawiera główną metodę yylex() oraz wygenerowane tablice służące do rozpoznawania tokenów oraz listę wygenerowanych makr oraz funkcji. 5

6 Metoda yylex() pobiera zawsze dane ze strumienia, do którego można mieć dostęp poprzez globalną zmienną plikową yyin (domyślnie jest to stdin), i działa tak długo, aż dotrze do końca pliku lub jedna z jej akcji będzie zawierała wyrażenie return. W przypadku gdy analizator dojdzie do końca pliku, kolejne odwołania do niego są niezdefiniowane, chyba że zmiennej yyin zostanie przypisany nowy plik z danymi do przetworzenia. W przypadku zakończenia pracy analizatora po wykonaniu wyrażenia return, kolejne wywołanie funkcji yylex() spowoduje wznowienie pracy analizatora w miejscu, gdzie ostatnio skończył. Gdy zostanie rozpoznany stan końca pliku, analizator automatycznie przechodzi do funkcji yywrap(). Jeżeli nie jest ona zdefiniowana, należy włączyć opcję %noyywrap, by została ona wygenerowana automatycznie. Funkcja yywrap domyślnie zwraca wartość prawda. Jeżeli jednak chcielibyśmy kontynuować pracę analizatora, powinniśmy zastąpić domyślną definicję tej funkcji w części kodu użytkownika i przypisać zmiennej yyin nowy plik, który będzie przetwarzany. Domyślnie strumień wyjściowy analizatora jest połączony ze standardowym wyjściem na ekran (stdout). Jednak istnieje możliwość przekierowania go na dowolne inne wyjście poprzez odpowiednie przedefiniowanie globalnej zmiennej plikowej yyout. Obsługa końca pliku Istnieje specjalny wzorzec <<EOF>>, który umożliwia wykonanie akcji w momencie, gdy został rozpoznany koniec pliku i jednocześnie funkcja yywrap() zwróciła prawdę. Akcje wykonane w przypadku dopasowania tego wzorca mogą być następujące: Przypisać zmiennej yyin nowy strumień. Wykonać instrukcję return. Wykonać funkcję yyterminate(), która informuje skaner o tym, że wszystko z wejścia zostało przetworzone i można zakończyć pracę. Przełączyć się między buforami za pomocą funkcji yy_switch_to_buffer. Wzorzec <<EOF>> nie może być łączony z innymi wzorcami. Jeżeli istnieje wzorzec <<EOF>> nieprzypisany do żadnego stanu, to będzie on dopasowywany w każdym ze stanów, jeżeli dla danego stanu nie został taki wzorzec zdefiniowany. Stany analizatora FLEX umożliwia warunkowe rozpoznawanie wzorców. Wykorzystywane są w tym celu stany analizatora. Stany analizatora definiuje się w sekcji definicji poprzez rozpoczęcie linii przełącznikiem %s lub %x i następnie podanie listy nazw stanów oddzielonych przecinkami. %s definiuje stany łączne, czyli takie, które rozpatrują również wzorce nie przypisane do żadnego stanu. Natomiast %x definiuje stany wyłączne i w tym przypadku rozpatrywane są wzorce należące tylko do tego stanu. W sekcji reguł analizatora każdy wzorzec może zostać przypisany do wybranego stanu lub grupy stanów w następujący sposób: 6

7 <STAN>WZORZEC %s definiuje stan inclusive (łączny) INITIAL %x definiuje stan exlusive (wyłączny) INITIAL gdzie STAN jest nazwą stanu zdefiniowaną w sekcji definicji. W przypadku większej liczby STANów należy rozdzielić je spacją. Dodatkowo, jeżeli do jednego stanu chcemy przypisać więcej wzorców, można zastosować następującą konstrukcję: <STAN> WZORZEC_1... WZORZEC_2 Po rozpoczęciu pracy analizator znajduje się w stanie domyślnym (INITIAL). Do zmiany stanu pracy analizatora służy makro BEGIN, któremu jako parametr podaje się nazwę stanu, do jakiego ma przejść. Należy pamiętać, że analizator sam nigdy nie zmieni stanu analizatora. Program rozpoznający napisy oraz komentarze: %option noyywrap %x STRING COMMENT \" BEGIN(STRING); "/*" BEGIN(COMMENT); <STRING>[a-z]* <STRING>\" printf("zawartosc stringa %s \n", yytext); BEGIN(INITIAL); <COMMENT> [a-z]* printf("w komentarzu %s \n", yytext); "*/" BEGIN(INITIAL); int main() Globalne zmienne YYSTATE oraz YY_START zwracają wartość bieżącego stanu analizatora. Istnieje również możliwość zagnieżdżania odwołań do stanów. W tym celu został stworzony stos, który umożliwia zapamiętywanie kolejnych stanów, przez które przechodzi analizator. Pamięć stosu przydzielana jest dynamicznie. W celu wykorzystania tego stosu należy posługiwać się następującymi funkcjami: Funkcja Działanie yy_push_state(nowy_stan) Przełącza bieżący stan pracy analizatora na nowy i odkłada jego wartość na stosie. yy_pop_state() Pobiera stan znajdujący się na góre stosu i przy 7

8 yy_top_state() wykorzystaniu funkcji BEGIN przechodzi do pracy w nim. Pobiera stan z góry stosu, bez zmiany zawartości. Zadania: 1. Napisz program, który będzie rozpoznawał zawartość komentarzy jednoliniowych w C (rozpoczynających się od znaków // i kończących wraz z końcem linii. Przetwarzanie wielu plików Niektóre analizatory wymagają współpracy z wieloma plikami. W tym celu został stworzony specjalny mechanizm buforów umożliwiający w prosty sposób przełączanie się między plikami. YY_BUFFER_STATE yy_create_buffer(file* file, int size) YY_BUFFER_STATE yy_new_buffer(file* file, int size) Pobiera zmienną plikową oraz rozmiar pliku i tworzy powiązany z nimi bufor danych. W przypadku gdy nie jest znany potrzebny rozmiar bufora, należy jako drugi parametr wywołania podać YY_BUF_SIZE. YY_BUFFER_STATE jest predefiniowaną strukturą: void yy_switch_to_buffer(yy_buffer_state nowy bufor); Funkcja podmienia plik na wejściu analizatora na ten powiązany z buforem podanym jako parametr. Funkcja ta często jest wykorzystywana w ciele funkcji yywrap(), by kontynuować skanowanie z kolejnego pliku. void yy_delete_buffer(yy_buffer_state bufor); Funkcja zwalnia zasoby związane z buforem. YY_CURRENT_BUFFER Makro zwracające YY_BUFFER_STATE dla bieżącego bufora. Współpraca z YACC Jednym z głównych zastosowań analizatora leksykalnego jest połączenie go wraz z analizatorem składniowym wygenerowanym przez program YACC. Interakcja między tymi programami przebiega w następujący sposób: Analizator składniowy wywołuje metodę yylex(), w wyniku której zostaje do niego przekazany token opisany przez typ oraz wartość (zapisywaną do zmiennej yylval). Nazwy tokenów ustalane są w ciele programu napisanego dla YACC a, jednak wywołanie kompilacji tego programu z opcją -d generuje dodatkowy plik nagłówkowy y.tab.h, w którym znajdują się definicje tokenów. Plik ten należy dołączyć do pliku napisanego w analizatorze leksykalnym. Umożliwia to odwołanie się do tych samych zmiennych. 8

9 Program do dołączania plików po słowie #include: % #define MAX 100 YY_BUFFER_STATE stos[max]; int nbufor = 0; % %x INCLUDE "include" BEGIN(INCLUDE); [a-za-z]+ ECHO; /*Wypisujemy zawartość pliku*/ [0-9]+ ECHO; <INCLUDE> [\t]* ; /*Omijaj tabulacje*/ [a-z]+"."[a-z]3 stos[nbufor++] = YY_CURRENT_BUFFER; yyin = fopen(yytext, "r"); yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); BEGIN(INITIAL); <<EOF>> if(nbufor == 0) yyterminate(); else yy_delete_buffer(yy_current_buffer); yy_switch_to_buffer(stos[--nbufor]); int yywrap() printf("wykryto koniec pliku\n"); return 1; int main(int argc, char** argv) 9

Generatory analizatorów

Generatory analizatorów Generatory analizatorów Generator analizatora leksykalnego flex ( http://www.gnu.org/software/flex/ ) Generator analizatora składniowego bison ( http://www.gnu.org/software/bison/ ) Idea ogólna Opis atomów

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Podstawy Kompilatorów

Podstawy Kompilatorów Podstawy Kompilatorów Laboratorium 3 Uwaga: Do wykonania poniższych zadań związanych z implementacją niezbędny jest program LEX oraz kompilator. Dla środowiska Linux mogą to być: Darmowa wersja generatora

Bardziej szczegółowo

Analiza leksykalna i generator LEX

Analiza leksykalna i generator LEX Analiza leksykalna i generator LEX Wojciech Complak Wojciech.Complak@cs.put.poznan.pl wprowadzenie generator LEX wyrażenia regularne i niejednoznaczności retrakcja definicje regularne atrybuty lewy kontekst

Bardziej szczegółowo

Generator skanerów Flex

Generator skanerów Flex Grzegorz Jacek Nalepa 17.7.2000, Kraków, Revision : 1.5 Streszczenie Artykuł prezentuje generator skanerów leksykalnych Flex, będący implementacją standardowego pakietu Lex. Zawarte jest krótkie wprowadzenie

Bardziej szczegółowo

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

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 4 Obsługa plików Kraków 2010 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim

Bardziej szczegółowo

Argumenty wywołania programu, operacje na plikach

Argumenty wywołania programu, operacje na plikach Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują

Bardziej szczegółowo

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

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013 Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Obsługa plików Kraków 2013 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim będziemy mogli

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

automatem skończonym niedeterministycznym (ang. nondeterministic finite automaton) M N nazywamy system:

automatem skończonym niedeterministycznym (ang. nondeterministic finite automaton) M N nazywamy system: 4.3. Automaty skończone (skończenie stanowe) automatem skończonym niedeterministycznym (ang. nondeterministic finite automaton) M N nazywamy system: M N = < Q, Σ, δ, q 0, F > Q Σ skończony zbiór stanów

Bardziej szczegółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski Laboratorium 6: Ciągi znaków mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 17 listopada 2016 1. Wprowadzenie Instrukcja poświęcona jest zmiennym, które służą do przechowywania

Bardziej szczegółowo

Flex - generator analizatorów leksykalnych

Flex - generator analizatorów leksykalnych Flex - generator analizatorów leksykalnych Spis treści: 1. Wprowadzenie Wyrażenia regularne Schemat specyfikacji Prosty przykład Uruchomienie Makefile 2. Rozstrzyganie niejednoznaczności 3. Rozpoznawanie

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.

Bardziej szczegółowo

Ćwiczenia nr 11. Translatory. Wprowadzenie teoretyczne

Ćwiczenia nr 11. Translatory. Wprowadzenie teoretyczne J.Nawrocki, M. Antczak, A. Hoffa, S. Wąsik Plik źródłowy: 08cw11-tr.doc; Data: 2009-01-15 09:47:00 Ćwiczenia nr 11 Translatory Wprowadzenie teoretyczne Wiele dokumentów wprowadzających do języków Lex oraz

Bardziej szczegółowo

Wstęp do programowania. Wykład 1

Wstęp do programowania. Wykład 1 Wstęp do programowania Wykład 1 1 / 49 Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata.

Bardziej szczegółowo

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach: Skrypty powłoki Skrypty są zwykłymi plikami tekstowymi, w których są zapisane polecenia zrozumiałe dla powłoki. Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu. Aby przygotować skrypt, należy:

Bardziej szczegółowo

Generator analizatorów leksykalnych - Lex. Bartosz Bogacki.

Generator analizatorów leksykalnych - Lex. Bartosz Bogacki. Generator analizatorów leksykalnych - Lex Bartosz Bogacki Bartosz.Bogacki@cs.put.poznan.pl Witam Państwa. Wykład, który za chwilę Państwo wysłuchają dotyczy generatora analizatorów leksykalnych LEX. Zapraszam

Bardziej szczegółowo

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression) Sed edytor strumieniowy,sed wczytuje bieżący wiersz pliku do wewnętrznego bufora celem manipulowania tekstem. Wynik jest wysyłany na standardowe wyjście. Oryginalny plik nie jest nigdy zmieniany. Jeżeli

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

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

Języki i metodyka programowania. Wprowadzenie do języka C Literatura: Brian W. Kernighan, Dennis M. Ritchie Język Ansi C, Wydawnictwa Naukowo - Techniczne, 2007 http://cm.bell-labs.com/cm/cs/cbook/index.html Scott E. Gimpel, Clovis L. Tondo Język Ansi C. Ćwiczenia

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

#include 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> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); } OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

#include void main(void) { 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 ); } OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

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

Język C, tablice i funkcje (laboratorium, EE1-DI) Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

Programowanie w językach wysokiego poziomu

Programowanie w językach wysokiego poziomu Programowanie w językach wysokiego poziomu zajęcia nr 2 Elektronika i Telekomunikacja, semestr III rok akademicki 2014/2015 Plan dzisiejszych zajęć Pliki tekstowe 1. Operacje na plikach - wprowadzenie

Bardziej szczegółowo

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA, który zawiera: zmienne, konstrukcje warunkowe i iteracyjne (IF-THEN-ELSE, CASE, DO WHILE, DO UNTIL), konfigurowane środowisko użytkownika. METAZNAKI zestaw

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

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

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 7 kwietnia 2014 1. Wprowadzenie Pierwsza część instrukcji zawiera informacje

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

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

Temat 1: Podstawowe pojęcia: program, kompilacja, kod Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,

Bardziej szczegółowo

Zakład Systemów Rozproszonych

Zakład Systemów Rozproszonych Zakład Systemów Rozproszonych Politechnika Rzeszowska Moduł 5: Wybrane programy użytkowe Edytor Vi Edytor Vi uruchamiany jest w oknie terminala. Przy jego pomocy możemy dokonywać następujących operacji:

Bardziej szczegółowo

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak Systemy operacyjne System operacyjny Linux - wstęp Anna Wojak 1 1 Wstęp Linux jest systemem z rodziny Unix. Pierwsza wersja systemu została opracowana w 1969 roku przez K.Thompsona i D.Ritchie Jest to

Bardziej szczegółowo

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

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym

Bardziej szczegółowo

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

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

Pytania sprawdzające wiedzę z programowania C++

Pytania sprawdzające wiedzę z programowania C++ Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny?

Bardziej szczegółowo

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

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop. 2016 Spis treści Wprowadzenie 11 Adresaci książki 12 Co wyróżnia tę książkę na

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

5 Przygotował: mgr inż. Maciej Lasota

5 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 5 1/6 Język C Instrukcja laboratoryjna Temat: Funkcje, parametry linii poleceń, typ wyliczeniowy. 5 Przygotował: mgr inż. Maciej Lasota 1) Parametry linii poleceń. Język C oprócz wprowadzania

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium)

Język C, tablice i funkcje (laboratorium) Język C, tablice i funkcje (laboratorium) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()

Bardziej szczegółowo

Zadanie analizy leksykalnej

Zadanie analizy leksykalnej Analiza leksykalna 1 Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Przykład: We: COST := ( PRICE + TAX ) * 0.98 Wy: id 1 := ( id 2 + id 3 ) * num 4 Tablica symboli:

Bardziej szczegółowo

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt

Bardziej szczegółowo

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda. Nazwa implementacji: Nauka języka C wyrażenia warunkowe if- Autor: Piotr Fiorek Opis implementacji: Poznanie struktury oraz zastosowania wyrażeń warunkowych if- w języku C. W programie realizującym jakiś

Bardziej szczegółowo

Skanowanie OCR w aplikacji Kancelaria Komornika. Instrukcja dla użytkownika

Skanowanie OCR w aplikacji Kancelaria Komornika. Instrukcja dla użytkownika Skanowanie OCR w aplikacji Kancelaria Komornika Instrukcja dla użytkownika Spis treści 1. Zakładka Wyrażenia... 3 2. Zakładka Grupy wyrażeń... 5 3. Opcje Skanowania / OCR... 7 4. Rozpoznawanie Danych...

Bardziej szczegółowo

Podstawy Kompilatorów

Podstawy Kompilatorów Podstawy Kompilatorów Laboratorium 9 Uwaga: Do wykonania poniższych zadań związanych z implementacją niezbędny jest program LEX, program YACC oraz kompilator języka C. Dla środowiska Linux mogą to być:

Bardziej szczegółowo

Język C++ zajęcia nr 2

Język C++ zajęcia nr 2 Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator

Bardziej szczegółowo

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania :: Roman Grundkiewicz :: 014 Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

Bardziej szczegółowo

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania - Roman Grundkiewicz - 013Z Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

Programowanie strukturalne i obiektowe Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie

Bardziej szczegółowo

#include using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; } #include using namespace std; Prototypy funkcji Funkcja 1 void ela(int); double info (double); int main( ); return 0; Funkcja 2 void ela(int); Funkcja 3 double info(double); return 4*t; jeszcze

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

Bardziej szczegółowo

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

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); } KURS C/C++ WYKŁAD 2 Instrukcje iteracyjne Instrukcja while Składnia tej instrukcji jest następująca: while (wyrażenie) instrukcja W pętli while wykonanie instrukcji powtarza się tak długo, jak długo wartość

Bardziej szczegółowo

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

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 1 Podstawy Wprowadzenie do programowania w języku C Kraków 2010 Twój pierwszy program w C Program w języku C, jak i w wielu innych językach

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 2 - wprowadzenie do zmiennych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 23 października 2017 1 / 26 mgr inż. Krzysztof Szwarc Podstawy i

Bardziej szczegółowo

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania Rok akademicki 2013/2014, Pracownia nr 10 2/20 Informatyka 1 Tablica elementów ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu Politechnika Białostocka - Wydział Elektryczny Elektrotechnika,

Bardziej szczegółowo

Podstawy generatora YACC. Bartosz Bogacki.

Podstawy generatora YACC. Bartosz Bogacki. Podstawy generatora YACC Bartosz Bogacki Bartosz.Bogacki@cs.put.poznan.pl Witam Państwa. Wykład, który za chwilę Państwo wysłuchają dotyczy generatora analizatorów składniowych YACC. Zapraszam serdecznie

Bardziej szczegółowo

Podstawy programowania - 1

Podstawy programowania - 1 Podstawy programowania - 1 doc. dr inż. Tadeusz Jeleniewski Wykład: sobota B, godz. 10.30 12.55 sala 12 Laboratorium: sobota B, godz. 13.00 15.25 sala 2 sobota B, godz. 15.30-17.55 sala 2 e-mail: tadeusz.jeleniewski@pwr.wroc.pl

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych. Może posiadać określone atrybuty, a odwołanie do niego odbywa się poprzez nazwę. Każdy plik ma skończoną

Bardziej szczegółowo

Podział programu na moduły

Podział programu na moduły Materiały Podział programu na moduły Informatyka Szczegółowe informacje dotyczące wymagań odnośnie podziału na moduły: http://www.cs.put.poznan.pl/wcomplak/bfiles/c_w_5.pdf Podział programu na moduły pozwala

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część jedenasta Przetwarzanie plików amorficznych Konwencja języka C Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Program 14. #include #include using namespace std;

Program 14. #include <iostream> #include <ctime> using namespace std; Program 14 Napisać: * funkcję słuŝącą do losowego wypełniania tablicy liczbami całkowitymi z podanego zakresu (*). Parametrami funkcji mają być tablica, jej długość oraz dwie liczby stanowiące krańce przedziału

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

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

KURS C/C++ WYKŁAD 1. Pierwszy program KURS C/C++ WYKŁAD 1 Pierwszy program Tworzenie programu odbywa sie w dwóch etapach: 1. opracowanie kodu źródłowego 2. generowanie kodu wynikowego Pierwszy etap polega na zapisaniu algorytmu za pomocą instrukcji

Bardziej szczegółowo

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty

Bardziej szczegółowo

Wskaźniki w C. Anna Gogolińska

Wskaźniki w C. Anna Gogolińska Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

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

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 Język C część 1 Literatura [1] Brian W. Kernighan, Dennis M. Ritchie: Język ANSI C, Wydawnictwa Naukowo Techniczne, Warszawa 2003 [2] Anna Strudzioska-Walczak, Krzysztof Walczak, Nakuka programowania dla

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN AHDL - Język opisu projektu. Podstawowe struktury języka Przykładowy opis rewersyjnego licznika modulo 64. TITLE "Licznik rewersyjny modulo 64 z zerowaniem i zapisem"; %------------------------------------------------------------

Bardziej szczegółowo

C++ Przeładowanie operatorów i wzorce w klasach

C++ Przeładowanie operatorów i wzorce w klasach C++ i wzorce w klasach Andrzej Przybyszewski numer albumu: 89810 14 listopada 2009 Ogólnie Przeładowanie (przeciążanie) operatorów polega na nadaniu im nowych funkcji. Przeładowanie operatora dokonuje

Bardziej szczegółowo

Plik jest reprezentowany przez strumień znaków (bajtów) o zmiennej długości. Koniec strumienia identyfikowany jest znacznikiem końca pliku EOF.

Plik jest reprezentowany przez strumień znaków (bajtów) o zmiennej długości. Koniec strumienia identyfikowany jest znacznikiem końca pliku EOF. Pliki w C++ Plik jest reprezentowany przez strumień znaków (bajtów) o zmiennej długości. Koniec strumienia identyfikowany jest znacznikiem końca pliku EOF. Z każdym strumieniem związany jest wskaźnik bieżącej

Bardziej szczegółowo

Mikrokontroler ATmega32. Język symboliczny

Mikrokontroler ATmega32. Język symboliczny Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami

Bardziej szczegółowo

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017 Systemy operacyjne Laboratorium 9 Perl wyrażenia regularne Jarosław Rudy Politechnika Wrocławska 28 lutego 2017 Temat obejmuje wykorzystanie wyrażeń regularnych w perlu. Wyrażenia same w sobie są w zasadzie

Bardziej szczegółowo

1 Przygotował: mgr inż. Maciej Lasota

1 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 1 1/7 Język C Instrukcja laboratoryjna Temat: Programowanie w powłoce bash (shell scripting) 1 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do programowania w powłoce Skrypt powłoki

Bardziej szczegółowo

Języki programowania. Karolina Mikulska-Rumińska Pokój 573, tel Konsultacje wtorek 9-10.

Języki programowania. Karolina Mikulska-Rumińska   Pokój 573, tel Konsultacje wtorek 9-10. Języki programowania Karolina Mikulska-Rumińska E-mail: karolamik@fizyka.umk.pl Pokój 573, tel. 3346 Konsultacje wtorek 9-10. Pliki Dwa rodzaje plików: Tekstowe, Binarne Aby otworzyć plik należy najpierw

Bardziej szczegółowo

Podstawy programowania (1)

Podstawy programowania (1) Podstawy programowania (1) doc. dr inż. Tadeusz Jeleniewski Konsultacje pokój 19 Poniedziałki, godz. 9:45 11:20 e-mail: tadeusz.jeleniewski@neostrada.pl Podstawy programowania (1) - wykład 1. Wprowadzenie

Bardziej szczegółowo

Wybrane narzędzia do tworzenia analizatorów leksykalnych i składniowych w C/C++ by Kapitol Team

Wybrane narzędzia do tworzenia analizatorów leksykalnych i składniowych w C/C++ by Kapitol Team Wybrane narzędzia do tworzenia analizatorów leksykalnych i składniowych w C/C++ by Kapitol Team Flex a generatory skanerów C++ 2 sposoby wymuszenia stworzenia skanera w C++ flex -+ flexfile.l użycie %option

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Stałe i zmienne znakowe. Stała znakowa: znak

Stałe i zmienne znakowe. Stała znakowa: znak Stałe i zmienne znakowe. Stała znakowa: znak Na przykład: a, 1, 0 c Każdy znak jest reprezentowany w pamięci przez swój kod. Kody alfanumerycznych znaków ASCII to liczby z przedziału [32, 127]. Liczby

Bardziej szczegółowo

Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot

Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów mgr inż. Arkadiusz Chrobot 10 listopada 2010 1 Preprocesor Preprocesor jest programem uruchamianym przed właściwym procesem kompilacji

Bardziej szczegółowo

Laboratorium nr 5: Mnożenie wektorów i macierzy

Laboratorium nr 5: Mnożenie wektorów i macierzy Laboratorium nr 5: Mnożenie wektorów i macierzy 1 Cel ćwiczenia Wykształcenie umiejętności definiowania przeciążeń operatorów indeksujących i funkcyjnych. Utrwalenie umiejętności definiowania przeciążeń

Bardziej szczegółowo

Atrybuty bloki z atrybutami, wyciągi atrybutów.

Atrybuty bloki z atrybutami, wyciągi atrybutów. Atrybuty bloki z atrybutami, wyciągi atrybutów. Blokom można przyporządkować tzw. atrybuty, zawierające dane tekstowe. Atrybuty to pewne informacje związane z blokiem. Może to być np. nazwa elementu rysunkowego,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo