UNIWERSYTET RZESZOWSKI
|
|
- Natalia Szymczak
- 8 lat temu
- Przeglądów:
Transkrypt
1 UNIWERSYTET RZESZOWSKI JĘZYKI PROGRAMOWANIA (kody źródłowe programów omawianych w ramach wykładu) Dr Zbigniew Gomółka RZESZÓW
2 Zakład Elektrotechniki i Informatyki dr Z.Gomółka, zgomolka@atena.univ.rzeszow.pl PODSTAWY PROGRAMOWANIA ZDEFINIOWANIE PODSTAWOWYCH POJĘĆ PROGRAM przepis postępowania, z góry przyswojony przez komputer plan działania. Mówiąc inaczej program jest realizacją algorytmu spełniającą wymogi komunikacji z komputerem; pisany jest w jednym z języków programowania; JĘZYK PROGRAMOWANIA zbiór zasad składni, instrukcji, dzięki którym powstaje kod źródłowy programu. Procesor jest wstanie wykonywać program jedynie w kodzie maszynowym. Jednakże tworzenie programów w tym języku jest praktycznie niemożliwe. Dlatego programista używa języka zrozumiałego dla człowieka, który następnie jest kompilowany bądź interpretowany do postaci maszynowej. Podział języków programowania strukturalne obiektowe Język wysokiego poziomu język programowania, zazwyczaj o budowie blokowej, spełniający wymagania programowania strukturalnego, lub programowania obiektowego (C i C++ Java Pascal, Matlab, Mathematica). Język niskiego poziomu język programowania, w którym środki strukturalizacji kodu są ograniczone do co najwyżej podprogramów i makroinstrukcji np. asemblery. Poziom języków programowania nie określa jego jakości, lecz rodzaj zastosowań!!! 0-1
3 Zakład Elektrotechniki i Informatyki dr Z.Gomółka, zgomolka@atena.univ.rzeszow.pl PODSTAWY PROGRAMOWANIA TRANSLATOR program dokonujący przekładu tekstu wyrażonego w języku programowania na kod wynikowy. Zadaniem translatora jest wykonanie rozbioru gramatycznego przedłożonego tekstu, aby rozstrzygnąć, czy tekst jest poprawnym programem. W skład każdego translatora wchodzi analizator leksykalny, analizator składni oraz (najczęściej) generator kodu. KOMPILATOR translator języka wysokiego poziomu, którego programy wynikowe mogą być wprowadzone do pamięci i wykonane dopiero po zakończeniu tłumaczenia (w odróżnieniu od interpretatora). Programy wynikowe kompilatora mogą być przechowywane, łączone z innymi programami i wielokrotnie wykonywane znacznie szybciej niż programy interpretowane. INTERPRETER translator przekładający instrukcje programu na kod pośredni, który następnie interpretuje przy każdym ich wykonaniu. Ponieważ interpreter nie tworzy przekładu w kodzie maszynowym, lecz wykonuje instrukcje, tłumacząc je na bieżąco za każdym razem, wykonanie programu znacznie się wydłuża. Typowymi interpreterami są systemy programowania wykorzystywane do symulacji np. Matlab LINKER Program łączący (konsolidujący) biblioteki lub moduły biblioteczne z modułami programu wynikowego wyprodukowanymi przez kompilator; efektem działania konsolidatora jest kod w postaci gotowej do ładowania. produkt działania programu łączącego jest przechowywany np. w plikach exe, com, rtl, dll. KOD ŹRÓDŁOWY program komputerowy napisany w języku programowania. W tej postaci jest on zrozumiały dla programisty, bez konieczności jego uruchamiania. Kod źródłowy jest przekształcany na kod maszynowy w procesie kompilacji programu. 0-2
4 Zakład Elektrotechniki i Informatyki dr Z.Gomółka, zgomolka@atena.univ.rzeszow.pl PODSTAWY PROGRAMOWANIA KOD MASZYNOWY język zrozumiały dla procesora. Program w kodzie maszynowym składa się z ciągu wartości binarnych, które oznaczają zarówno instrukcje jak i dane. Postać kodu maszynowego zależy od architektury procesora, na który dany program jest przeznaczony. Dlatego program musi zostać skompilowany na konkretnej maszynie, ewentualnie na systemie kompatybilnym z systemem docelowym. KOD WYNIKOWY (j. ang. object code), rezultat pracy translatora (np. kompilatora), nadający się do bezpośredniego wykonywania przez procesor albo wymagający dalszej obróbki (np. konsolidacji). 0-3
5 Zakład Elektrotechniki i Informatyki dr Z.Gomółka, zgomolka@atena.univ.rzeszow.pl PODSTAWY PROGRAMOWANIA PODSTAWOWE BLOKI PROGRAMU BLOK DEKLARACJI BLOK PROGRAMU GŁÓWNEGO 0-4
6 Zakład Elektrotechniki i Informatyki dr Z.Gomółka, zgomolka@atena.univ.rzeszow.pl PODSTAWY PROGRAMOWANIA PROCEDURA - PODPROGRAM deklaracja procedury Wywołanie procedury 0-5
7 Zakład Elektrotechniki i Informatyki dr Z.Gomółka, zgomolka@atena.univ.rzeszow.pl PODSTAWY PROGRAMOWANIA UNIT - KORZYSTANIE Z BIBLIOTEK blok deklaracji ciała procedur 0-6
8 Zakład Elektrotechniki i Informatyki dr Z.Gomółka, zgomolka@atena.univ.rzeszow.pl PODSTAWY PROGRAMOWANIA PRZEJRZYSTE PROGRAMOWANIE komentarze informacje niezbędne do dalszych modyfikacji programu. wcięcia akapitowe są olbrzymim udogodnieniem dla czytającego kod źródłowy, świadczą o dobrych nawykach czytelnego i przyjaznego programowania. Program ZŁ Y; Var s:string; b:byte; Program DOBRY; Var s:string; {Komentarze} b:byte; ReadLn(s); If s='pi' Then For b:=1 To 10 Do WriteLn(PI); WriteLn(b); ReadLn(s); If s='pi' Then For b:=1 To 10 Do WriteLn(PI); WriteLn(b); pisownia słów kluczowych 0-7
9
10 PROGRAM Compare1; { Przykład do wartości boolowskich } Var A, B :Integer; Result :BOOLEAN; Write('Podaj dwie liczby calkowite: '); ReadLn(A, B); Result := (A = B); { lub mniej czytelnie Result := A = B; nawiasy mozna pominac. } WriteLn('Oto wynik porównania ', Result) End. PROGRAM Compare2; { Porównanie wartości rzeczywistych } Const blad = ; Var x, y :Real; Result :BOOLEAN; Write('Podaj dwie liczby rzeczywiste: '); ReadLn(x, y); Result := ABS(x - y) < blad; WriteLn('Roznica wynosi ', ABS(x-y):2:6); WriteLn('Wynik porownania ', Result) End. PROGRAM Przed_Po; Var Literki: Char; Write('Podaj znak: '); ReadLn(Literki); WriteLn('Znak poprzedni to "',PRED(Literki),'"'); WriteLn('Znak nastepny to "',SUCC(Literki),'"'); WriteLn('Program czeka na naciśnięcie Enter...'); ReadLn; End. PROGRAM Punkty_I_oceny1; Var Punkty :Integer; Write('Prosze podac wynik testu: '); ReadLn(Punkty); WriteLn; If Punkty > 59 Then { Poczatek instrukcji If } If Punkty > 69 Then If Punkty > 79 Then If Punkty > 89 Then WriteLn('Doskonale. Twoja ocena to 5') ELSE WriteLn('Bardzo dobrze. Masz 4,5') ELSE WriteLn('Dobrze. Twoja ocena to 4') ELSE WriteLn('Zdales, ale tylko na 3,5') ELSE WriteLn('Moze kiedys bedzie lepiej. Ocena 2'); { Koniec instrukcji If } WriteLn('Program czeka na nacisniecie ENTER..'); ReadLn End. PROGRAM Punkty_I_oceny2; Var Punkty :Integer; A, B, C, D, F :BOOLEAN; Write('Prosze podac wynik testu: '); ReadLn(Punkty); A := (Punkty >= 90) AND (Punkty <= 100); B := (Punkty >= 80) AND (Punkty < 90); C := (Punkty >= 70) AND (Punkty < 80); 1
11 D := (Punkty >= 60) AND (Punkty < 70); F := (Punkty < 60) AND (Punkty >= 0); WriteLn; { Poczatek instrukcji If } { } If A Then WriteLn('Doskonale. Twoja ocena to 5') ELSE If B Then WriteLn('Bardzo dobrze. Masz 4,5') ELSE If C Then WriteLn('Dobrze. Twoja ocena to 4') ELSE If D Then WriteLn('Zdales, ale tylko na 3,5') ELSE If F Then WriteLn('Moze kiedys bedzie lepiej. Ocena 2') ELSE WriteLn('Podales liczbe spoza zakresu.'); { Koniec instrukcji If } { } WriteLn('Program czeka na nacisniecie ENTER..'); ReadLn End. PROGRAM GoToLoop(OUTPUT); LABEL 1000; { deklaracja etykiety } Var Counter :Integer; Counter := 0; 1000: Counter := Counter + 1; If Counter <= 5 Then WriteLn('Przepraszam, powtorz..'); GOTo 1000 { restart } End; WriteLn; WriteLn('Program czeka na Enter..'); ReadLn End. Program Srednia_1; Var Average, Sum, Number :Real; N, Counter :Integer; Sum := 0; Write('Podaj liczbe elementow: '); ReadLn(N); FOR Counter := 1 To N Do Write('Podaj element nr',counter,': '); ReadLn(Number); Sum := Sum + Number; End; Average := Sum / N; WriteLn('Suma liczb = ', Sum:0:2); WriteLn('Srednia liczb = ', Average:0:2); WriteLn; WriteLn('Program czeka na nacisniecie Enter..'); ReadLn End. PROGRAM Średnia2; Var Average, Sum, Number :Real; Counter, N :Integer; Sum := 0; Counter := 1; 2
12 Write('Podaj liczbe elementow: '); ReadLn(N); While Counter <= N Do Write('Podaj element nr',counter,': '); ReadLn(Number); Sum := Sum + Number; Counter := Counter + 1 End; Average := Sum / N; WriteLn; WriteLn('Suma liczb = ', Sum:0:2); WriteLn('Srednia liczb = ', Average:0:2); WriteLn; WriteLn('Program czeka na nacisniecie Enter..'); ReadLn End. PROGRAM Silnia; Var Silnia :Real; Licznik, Numer :Integer; Write('Podaj liczbe (lub 0, aby skonczyc ): '); ReadLn(Numer); While Numer <> 0 Do { Poczatek petli While } Silnia := 1; Licznik := 1; Repeat { Poczatek petli Repeat } Silnia := Silnia * Licznik; Licznik := Licznik + 1; Until Licznik = Numer + 1; { Koniec petli Repeat } WriteLn('Silnia liczby ', Numer,' to ', Silnia:0:0); Write('Podaj liczbe (lub 0, aby skończyć ): '); ReadLn(Numer) End; { Koniec petli While } WriteLn('Jestem tutaj!') End. PROGRAM Wyliczanie; Var Month :(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); WriteLn; FOR Month := Jan To Dec Do Write(ORD(Month),' ') End. PROGRAM Sortowanie; Const RozMac = 6; Type Zakres = 1..RozMac; LiczbyArray = ARRAY[Zakres] OF Integer; Var Liczby : LiczbyArray; I, J, Pot : Integer; { Czytaj tablice } FOR I := 1 To RozMac Do Write('Podaj element nr', I,': '); ReadLn(Liczby[I]) End; { Sortuj tablice przykład prostego sortowania} FOR I := 1 To RozMac-1 Do { petla zewnetrzna } { blok opcjonalny } FOR J := I+1 To RozMac Do { petla wewnetrzna } If Liczby[I] > Liczby[J] Then { zamien elementy } Pot := Liczby[J]; 3
13 Liczby[J] := Liczby[I]; Liczby[I] := Pot End End { koniec petli wewnetrznej } End; { koniec petli zewnetrznej } WriteLn; { Wyswietlanie wynikow } WriteLn('Posortowana tablica: '); FOR I := 1 To RozMac Do WriteLn(Liczby[I]); WriteLn('Program czeka na nacisniecie Enter..'); ReadLn End. PROGRAM Znaki_wyprowadzanie; CONST LF = CHR(10); CR = CHR(13); Var X, Y, Z :Integer; Write('Podaj trzy liczby: '); RaedLn(X, Y, Z); WriteLn('X=', X, CR, LF, 'Y=', Y, CR, LF, 'Z=', Z) End. Program Test_unita; Uses unit1; Var i, j, k : Integer; Function Potega(p: Integer; w : Integer):Integer; if w=1 Then Potega:= p else Potega:= p*potega(p,w-1); i:=1; j:=2; k:=3; test(j,k); k:= silnia(k); End. 4
14 Unit unit1; Interface Procedure test(var liczba : Integer; numer : Integer); Function Silnia(numer : Integer): Integer; Implementation Procedure test(var liczba : Integer; numer : Integer); Var lokal : Integer; Liczba:= Liczba*2; numer:= numer+2; lokal:= 3; WriteLn('To jest zmienna przekazana przez nazwę liczba=',liczba); WriteLn('To jest zmienna przekazana przez wartość numer=',numer); WriteLn('To jest zmienna lokalna=',lokal); End; Function Silnia(numer : Integer) : Integer; if numer = 0 then silnia:= 1; if numer > 0 then silnia:= numer * silnia(numer-1); End; End. PROGRAM Sortowanie_przez_wstawianie; USES Crt; CONST n_max=20; (* maksymalna liczba elementow *) TYPE Dane = ARRAY [1..n_max] OF INTEGER; VAR n : INTEGER; T_1 : Dane; (**********************************) PROCEDURE Wprowadzanie( VAR T:Dane); VAR i :INTEGER; (* zmienna kontrolna *) Writeln(' Wprowadzanie danych do tablicy '); Write (' Podaj ilosc elementow (n<=20), n= '); Readln (n); Write (' Podaj elementy tablicy w kolejnosci'); FOR i:=1 TO n DO Write(' element nr= ',i,', T_1[ ', i,' ] = '); Readln (T[i]); (**********************************) PROCEDURE Odczyt_tablicy( VAR T:Dane); VAR i :INTEGER; { zmienna kontrolna } Write (' Odczytaj elementy tablicy w kolejnosci'); FOR i:=1 TO n DO 5
15 Write(' element nr= ',i,', T_1[ ',i,' ] = '); Writeln (T[i]) (***********************************) PROCEDURE Sort_wstaw( VAR T:Dane); VAR i, k :INTEGER; (* zmienna kontrolna *) z_p :INTEGER; (*z_p- zmienna pomocnicza do zamiany elementow *) FOR i:=2 TO n DO k:=i; z_p:=t[k]; (* zapamietanie elementu do wstawienia *) WHILE (k>1) AND (T[k-1]> T[k]) DO (* przesuniecie elementow w prawo*) T[k]:=T[k-1]; T[k-1]:=z_p; k:=k-1 T[k]:=z_p; (* wstawienie danego elementu *) Writeln(' Tablica uporzadkowana'); (***********************************) PROGRAM Funkcja_minimum; USES Crt; VAR a,b, min, mniej : LONGINT; {CIAŁO GŁÓWNE PROGRAMU} Wprowadzanie (T_1); Sort_wstaw (T_1); Odczyt_tablicy (T_1); REPEAT UNTIL KeyPressed END. Tak_Nie : CHAR; FUNCTION Mniejsza:LONGINT; REPEAT Writeln (' Wyznaczenie liczby mniejszej '); Writeln (' Podaj dwie niezerowe rozne liczby naturalne:'); Write (' Podaj liczbe naturalna a= '); Readln (a); Write (' Podaj liczbe naturalna b= '); Readln (b); UNTIL a<>b; IF a>b THEN min:=b Else min:=a; Mniejsza:=min; (* Nadanie funkcji wartosci min *) (*************************************) REPEAT mniej:=mniejsza; (*Przypisanie wyniku funkcji zmiennej *) Writeln(' Z liczb ',a,' i ',b,' liczba mniejsza to ',mniej); Writeln (' Jeszcze raz?(t)ak'); Tak_Nie:=UpCase(ReadKey) UNTIL NOT (Tak_Nie='T') END. PROGRAM Rzut_moneta; USES Crt; VAR i, ORZEL, RESZKA, x : INTEGER; Tak_Nie : CHAR; 6
16 CONST n=20; REPEAT RANDOMIZE ; ORZEL:=0; RESZKA:=0; FOR i:=1 TO n DO x:=random(2); IF x=0 THEN ORZEL:=ORZEL+1 ELSE RESZKA:=RESZKA+1; Writeln(' Losowy rzut moneta '); Writeln(' Moneta rzucano ', i,' razy '); Writeln(' Wylosowano orla... ', ORZEL:2,' razy'); Writeln(' Wylosowano reszke.. ', RESZKA:2,' razy'); Writeln (' Jeszcze raz?(t)ak'); Tak_Nie:=UpCase(ReadKey) UNTIL NOT (Tak_Nie='T') END. PROGRAM Zmiana_wartosci_elementu; USES Crt; VAR f : FILE OF INTEGER; x : INTEGER; y : INTEGER; ch : CHAR; (****************************) ASSIGN(f,'plik.dok'); REWRITE(f); Writeln(' Zmiana wartosci elementu'); Writeln(' Poz. Wartosc '); FOR x:=1 TO 10 DO Write(f,x); Writeln(' ',x:2,' - ', x:2); Seek(f,2); x:=23; Write(f,x); Seek(f,0); Writeln(' Po zmianie wartosci na poz. 3 '); FOR x:=1 TO 10 DO Read(f,y); Writeln(' ',x:2,' - ', y:2); ch:=readkey; END. PROGRAM Kombinacja_n_po_k; USES Crt; CONST Max_el = 100; TYPE Tablica = ARRAY [1.. Max_el] OF INTEGER; VAR n,k : INTEGER; Tab : Tablica; Tak_Nie : CHAR; 7
17 (**********************************) PROCEDURE Wyswietlanie(k :INTEGER); VAR Nr_elementu :INTEGER; (* dla Wyswietlanie *) FOR Nr_elementu := 1 TO k DO Write(Tab[Nr_elementu] : 4); (**********************************) PROCEDURE Kombinacja(a, b : INTEGER); VAR Element : INTEGER; (* dla Kombinacja *) FOR Element := b to n - k + a DO Tab[a] := Element; IF a < k THEN Kombinacja(a +1, Element+1) ELSE Wyswietlanie(k) END (*********************************) WHILE n<=k DO Writeln(' Wyznaczenie wszystkich kombinacji n po k'); Write(' Podaj ilosc elementow zbioru n: '); ReadLn(n); Write(' Podaj ilosc elem. podzbioru k: '); ReadLn(k); IF n >= k THEN Kombinacja(1,1); REPEAT UNTIL KeyPressed; END. 8
18 PROGRAM Tworzenie_obiektu_1; USES Crt; TYPE Osoba = OBJECT Nazwisko : STRING[35]; Imie, Miejsce_ur: STRING[20]; Data_ur : STRING[12]; Procedure Inicjuj; Procedure Drukuj; (*************************) Procedure Osoba.Inicjuj; Writeln(' Wprowadzanie danych do pol obiektu'); Write(' Podaj Nazwisko: '); Readln(Nazwisko); Write(' Podaj Imie: '); Readln(Imie); Write(' Podaj Miejsce urodzenia : '); Readln(Miejsce_ur); Write(' Podaj Data urodzenia: '); Readln(Data_ur); (************************) Procedure Osoba.Drukuj; Writeln(' Drukowanie zawartosci pol obiektu'); Writeln(' Nazwisko : ',Nazwisko); Writeln(' Imie : ',Imie); Writeln(' Miejsce urodzenia : ',Miejsce_ur); Writeln(' Data urodzenia : ',Data_ur); PROGRAM Dziedziczenie_1; USES Crt; TYPE Osoba = OBJECT Nazwisko : STRING [35]; Imie : STRING [20]; Miejsce_ur: STRING [20]; Data_ur : STRING [12]; Procedure Inicjuj; Procedure Drukuj; Kadra = OBJECT(Osoba) Wyksztalcenie : STRING [12]; Stanowisko : STRING [20]; Procedure Inicjuj; Procedure Drukuj; Procedure Osoba.Inicjuj; Write(' Podaj Nazwisko: '); Readln(Nazwisko); Write(' Podaj Imie: '); Readln(Imie); Write(' Podaj Miejsce urodzenia : '); Readln(Miejsce_ur); Write(' Podaj Data urodzenia: '); Readln(Data_ur); Procedure Osoba.Drukuj; VAR Osoba_1 : Osoba; (**********************) Osoba_1.Inicjuj; ReadKey; Osoba_1.Drukuj; ReadKey; END. 9
19 Writeln(' Nazwisko : ',Nazwisko); Writeln(' Imie : ',Imie); Writeln(' Miejsce urodzenia : ',Miejsce_ur); Writeln(' Data urodzenia : ',Data_ur); Procedure Kadra.Inicjuj; Osoba.Inicjuj; Write(' Podaj Wyksztalcenie: '); Readln(Wyksztalcenie); Write(' Podaj Stanowisko : '); Readln(Stanowisko); Procedure Kadra.Drukuj; Osoba.Drukuj; Writeln(' Wyksztalcenie : ',Wyksztalcenie); Writeln(' Stanowisko : ',Stanowisko); VAR Osoba_1 : Osoba; Kierownik_1 : Kadra; (**********************) WriteLn('Obiekt po zainicjowaniu przez konstruktor:'); Writeln(' Wprowadzanie danych do pol obiektu'); Osoba_1.Inicjuj; Kierownik_1.Inicjuj; Writeln(' Drukowanie zawartosci pol obiektu'); Osoba_1.Drukuj; Kierownik_1.Drukuj; ReadKey; END. PROGRAM Dane_osobowe; USES Crt; TYPE Dane_personalne = RECORD Imie : STRING[20]; Nazwisko : STRING[30]; Nr_ew : BYTE; Plec : CHAR VAR Dane : Dane_personalne; Licznik : BYTE; (*******************) Writeln(' Dane personalne pracownikow') ; FOR Licznik := 1 TO 5 DO Write('Podaj Nr_ew ',Licznik,'-ej osoby : '); Readln(Dane.Nr_ew); Write('Podaj Nazwisko ',Licznik,'-ej osoby : '); Readln(Dane.Nazwisko); Write('Podaj Imie ',Licznik,'-ej osoby : '); Readln(Dane.Imie); Write('Podaj Plec M/K ',Licznik,'-ej osoby : '); Readln(Dane.Plec); END. 10
20 PROGRAM Dane_osobowe2; USES Crt; TYPE Dane_personalne = RECORD Imie : STRING[20]; Nazwisko : STRING[30]; Nr_ew : BYTE; Plec : CHAR f_plik = FILE OF Dane_personalne; VAR Lista_p : f_plik; Dane : Dane_personalne; Licznik : BYTE; (**********************************) PROCEDURE Zapisz; ASSIGN(Lista_p,'plik_1a.dan'); REWRITE(Lista_p); Writeln(' Dane personalne pracownikow') ; FOR Licznik := 1 TO 5 DO Write('Podaj Nr_ew ',Licznik,'-ej osoby : '); Readln(Dane.Nr_ew); Write('Podaj Nazwisko ',Licznik,'-ej osoby : '); Readln(Dane.Nazwisko); Write('Podaj Imie ',Licznik,'-ej osoby : '); Readln(Dane.Imie); Write('Podaj Plec M/K ',Licznik,'-ej osoby : '); Readln(Dane.Plec); Write(Lista_p,Dane); CLOSE(Lista_p); PROCEDURE Odczyt; Writeln(' Dane personalne pracownikow'); ASSIGN(Lista_p,'plik_1a.dan'); RESET(Lista_p); WHILE NOT Eof(Lista_p) DO Read(Lista_p,Dane); Write(Dane.Nr_ew,' '); Write(Dane.Nazwisko,' '); Write(Dane.Imie,' '); Write(Dane.Plec); Writeln CLOSE(Lista_p); (*********************) Zapisz; Odczyt; REPEAT UNTIL KeyPressed END. 11
21 PROGRAM Obecnosc_litery_a; USES Crt; VAR tekst : STRING; i : INTEGER; ile : INTEGER; (*********************) Writeln(' Wyznaczenie liczby malych liter ''a'' w tekscie'); Writeln(' Napisz tekst i nacisnij ENTER'); Readln(tekst); ile:=0; FOR i:=1 TO LENGTH(tekst) DO IF (tekst[i]='a') THEN ile:=ile+1; Writeln(' Liczba malych liter ''w'' w tekscie : ',ile); REPEAT UNTIL KeyPressed END. PROGRAM Wielomian; USES Crt; VAR n, i :INTEGER; a, x, y:real; i:=0; y:=0; Writeln ('Obliczenie wartosci wielomianu '); Write ('Podaj stopien wielomianu n = '); Readln (n); Write ('Podaj wartosc x = '); Readln (x); Write ('Podaj ',n+1,' wartosci wpolczynnika a(n) '); Write ('- od a(0) do a(',n,'):'); REPEAT Write ('a(',i,') = '); Readln (a); y:=y*x+a; i:=i+1; UNTIL i>n; END. Write ('x = ',x:5:2,', y = ',y:5:2) Program Zabawa_z_macierza; Uses Crt; { Program demonstrujący podstawowe operacje na macierzach. } Const rozmiar = 5; Type macierz = array[1..rozmiar,1..rozmiar] of Real; var a, b, c : macierz; Procedure wczytaj_macierz(var m : macierz; roz : Integer); var i, j : Integer; {Indeksy do przegladania macierzy. } Randomize; WriteLn('Wprowadzanie element w macierzy: '); for i:= 1 to roz do for j:= 1 to roz do 12
22 m[i,j]:= random(10); Write('Podaj element m[',i,',',j,']:= ',m[i,j]:2:0); WriteLn; {ReadLn(m[i,j]);} Procedure wyswietl_macierz(var m : macierz; roz : Integer); var i, j : Integer; {Indeksy do przegladania macierzy. } WriteLn('Wyswietlanie elementów macierzy: '); for i:= 1 to roz do for j:= 1 to roz do Write( m[i,j]:2:0,' '); WriteLn; Procedure wyswietl_przekatna(var m : macierz; roz : Integer); var i, j : Integer; {Indeksy do przegladania macierzy. } WriteLn('Wyswietlanie przekatnych macierzy: '); for i:= 1 to roz do for j:= 1 to roz do if i= j then WriteLn('Element m[',i,',',j,']:= ',m[i,j]:2:0); Procedure dodaj_macierz(var m, n, o : macierz; roz : Integer); var i, j : Integer; {Indeksy do przegladania macierzy. } for i:= 1 to roz do for j:= 1 to roz do o[i,j]:= m[i,j]+n[i,j]; Procedure transponuj(var m : macierz; roz : Integer); var i, j : Integer; {Indeksy do przegladania macierzy. } temp : Real; o : macierz; for i:= 1 to roz do for j:= 1 to roz do o[i,j]:= 0; { Wyzeruj elementy macierzy wynikowej. } for i:= 1 to roz do for j:= 1 to roz do o[j,i]:= m[i,j]; m:= o; Procedure pomnoz_macierz(var m, n, o : macierz; roz : Integer); var i, j, k : Integer; {Indeksy do przegladania macierzy. } for i:= 1 to roz do for j:= 1 to roz do o[i,j]:= 0; { Wyzeruj elementy macierzy wynikowej. } for i:= 1 to roz do for j:= 1 to roz do for k:= 1 to roz do o[i,j]:= o[i,j] + m[i,k]*n[k,j]; function max(m : macierz; r : Integer) : Real; var i, j : Integer; temp : Real; 13
23 temp:= 0; for i:= 1 to r do for j:= 1 to r do if m[i,j] > temp then temp:= m[i,j]; max:= temp; function min(m : macierz; r : Integer) : Real; var i, j : Integer; temp : Real; temp:= 0; for i:= 1 to r do for j:= 1 to r do if m[i,j] < temp then temp:= m[i,j]; min:= temp; { Ciało główne programu. } wczytaj_macierz(a,rozmiar); Delay(500); wczytaj_macierz(b,rozmiar); dodaj_macierz(a,b,c,rozmiar); pomnoz_macierz(a,b,c,rozmiar); wyswietl_macierz(a,rozmiar); wyswietl_macierz(b,rozmiar); wyswietl_macierz(c,rozmiar); transponuj(c,rozmiar); wyswietl_macierz(c,rozmiar); WriteLn('Maximum macierzy: ', max(c,rozmiar):2:0); WriteLn('Minimum macierzy: ', min(c,rozmiar):2:0); wyswietl_przekatna(c,rozmiar); ReadKey; end. Program Stos1; { Demonstracja najprostszej struktury dynamicznej opartej na stosie } { W tej wersji procedury pracują w oparciu o przekazywanie do nich zmiennych poprzez nazwę. } { Stos: to struktura danych składająca się z liniowo uporządkowanych elementów, z których tylko najmłodszy jest w danej chwili dostępny.} Uses Crt; type wskaznik_stosu = ^komorka_danych; komorka_danych = record dane : String[10]; wskaznik : wskaznik_stosu; var wsk : wskaznik_stosu; i : Integer; element : String[10]; procedure na_stos(var w : wskaznik_stosu); var wsk_r : wskaznik_stosu; wsk_r:= w; New(w); w^.dane:= element; w^.wskaznik:= wsk_r; procedure ze_stosu(var w : wskaznik_stosu); { Procedura usuwajaca wierzcholek ze stosu. } var wsk_r : wskaznik_stosu; GotoXY(14,WhereY); WriteLn(w^.dane); wsk_r:= w^.wskaznik; Dispose(w); w:=wsk_r; 14
24 function il_elementow(wp : wskaznik_stosu) : Integer; { Funkcja zlicza rekurencyjnie kolejne elementy stosu. } if wp= Nil then il_elementow:= 0 else il_elementow:= il_elementow(wp^.wskaznik) + 1; WriteLn('Podaj kolejne wyrazy do wstawienia na stos (k- kończy pracę programu)'); wsk:= Nil; i:= 0; While element <> 'k' do ReadLn(element); If element <> 'k' then na_stos(wsk); Writeln('Koniec budowania stosu'); WriteLn('Wyswietlam zawartosc stosu : (',il_elementow(wsk), ' element w)'); WriteLn('Lp. element: '); While wsk <> Nil do Inc(i); Write(i); ze_stosu(wsk); Repeat Until KeyPressed; end. Program Kolejka1; { Program demonstrujący prace kolejki.} { Różni się ona od pracy stosu tym, że dołączenie elementów odbywa się tylko na końcu kolejki "przed nilem", zaś usuwanie elementów tylko na początku - tak samo jak w stosie. } { W tej wersji procedury pracują w oparciu o przekazywanie do nich zmiennych poprzez nazwę. } uses Crt; type wskaznik = ^komorka; { Wskaznik danych } komorka = record { Podstawowa komórka danych. } dane : String[10]; wsk : wskaznik; var pocz_kolejki, kon_kolejki, wsk_rob : wskaznik; i, j : Integer; tekst : String[10]; wybor : Char; procedure do_kolejki(var wp, wk : wskaznik); { wk - wskaznik konca kolejki} { wp - wskaznik poczatka kolejki} var wsk_r : wskaznik; wsk_r:= wk; New(wk); { Pobieramy nowy wskaznik. } ReadLn(tekst); { Pobieramy nastepny element danych. } wk^.dane:=tekst; wk^.wsk:= Nil; if (wp = Nil) and (wsk_r = Nil) then wp:= wk else wsk_r^.wsk:= wk; { Przypadek dopisywania pierwszego el. do listy else - przesuwanie konca kolejki } procedure z_kolejki(var wp, wk : wskaznik); var wsk_r : wskaznik; if wp <> Nil then { Jesli kolejka nie jest pusta to...} 15
25 wsk_r:= wp; Write(wp^.dane); Dispose(wp); wp:=wsk_r^.wsk; if wp = Nil then wk:= Nil; { Jesli ostatni element zostal } end { usuniety, to wpisz Nil na koncu } function il_elementow(wp : wskaznik) : Integer; { Funkcja zlicza rekurencyjnie elementy kolejki } if wp = Nil then il_elementow:= 0 else il_elementow:= il_elementow(wp^.wsk) + 1; procedure wyswietl_menu(wp, wk : wskaznik); { Wyswietlanie menu } { Parametry zostaˆy przekazane przez wartosc } WriteLn('1- Dopisz do kolejki Liczba elementow listy :', il_elementow(wp)); Write('2- Usuä z kolejki Pierwszy element : '); if wp <> Nil then WriteLn(wp^.dane) else WriteLn; Write('3- Wy wietl kolejk Ostatni element : '); if wk <> Nil then WriteLn(wk^.dane) else WriteLn; WriteLn('4- Koniec programu'); procedure wyswietl_kolejke(wp: wskaznik); var j : Integer; {Licznik element w} j:=0; { Wyzeruj licznik elementow kolejki. } WriteLn('Lp: element:'); While wp <> Nil do if (j mod 23 = 0) and (j <> 0) then Write('Nacisnij dowolny klawisz... '); ReadKey; Inc(j); Writeln(j,'. ',wp^.dane); { Przegladanie kolejki aľ do koäca. } wp:=wp^.wsk; Write('Nacisnij dowolny klawisz...'); ReadKey; pocz_kolejki:=nil; kon_kolejki:=nil; While wybor <> '4' do wyswietl_menu(pocz_kolejki, kon_kolejki); ReadLn(wybor); case wybor of '1': do_kolejki(pocz_kolejki, kon_kolejki); '2': z_kolejki(pocz_kolejki, kon_kolejki); '3': wyswietl_kolejke(pocz_kolejki); '4': exit; end. 16
26 Program Baza_danych; Uses Crt; Const MAX = 10; { Maksymalna liczba elementów bazy. } NAZWA = 'BAZA.DAT'; Type osoby = record nazwisko : String[20]; imie : String[15]; pesel : Integer; tab_osoby = array [1..MAX] of osoby; Var osoba : osoby; eb : Integer; { Bieżący rekord bazy. } baza : tab_osoby; wybor: Char; function StrComp(a, b: String) : Integer; forward; procedure dodaj_rekord; if eb+1 > MAX then WriteLn('Przekroczona maksymalna ilość elementów bazy!!!'); end else Inc(eb); with baza[eb] do Write('Podaj Nazwisko: '); ReadLn(nazwisko); Write('Podaj Imię: '); ReadLn(imie); Write('Podaj PESEL: '); ReadLn(pesel); procedure usun_rekord; var temp : Integer; i : Integer; if eb > 0 then WriteLn(' W BAZIE JEST ',eb,' - REKORDÓW'); WriteLn(' =============================='); WriteLn; Repeat Write('Podaj numer rekordu do usunięcia: '); ReadLn(temp); Until (temp in [1..eb]); { Czekaj na poprawny numer. } for i:= temp to eb DO baza[i]:= baza[i+1]; Dec(eb); end else WriteLn('BAZA DANYCH JEST PUSTA!!!'); Write('Nacisnij dowolny klawisz...'); ReadKey; 17
27 procedure wyswietl_baze; { Wyświetl zawartość bazy. } var j: Integer; if eb > 0 then WriteLn('Lp: Nazwisko: Imie: PESEL:'); for j:=1 to eb do if (j mod 23 = 0) and (j > 0) then Write('Nacisnij dowolny klawisz... '); ReadKey; Write(j,'.'); GoToXY(6, WhereY); Write(baza[j].nazwisko); GoToXY(27, WhereY); Write(baza[j].imie); GoToXY(46, WhereY); WriteLn(baza[j].pesel); end else WriteLn('BAZA DANYCH JEST PUSTA!!!'); Write('Nacisnij dowolny klawisz...'); ReadKey; procedure zapisz_baze; var plik : file of osoby; i : Integer; Assign(plik,NAZWA); { Otwórz archiwum bazy...} Rewrite(plik); { Ustaw plik w pozycji do zapsiu od nowa...} for i:= 1 to eb do Write(plik, baza[i]); Close(plik); procedure wczytaj_baze; var plik : file of osoby; Assign(plik,NAZWA); { Otwórz archiwum bazy...} Reset(plik); { Ustaw plik w pozycji do odczytu od poczatku...} eb:= 0; while not EoF(plik) do Read(plik, baza[eb+1]); Inc(eb); Close(plik); procedure sortowanie_b; var przestawil : Boolean; i : Integer; temp : osoby; przestawil:= True; while przestawil do przestawil:= False; for i:= 1 to eb-1 do if StrComp(baza[i].nazwisko,baza[i+1].nazwisko) > 0 then temp:= baza[i]; baza[i]:= baza[i+1]; baza[i+1]:= temp; przestawil:= True; 18
28 function StrComp(a, b: String) : Integer; if a > b then StrComp:= 1; if a = b then StrComp:= 0; if a < b then StrComp:= -1; procedure wyswietl_menu; { Wyswietlanie menu. } WriteLn(' PROGRAM BAZA DANYCH - STRUKTURA TABLICA '); WriteLn(' ========================================= '); WriteLn('1- Dopisz do bazy Liczba elementow bazy :',eb); WriteLn('2- Usun z bazy'); WriteLn('3- Wyswietl baze'); WriteLn('4- Zapisz baze do pliku BAZA.DAT'); WriteLn('5- Wczytaj baze z pliku BAZA.DAT'); WriteLn('6- Posortuj bazę -metoda bąbelkowa'); WriteLn('7- Koniec programu'); eb:= 0; While wybor <> '7' do wyswietl_menu; ReadLn(wybor); case wybor of '1': Dodaj_rekord; '2': Usun_rekord; '3': Wyswietl_baze; '4': Zapisz_baze; '5': Wczytaj_baze; '6': Sortowanie_b; '7': exit; end. 19
29 Program Lista_jednokierunkowa; { Program demonstrujący działanie listy jednokierunkowej. } { Lista (liniowa) to uporządkowany zbiór składników, z którego w dowolnym miejscu można usunąć lub dołączyć składnik. } { Lista jednokierunkowa to jedna z odmian struktury listowej, którą odróżnia od kolejki forma procedur dodawania i usuwania składników, które muszą uwzględniać istniejący porządek listy. } uses Crt, Strings; type wskaznik = ^komorka; { Wskaznik danych } komorka = record { Podstawowa komórka danych. } dane : Integer; wsk : wskaznik; var poczatek : wskaznik; { Wskaźnik początku } wb : wskaznik; { Wskaźnik bieżącego położenia } wybor : Char; function il_elementow(wp : wskaznik) : Integer; forward; function sz_element(wp : wskaznik; nr : Integer) : wskaznik; forward; procedure wstaw_na_koncu(var wp : wskaznik; liczba : Integer); var n, k : wskaznik; k:= wp; While k^.wsk <> Nil do k:=k^.wsk; New(n); { Pobieramy nowy wskaznik. } n^.dane:= liczba; n^.wsk:= Nil; if wp = Nil then wp:= n { Zapamietujemy pierwszy element. } else k^.wsk:= n; { Koniec wstaw_na_koncu. } procedure wstaw_przed(var w : wskaznik; liczba : Integer); var n : wskaznik; { w wskazuje na element, przed ktory nalezy wstawic nowy element. } New(n); With n^ do dane:= w^.dane; wsk:= w^.wsk; w^.wsk:= n; { Wstawienie po elemencie p. } w^.dane:= liczba; { Zamiana wartosci elementow 'p' i 'n'.} procedure do_listy(var wp : wskaznik); { Wstawianie do listy na odpowiednie miejsce. Elementy powtarzające się nie są wstawiane.} var wsk_r : wskaznik; liczba : Integer; wsk_r:= wp; ReadLn(liczba); While (wsk_r <> Nil) AND (liczba < wsk_r^.dane) do wsk_r:=wsk_r^.wsk; if wsk_r = Nil then wstaw_na_koncu(wp, liczba) else { Wariant ze wstawieniem na koncu. } if not (liczba = wsk_r^.dane) then {Jesli element nie powtórzony..} wstaw_przed(wsk_r, liczba); { Wstawienie przed elementem. } procedure z_listy(var wp, wb : wskaznik); var wsk_r, temp : wskaznik; 20
30 nr : Integer; if wp <> Nil then { Jeśli lista nie jest pusta to...} WriteLn('Podaj numer elementu do usunięcia z przedzialu (1 - ', Repeat il_elementow(wp),')'); Read(nr); Until (nr in [1..il_elementow(wp)]); { Czekaj na właściwy numer. } wb:= sz_element(wp,nr); { Odnajdujemy wskaznik na usuwany element. } Writeln('Usuwam element nr:',nr,' ',wb^.dane,' segment: ',seg(wb^.wsk), ' ofset: ',ofs(wb^.wsk)); ReadKey; wsk_r:= wp; if wp= wb then { Jeśli to jest pierwszy element to.. } wb:= wp^.wsk; Dispose(wp); wp:= wb; end else { w przeciwnym razie szukaj poprzednika.. } While wsk_r^.wsk <> wb do wsk_r:= wsk_r^.wsk; wsk_r^.wsk:= wb^.wsk; { Rozcinam listę.. } Dispose(wb); { zwalniam pamięć usuwanego elementu.. } wb:= wsk_r^.wsk; { i przyklejam ogon listy. } function il_elementow(wp : wskaznik) : Integer; { Funkcja zlicza rekurencyjnie elementy listy } if wp = Nil then il_elementow:= 0 else il_elementow:= il_elementow(wp^.wsk) + 1; function sz_element(wp : wskaznik; nr : Integer) : wskaznik; var i : Integer; i:= 1; while (wp^.wsk <> Nil) and (i < nr) do wp:= wp^.wsk; Inc(i); sz_element:= wp; procedure wyswietl_menu(wp : wskaznik); { Wyswietlanie menu. } WriteLn(' WARIANT LISTY ZAWIERAJĄCEJ LICZBY '); WriteLn(' =================================== '); WriteLn('1- Dopisz do listy Liczba elementow listy :', il_elementow(wp)); Write('2- Usun z listy Poczatek listy : '); if wp <> NIl then WriteLn(wp^.dane) else WriteLn; WriteLn('3- Wyswietl liste'); WriteLn('4- Koniec programu'); 21
31 procedure wyswietl(wp : wskaznik); { Wyświetl zawartość listy. } var j: Integer; j:=0; { Wyzeruj licznik elementow listy. } WriteLn('Lp: element:'); While wp <> Nil do if (j mod 23 = 0) and (j <> 0) then Write('Nacisnij dowolny klawisz... '); ReadKey; Inc(j); Writeln(j,'. ',wp^.dane,' segment: ',seg(wp^.wsk), ' ofset: ',ofs(wp^.wsk)); { Przegladanie listy aż do końca.} wp:=wp^.wsk; Write('Nacisnij dowolny klawisz...'); ReadKey; poczatek:=nil; While wybor <> '4' do wyswietl_menu(poczatek); ReadLn(wybor); case wybor of '1': do_listy(poczatek); '2': z_listy(poczatek, wb); '3': wyswietl(poczatek); '4': exit; end. Program test; {Przyklad programu demonstrujacego dzialanie testu {wpisywanie pytan i odpowiedzi, losowanie pytan przeprowadzanie testu i ocenianie} Uses Crt; Const l_odp = 4; plik1 = 'pytania.dat'; {Plik zawierający pytania i odpowiedzi} plik2 = 'config.txt'; {Plik do udoskonalania pracy programu} Type dane = record pyt : String; odp : array[1..l_odp] of String; nr_popr : Integer; wskaznik_do_pytan = ^pojemnik_na_pytania; pojemnik_na_pytania = record pytania : dane; wskaznik : wskaznik_do_pytan; Var pytanie : pojemnik_na_pytania; wsk : wskaznik_do_pytan; il_pyt : Integer; {Ilosc pytan zdefiniowanych w bazie} wiedza : Real; wybor : Char; procedure dodaj_pytanie(var wsk : wskaznik_do_pytan); 22
32 var temp : wskaznik_do_pytan; i : Integer; pytanie : pojemnik_na_pytania; WriteLn(' WPROWADZANIE KOLEJNYCH PYTAN DO PROGRAMU "TEST" -struktura stosowa'); WriteLn(' =================================================================='); if wsk <> Nil then {Jest conajmniej jeden element na stosie} temp:= wsk; New(wsk); {Utw rz adres wskazujący na nowy pojemnik} il_pyt:= il_pyt+1; with wsk^.pytania do WriteLn('Podaj nowe pytanie: '); ReadLn(pyt); for i:= 1 to l_odp do WriteLn('Odpowiedz nr ',i,' '); ReadLn(odp[i]); Repeat Write('Podaj numer poprawnej odpowiedzi: ', '[1..',l_odp,']:= '); ReadLn(nr_popr); Until (nr_popr in [1..l_odp]); wsk^.wskaznik:= temp; end else New(wsk); {Dokladamy pierwszy element} with wsk^.pytania do WriteLn('Podaj nowe pytanie: '); ReadLn(pyt); for i:= 1 to l_odp do WriteLn('Odpowiedz nr ',i,' '); ReadLn(odp[i]); Repeat Write('Podaj numer poprawnej odpowiedzi: ', '[1..',l_odp,']'); ReadLn(nr_popr); Until (nr_popr in [1..l_odp]); il_pyt:= 1; wsk^.wskaznik:= Nil; {Koniec struktury pokazuje na Nil-a} procedure wyswietl_baze_pytan(wsk : wskaznik_do_pytan); { Wyswietl zawartosc bazy pytan } var i, j : Integer; if wsk <> Nil then j:= 1; WriteLn(' Lp: Pytania i odpowiedzi wpisane do bazy. *- odpowiedz prawidlowa'); WriteLn('======================================================================'); while wsk <> Nil do if (j*l_odp mod 40 = 0) then Write('Nacisnij dowolny klawisz... '); ReadKey; 23
33 Write(j,'.'); GoToXY(6, WhereY); WriteLn(wsk^.pytania.pyt); for i:=1 to l_odp do {Wy wietl tre pytania} {oraz jego odpowiedzi} GoToXY(27, WhereY); Write(i,'. ',wsk^.pytania.odp[i]); if wsk^.pytania.nr_popr= i then write(' -*-'); WriteLn; {zaznaczając odpowiedz poprawną *} wsk:= wsk^.wskaznik; Inc(j); end else WriteLn('Brak jest pytan w bazie!!!'); Write('Nacisnij dowolny klawisz...'); ReadKey; procedure zapisz_baze(wsk : wskaznik_do_pytan); var plik : file of dane; i : Integer; if wsk <> Nil then Assign(plik,plik1); { Otworz archiwum bazy pytan...} Rewrite(plik); { Ustaw plik w pozycji do zapisu od nowa...} While wsk <> Nil do for i:= 1 to il_pyt do Write(plik, wsk^.pytania); wsk:= wsk^.wskaznik; Close(plik); end else WriteLn('Brak jest pytan w bazie!!!'); Write('Nacisnij dowolny klawisz...'); ReadKey; {Tutaj trafia oryginaˆ zmiennej wsk} function usun_stos(var wsk : wskaznik_do_pytan) : wskaznik_do_pytan; var temp : wskaznik_do_pytan; {Zwracana warto funkcji} while wsk<> Nil do temp:= wsk^.wskaznik; Dispose(wsk); Dec(il_pyt); wsk:= temp; usun_stos:= Nil; {Ten zapis musi wystąpi wewnątrz kaľdej funkcji} procedure wczytaj_baze(var wsk : wskaznik_do_pytan); var plik : file of dane; temp : wskaznik_do_pytan; znak : Char; if wsk <> Nil then WriteLn('Czy zastapic istniejace dane zestawem pytan '); WriteLn('znajdujacych sie w pliku ', plik1,'? '); Repeat Write('TAK: t/t NIE: n/n '); ReadLn(znak); Until (znak in ['t','t','n','n']); if (znak='t') or (znak='t') then {zastepujemy istniejacy stos} 24
34 {stosem z pliku} Usun_stos(wsk); Assign(plik,plik1); Reset(plik); while not EoF(plik) do temp:= wsk; New(wsk); Read(plik, wsk^.pytania); if il_pyt = 0 then wsk^.wskaznik:= Nil else wsk^.wskaznik:= temp; Inc(il_pyt); Close(plik); end else WriteLn('Pozostawiam aktualnie wczytane dane!'); Write('Nacisnij dowolny klawisz...'); ReadKey; end else {Wczytywanie danych gdy stos jest pusty} Assign(plik,plik1); Reset(plik); while not EoF(plik) do temp:= wsk; New(wsk); Read(plik, wsk^.pytania); if il_pyt = 0 then wsk^.wskaznik:= Nil else wsk^.wskaznik:= temp; Inc(il_pyt); Close(plik); procedure usun_pytanie(var wsk : wskaznik_do_pytan); var i, j : Integer; temp1, temp2, temp3 : wskaznik_do_pytan; {Zmienne pomocnicze umoľliwiające {kontrolowane wyjmowanie element w ze stosu} {wersja z tzw. wartownikiem} if wsk<> Nil then {Jezeli zestaw nie jest pusty to zaczynamy...} temp1:= wsk; {Zapami tujemy wsk aby nie zgubi gˆowy stosu} wyswietl_baze_pytan(wsk); {Wy wietlamy baz pytaä} WriteLn; Repeat Write('Podaj numer pytania do usunięcia ([1..',il_pyt,']:= '); ReadLn(j); {Zabezpieczenie aby pytania pochodziy z bieľącego zakresu} Until (j in [1..il_pyt]); if j=1 then {zwykle usuwanie glowy stosu} temp1:= temp1^.wskaznik; {Wystarczy posuľy si tylko jedną zmienną pomocniczą} Dispose(wsk); wsk:= temp1; Dec(il_pyt); end else {Usuwanie ze srodka lub konca wariant trudniejszy} i:= 1; While i<j do {ustaw sie na pytaniu do usuniecia} temp2:= temp1; {temp2 jest "wartownikiem" przy odliczaniu} temp1:= temp1^.wskaznik; {kolejnych element w stosu} Inc(i); if temp1 <> Nil then temp3:= temp1^.wskaznik 25
35 else temp3:= Nil; temp2^.wskaznik:= temp3; { Sklej oba konce} Dispose(temp1); { Zniszcz wskaznik do wybranego pytania} Dec(il_pyt); end else; {Nic nie rob- ewentualnie informuj ľe brak jest pytaä do usuwania} procedure przeprowadz_test(var wsk : wskaznik_do_pytan); { Procedura przeprowadzania testu losuje zadana ilosc razy pytania usuwajac je z kopii stosu, aby uniknac wielokrotnego losowania tych samych pytan. } var i,j,k,wynik : Integer; los : Word; odp_u : Integer; {Numer odpowiedzi wybrany przez ucznia.} ocena : Real; kopia, temp1, temp2, temp3 : wskaznik_do_pytan; if wsk<>nil then {Jeľeli nie jest pusty moľna rozpoczą losowanie} wiedza:= 0; WriteLn(' Losowanie pytan do przeprowadzenia testu.'); WriteLn('=========================================='); Randomize; {Losowanie numer w pytan w zakresie 1..il_pyt} Repeat Write('Podaj liczbe pytan do wylosowania z przedzialu : ', '[1..',il_pyt,']'); ReadLn(los); Until (los in [1..il_pyt]); ocena:= (1/los)*100; {Wyliczenie w procentach warto ci jednego pytania.} WriteLn(' Wylosowano nastepujace pytania: '); WriteLn('================================='); for i:= 1 to los do wynik:= Random(los-1)+1; {Losowanie w przedziale 1-los} temp1:= wsk; {Zapami tanie gˆowy stosu} if wynik=1 then {zwykle usuwanie glowy stosu} Write(i,'.'); GoToXY(6, WhereY); WriteLn(wsk^.pytania.pyt); for k:=1 to l_odp do {Wy wietl pytanie i dost pne odpowiedzi} GoToXY(27, WhereY); Write(k,'. ',wsk^.pytania.odp[k]); if wsk^.pytania.nr_popr= k then write(' -*-'); WriteLn; Repeat Write('Podaj numer poprawnej odpowiedzi [1..',l_odp,']: '); ReadLn(odp_u); Until (odp_u in [1..l_odp]); If (odp_u = wsk^.pytania.nr_popr) then wiedza:= wiedza+ocena; temp1:= wsk^.wskaznik; Dispose(wsk); {Zwykˆe usuni cie gˆowy stosu} wsk:= temp1; {gdy wylosowano pierwsze pytanie} Dec(il_pyt); Dec(los); end else {Usuwanie ze srodka lub konca} j:= 1; While j<wynik do {ustaw sie na pytaniu do usuniecia} temp2:= temp1; {temp2 jest "wartownikiem"} temp1:= temp1^.wskaznik; Inc(j); Write(i,'.'); GoToXY(6, WhereY); WriteLn(temp1^.pytania.pyt); 26
36 for k:=1 to l_odp do {Wy wietl znalezione pytanie i odpowiedzi dla niego} GoToXY(27, WhereY); Write(k,'. ',temp1^.pytania.odp[k]); if temp1^.pytania.nr_popr= k then write(' -*-'); WriteLn; Repeat Write('Podaj numer poprawnej odpowiedzi [1..',l_odp,']:*** '); ReadLn(odp_u); Until (odp_u in [1..l_odp]); if odp_u = temp1^.pytania.nr_popr then wiedza:= wiedza+ocena; if temp1 <> Nil then temp3:= temp1^.wskaznik else temp3:= Nil; temp2^.wskaznik:= temp3; { Sklej oba konce} Dispose(temp1); { Zniszcz wskaznik do wybranego pytania} Dec(il_pyt); Dec(los); ReadKey; procedure wyswietl_menu; { Wyswietlanie menu. } WriteLn(' PROGRAM DO PRZEPROWADZANIA TESTOW - STRUKTURA STOS '); WriteLn(' =================================================== '); WriteLn('1- Dopisz pytanie Liczba pytan: ',il_pyt, ' Ocena: ',wiedza:4:0,' %'); WriteLn('2- Usun pytanie'); WriteLn('3- Wyswietl wszystkie pytania'); WriteLn('4- Zapisz pytania do pliku ',plik1); WriteLn('5- Wczytaj pytania z pliku ',plik1); WriteLn('6- Przeprowadz test'); WriteLn('7- Koniec programu'); il_pyt:= 0; wsk:= Nil; {Zainicjowanie bazy pytan. } While wybor <> '7' do wyswietl_menu; ReadLn(wybor); case wybor of '1': Dodaj_pytanie(wsk); '2': usun_pytanie(wsk); '3': wyswietl_baze_pytan(wsk); '4': zapisz_baze(wsk); '5': wczytaj_baze(wsk); '6': przeprowadz_test(wsk); '7': usun_stos(wsk); exit; end. 27
PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.
PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj
Bardziej szczegółowoJęzyk programowania PASCAL
Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO
Bardziej szczegółowoPascal. 1. Pliki tekstowe. Przykład 1.1. Zapis do pliku tekstowego
Pascal 1. Pliki tekstowe Przykład 1.1. Zapis do pliku tekstowego {deklaracja zmiennej tekstowej 'plik'} plik: text; {skojarzenie zmiennej plikowej 'plik' z plikiem na dysku (podajemy lokalizacje)} {tworzenie
Bardziej szczegółowoProgramowanie strukturalne. Opis ogólny programu w Turbo Pascalu
Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji
Bardziej szczegółowoINSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};
INSTRUKCJA PUSTA Nie składa się z żadnych znaków i symboli, niczego nie robi Przykłady: for i := 1 to 10 do {tu nic nie ma}; while a>0 do {tu nic nie ma}; if a = 0 then {tu nic nie ma}; INSTRUKCJA CASE
Bardziej szczegółowoDIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0
Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje
Bardziej szczegółowoInstrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:
Instrukcje podsumowanie Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne: - grupująca end - warunkowa if
Bardziej szczegółowoProgramowanie w Turbo Pascal
Skróty: ALT + F9 Kompilacja CTRL + F9 Uruchomienie Struktura programu: Programowanie w Turbo Pascal Program nazwa; - nagłówek programu - blok deklaracji (tu znajduje się VAR lub CONST) - blok instrukcji
Bardziej szczegółowoWstęp do programowania. Różne różności
Wstęp do programowania Różne różności Typy danych Typ danych określa dwie rzeczy: Jak wartości danego typu są określane w pamięci Jakie operacje są dozwolone na obiektach danego typu 2 Rodzaje typów Proste
Bardziej szczegółowo1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
Bardziej szczegółowo2.Sprawdzanie czy podana liczba naturalna jest pierwsza Liczba pierwsza to liczba podzielna tylko przez 1 i przez siebie.
CZEŚĆ A. Przykłady, cd. 1.Obliczanie wartości pierwiastka kwadratowego - algorytm Newtona-Raphsona http://pl.wikipedia.org/wiki/metoda_newtona (pierwszy przykład na stronach Wiki) Dane: Liczba a (a>0)
Bardziej szczegółowoProgramowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Bardziej szczegółowotyp zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word
Pascal - powtórka Alfabet, Nazwy W odróŝnieniu do C w Pascal nie odróŝnia małych i duŝych liter. Zapisy ALA i ala oznaczają tę samą nazwę. Podobnie np. słowo kluczowe for moŝe być zapisane: FOR. W Pascalu
Bardziej szczegółowoWykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe
Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych;
Bardziej szczegółowoPodstawy programowania
Podstawy programowania Część ósma Tablice znaków i przetwarzanie napisów Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura
Bardziej szczegółowoLekcja 6: Pascal. Procedura i funkcja
Lekcja 6: Pascal. Procedura i funkcja S. Hoa Nguyen 1 Materiał Książka: Programowanie w języku Pascal. Rozdział 9. Podprogramy Podprogramy - motywacja Skrócenie zapisu (wielokrotne powtórzenia tej samej
Bardziej szczegółowoElżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,
Bardziej szczegółowoWykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe
Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)
Bardziej szczegółowoPodstawy programowania
Podstawy programowania Część trzecia sterujące wykonaniem programu wprowadzenie Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści
Bardziej szczegółowo20. Pascal i łączenie podprogramów Pascala z programem napisanym w C
Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20. i łączenie podprogramów a z programem napisanym w Ze względu na duże rozpowszechnienie języka, szczególnie
Bardziej szczegółowoInformatyka 1. Przetwarzanie tekstów
Informatyka 1 Wykład IX Przetwarzanie tekstów Robert Muszyński ZPCiR ICT PWr Zagadnienia: reprezentacja napisów znakowych, zmienne napisowe w Sun Pascalu, zgodność typów, operowanie na napisach: testowanie
Bardziej szczegółowoProgramowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++
Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu
Bardziej szczegółowo3. Podstawowe funkcje mamematyczne. ZAPOZNAĆ SIĘ!!!
Zajęcia 3 1. Instrukcja iteracyjna while while WARUNEK do Instrukcja; 2. Deklaracja funkcji function nazwa(x:real;i:integer;...): typ_funkcji; deklaracje zmiennych lokalnych; instrukcje (w tym podstawienie
Bardziej szczegółowoOPERACJE NA PLIKACH. Podstawowe pojęcia:
OPERACJE NA PLIKACH Podstawowe pojęcia: plik fizyczny, zbiór informacji w pamięci zewnętrznej wykorzystywany do trwałego przechowywania danych lub jako przedłużenie pamięci operacyjnej w przypadku przetwarzania
Bardziej szczegółowoPodstawy programowania
Podstawy programowania Część siódma Tablice różne zastosowania Zbiory Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura
Bardziej szczegółowoWrocław, dn. 19 kwietnia 2006 roku. Anna Kaleta Piotr Chojnacki IV rok, informatyka chemiczna Liceum Ogólnokształcące nr 10 we Wrocławiu
Anna Kaleta Piotr Chojnacki IV rok, informatyka chemiczna Liceum Ogólnokształcące nr 10 we Wrocławiu Wrocław, dn 19 kwietnia 2006 roku Czas trwania zajęć: 90 minut, przedmiot: informatyka Temat lekcji:
Bardziej szczegółowoINSTRUKCJA ITERACYJNA REPEAT. repeat Instrukcja_1; Instrukcja_2; {... } Instrukcja_N; until wyr ; INSTRUKCJA ITERACYJNA WHILE
INSTRUKCJA ITERACYJNA REPEAT Instrukcja_1; Instrukcja_2; {... } Instrukcja_N; until wyr ; INSTRUKCJA ITERACYJNA WHILE while wyr do Instrukcja_1; Instrukcja_2; {... } Instrukcja_N; M.P. «PASCAL» (P04) 1
Bardziej szczegółowoPASCAL Kompendium. Środowisko TURBO PASCAL Skróty klawiaturowe. Edycja kodu Pomoc spis treści. Skopiowanie zaznaczonego bloku do schowka
PASCAL Kompendium Środowisko TURBO PASCAL Skróty klawiaturowe Edycja kodu F1 Pomoc spis treści CTRL + F1 Pomoc kontekstowa SHIFT + strzałki Zaznaczanie bloku CTRL + INSERT Skopiowanie zaznaczonego bloku
Bardziej szczegółowoPodstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują
Bardziej szczegółowolekcja 8a Gry komputerowe MasterMind
lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych
Bardziej szczegółowoPascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:
Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym
Bardziej szczegółowoTemat: 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ółowoPodstawy programowania
Podstawy programowania Część dziewiąta Procedury i funkcje Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów
Bardziej szczegółowoPodprogramy. Procedury
Podprogramy Turbo Pascal oferuje metody ułatwiające tworzenie struktury programu, szczególnie dotyczy to większych programów. Przy tworzeniu większego programu stosuje się jego podział na kilka mniejszych
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje
Bardziej szczegółowoWIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}
1 WIADOMOŚCI WSTĘPNE Programowanie komputerów najogólniej mówiąc polega na zapisaniu pewniej listy poleceń do wykonania przez komputer w pewnym umownym języku Taką listę poleceń nazywamy programem Program
Bardziej szczegółowoProgramowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Bardziej szczegółowoZasady Programowania Strukturalnego
Zasady Programowania Strukturalnego Rafał Jakubowski Zespół Teoretycznej Biofizyki Molekularnej rjakubowski@fizyka.umk.pl www.fizyka.umk.pl/~rjakubowski Tel: 33 46 Konsultacje w sem. letnim 11/12: środa,
Bardziej szczegółowoTablice. TYPE identyfikator tablicy = ARRAY [Indeksl,..., Indeksn] OF Typ; Dany identyfikator_ tablicy można wykorzystać w deklaracji VAR:
Tablice Tablica jest to struktura danych zawierająca pewien uporządkowany zbiór obiektów tego samego typu. Tablice jednowymiarowe odpowiadają wektorom, natomiast tablice dwuwymiarowe macierzom. Elementy
Bardziej szczegółowoMETODY 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ółowoPodstawy 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ółowoWstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel
Wstęp do programowania Procedury i funkcje Piotr Chrząstowski-Wachtel Po co procedury i funkcje? Gdyby jakis tyran zabronił korzystać z procedur lub funkcji, to informatyka by upadła! Procedury i funkcje
Bardziej szczegółowoProgramowanie w VB Proste algorytmy sortowania
Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich
Bardziej szczegółowoZakres wykładu INFORMATYKA. dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel
INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl
Bardziej szczegółowoInformatyka 1. Procedury i funkcje, struktura programu w Pascalu
Informatyka 1 Wykład V Procedury i funkcje, struktura programu w Pascalu Robert Muszyński ZPCiR IIAiR PWr Zagadnienia: deklaracje procedury i funkcji, parametry procedur i funkcji, reguły użycia parametrów
Bardziej szczegółowoWszystkie zmienne typu plikowego, z wyjątkiem Output i Input muszą być zadeklarowane w sekcji deklaracji programu, który z nich korzysta.
Programowanie strukturalne - pliki 1 LEKCJA 29. TYPY STRUKTURALNE - PLIKI Wprowadzenie Zmienne proste, tablice i rekordy są wykorzystywane w programie do przechowywania danych podczas wykonywania programu;
Bardziej szczegółowoJęzyki i metody programowania
Dr inż. Robert Wójcik E-mail: wojcik@ict.pwr.wroc.pl Strona internetowa: www.ict.pwr.wroc.pl/~wojcik Języki i metody programowania 1. Wprowadzenie do programowania 1.1. Podstawowe definicje 1.2. Charakterystyka
Bardziej szczegółowoWykład 4. Tablice. Pliki
Informatyka I Wykład 4. Tablice. Pliki Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada
Bardziej szczegółowoPodstawy programowania 2. Temat: Wprowadzenie do wskaźników. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 1 Podstawy programowania 2 Temat: Wprowadzenie do wskaźników Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Rysunek przedstawia najważniejszą różnicę pomiędzy zmiennymi,
Bardziej szczegółowoMatematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne
A. Permutacja losowa Matematyka dyskretna - wykład - część 2 9. Podstawowe algorytmy kombinatoryczne Załóżmy, że mamy tablice p złożoną z n liczb (ponumerowanych od 0 do n 1). Aby wygenerować losową permutację
Bardziej szczegółowoWykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1
Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych; Begin
Bardziej szczegółowoĆwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz
Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Funkcje przetwarzające teksty (biblioteka ) - tworzenie własnych
Bardziej szczegółowoUwagi 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ółowoProgramowanie w języku C++ Grażyna Koba
Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad
Bardziej szczegółowoInformatyka 1. Dokumentacja programu, moduły programowe, typy tablicowe
Informatyka 1 Wykład VII Dokumentacja programu, moduły programowe, typy tablicowe Robert Muszyński ZPCiR ICT PWr Zagadnienia: reguły stylu programowania, komentarze marginesowe, blokowe, moduły programowe
Bardziej szczegółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoAPROKSYMACJA. Rys. 1. Funkcja aproksymująca zbiór punktów pomiarowych (1) (2) (3) (4) (5) (6) (7) ... Zmienna y
40 APROKSYMACJA Zmienna y 36 33 30 27 24 21 18 15 12 9 6 3 0 0,00 0,01 0,02 0,03 0,04 0,05 0,06 0,07 0,08 Zmienna x Rys. 1. Funkcja aproksymująca zbiór punktów pomiarowych (1) (2) (3) (4) (5) (6) (7)...
Bardziej szczegółowoAlgorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
Bardziej szczegółowoINFORMATYKA. Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki. dr inż. Michał Łanczont
INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl
Bardziej szczegółowoAlgorytmy od problemu do wyniku
Algorytmy Etapy tworzenia programu: 1) Sformułowanie zadania analiza problemu. 2) Opracowanie algorytmu sposób rozwiązania. 3) Zapisanie algorytmu w języku programowania kodowanie programu. 4) Kompilowanie
Bardziej szczegółowoProcedury i funkcje. Przykład programu z procedurą. Definicja. Cechy procedury
Definicja Procedury i funkcje Procedura to wydzielony fragment programu, który służy do wykonywania pewnych zbiorów instrukcji stanowiących zwartą całość. Procedurę nazywamy czasem podprogramem. 1 2 Przykład
Bardziej szczegółowoPodstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Bardziej szczegółowoProgramowanie. Wprowadzanie danych i wyprowadzanie wyników. Klasa 2 Lekcja 24 WEJŚCIE/WYJŚCIE
Programowanie Wprowadzanie danych i wyprowadzanie wyników Klasa 2 Lekcja 24 WEJŚCIE/WYJŚCIE Losowanie danych W wielu zastosowaniach (np( np.. szyfrowanie, symulacje, gry komputerowe, grafika komputerowa)
Bardziej szczegółowoPodstawy Programowania semestr drugi. Wykład czternasty
Wykład czternasty 1. Polimorfizm Ostatni wykład zakończyliśmy stwierdzeniem, że możemy obiektowi dowolnej klasy przypisa ć obiekt klasy dziedziczącej po tej klasie. Przypisanie takie obejmuje jednak jedynie
Bardziej szczegółowoPASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie
PASCAL Język programowania wysokiego poziomu Opracowany przez Mikołaja Wirtha na początku lat 70 XX wieku Prosty, z silną kontrolą poprawności Stosowany prawie wyłącznie na uczelniach do nauki programowania
Bardziej szczegółowoZmienne i struktury dynamiczne
Zmienne i struktury dynamiczne Zmienne dynamiczne są to zmienne, które tworzymy w trakcie działania programu za pomocą operatora new. Usuwa się je operatorem delete. Czas ich występowania w programie jest
Bardziej szczegółowoWprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka
Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu
Bardziej szczegółowoPodstawy Informatyki Języki programowania c.d.
Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy 2 Makroasembler - założenia Przykład
Bardziej szczegółowoWprowadzenie komentarzy do programu
Wprowadzenie komentarzy do programu W programach mogą wystąpić objaśnienia, uwagi zamykane w klamrach { } lub nawiasach z gwiazdką (* *). Komentarze ułatwiają zrozumienie programów. Przyjmijmy, że komentarze
Bardziej szczegółowo1. WSTĘP. Dr inż. Robert Wójcik, p. 313, C-3, tel
Dr inż. Robert Wójcik, p. 313, C-3, tel. 320-27-40 Zakład Podstaw Informatyki i Teleinformatyki Instytut Cybernetyki Technicznej (I-6) Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej
Bardziej szczegółowoJęzyki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
Bardziej szczegółowoProgramowanie RAD Delphi
Programowanie RAD Delphi Dr Sławomir Orłowski Zespół Fizyki Medycznej, Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu Pokój: 202, tel. 611-32-46, e-mial: bigman@fizyka.umk.pl Delphi zasoby Aplikacje
Bardziej szczegółowoPodstawy programowania
Podstawy programowania Część druga Pierwsze programy Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów
Bardziej szczegółowoP R OGRA M OW A N I E KOMPUTERÓW Ćwiczenia laboratoryjne
1. Wstęp Turbo Pascal jest jednym z najpopularniejszych języków programowania wyższego poziomu. Program napisany w tym języku jest ciągiem zdań opisującym określony algorytm. Nazywamy go postacią źródłową
Bardziej szczegółowoWstęp do programowania. Listy. Piotr Chrząstowski-Wachtel
Wstęp do programowania Listy Piotr Chrząstowski-Wachtel Do czego stosujemy listy? Listy stosuje się wszędzie tam, gdzie występuje duży rozrzut w możliwym rozmiarze danych, np. w reprezentacji grafów jeśli
Bardziej szczegółowoAlgorytmy i struktury danych
Algorytmy i struktury danych Proste algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Pojęcie sortowania Sortowaniem nazywa się proces ustawiania zbioru obiektów w określonym porządku Sortowanie
Bardziej szczegółowoProgramowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38
Programowanie w C++ Wykład 1 Katarzyna Grzelak 25 luty 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38 Dlaczego programowanie? K.Grzelak (Wykład 1) Programowanie w C++ 2 / 38 Umiejętność, która otwiera
Bardziej szczegółowoPrzykład programu Rozwiązanie równania postaci:
Przykład programu Rozwiązanie równania postaci: a x 2 + b x + c = 0 program trojmian; var a, b, c : real; var delta, x1, x2 : real; writeln('podaj wspolczynniki a, b, c równania kwadratowego: '); readln(a,
Bardziej szczegółowoP R OGRA M OW A N I E KOMPUTERÓW Ćwiczenia laboratoryjne. TEMAT 8: Moduły standardowe
Pakiet crt zawiera procedury i funkcje, które pozwalają na sterowanie trybem ekranu, kolorami, oknami i dźwiękiem. Opisy procedur są zawarte w pliku pomocy, można je wyświetlić z menu Help Standard units
Bardziej szczegółowoPodstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Bardziej szczegółowoutworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,
Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz
Bardziej szczegółowoPlanowanie eksperymentu 2 (k p) w 2 r blokach. Stanisław Jaworski, Wojciech Zieliński
Planowanie eksperymentu 2 (k p) w 2 r blokach Stanisław Jaworski, Wojciech Zieliński 1. Wstęp W praktyce często możemy spotkać się z sytuacją, kiedy nie jest możliwe wykonanie pełnego eksperymentu czynnikowego
Bardziej szczegółowoPodstawy programowania 2. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 2 Podstawy programowania 2 Temat: Zmienne dynamiczne tablica wskaźników i stos dynamiczny Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Tablice wskaźników Tablice
Bardziej szczegółowoStruktura i podstawowe instrukcje programu. Środowisko tworzenia programów. 1. Tworzenie i kompilacja z wiersza poleceń. 1. Przykładowy program.
/ PROGRAMOWANIE / PROGRAMOWANIE Jak powstaje program komputerowy?. Etapy tworzenia programu. Algorytm Program (kod) źródłowy Kompilacja Plik binarny Łączenie (konsolidacja) Program (kod) wynikowy Rys.
Bardziej szczegółowoProgramowanie, algorytmy i struktury danych
1/44 Programowanie, algorytmy i struktury danych materiały do wykładu: http://cez.wipb.pl/moodle/ email: m.tabedzki@pb.edu.pl strona: http://aragorn.pb.bialystok.pl/~tabedzki/ Marek Tabędzki Wymagania
Bardziej szczegółowoALGORYTMY I PROGRAMY
ALGORYTMY I PROGRAMY Program to ciąg instrukcji, zapisanych w języku zrozumiałym dla komputera. Ten ciąg instrukcji realizuje jakiś algorytm. Algorytm jest opisem krok po kroku jak rozwiązać problem, czy
Bardziej szczegółowoInformatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Wykład 4. Tablice. Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada
Bardziej szczegółowoProgramowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL
Programowanie Pascal - język programowania wysokiego poziomu Klasa 2 Lekcja 9 PASCAL Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany
Bardziej szczegółowoInformatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa
Informatyka 1 Wykład III Wyrażenia i instrukcje, złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: składnia wyrażeń, drzewa rozbioru gramatycznego i wyliczenia wartości wyrażeń, operatory
Bardziej szczegółowoprocesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak
Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych
Bardziej szczegółowoDynamiczne struktury danych
Dynamiczne struktury danych 391 Dynamiczne struktury danych Przez dynamiczne struktury danych rozumiemy proste i złożone struktury danych, którym pamięć jest przydzielana i zwalniana na żądanie w trakcie
Bardziej szczegółowoKolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : grudnia 2005.)
Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : 15 1 grudnia 005.) 1. Program w C 1 zawiera deklaracje 1 void P1 ( int a, int b) { int i ; 3 for ( i =0;i
Bardziej szczegółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowoProgramowanie modułowe
Przykład aplikacji bez obsługi zdarzeń Rozmieszczenie na formatce 11 etykiet i komponentu Image. Rozbudowa pliku głównego aplikacji do postaci: program Project1; uses Forms, SysUtils, Unit1 in 'Unit1.pas'
Bardziej szczegółowoPLIKI TEKSTOWE F C E 30 0D 0A 42 6F 72 6C 61 6E 64 1A T U R B O _ P A S C A L _ 7. 0
PLIKI TEKSTOWE plik_liczb : file of integer; plik_znakow : file of char; plik_linii : text; deklaracja zmiennej plikowej Przykład sekwencji bajtów: 54 55 52 42 4F 20 50 41 53 43 41 4C 20 37 2E 30 0D 0A
Bardziej szczegółowoTemat 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ółowoProcedury i funkcje - powtórzenie i uzupełnienia. Przykład funkcji potęgowanie przy wykładniku naturalnym
Procedury i funkcje - powtórzenie i uzupełnienia Przykład funkcji potęgowanie przy wykładniku naturalnym program potegowanie; {$APPTYPE CONSOLE} uses SysUtils; var x: real; n: integer; function Potega(podstawa:
Bardziej szczegółowoInformatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
Bardziej szczegółowoDefinicja: Algorytmami sortowania zewnętrznego nazywamy takie algorytmy, które sortują dane umieszczone w pamięci zewnętrznej.
Wykład 5_3 Sortowanie zewnętrzne - c.d. 3. Algorytm sortowania za pomocą łączenia polifazowego 4. Algorytm ograniczania liczby serii za pomocą kopcowego rozdzielania serii początkowych 5. Podsumowanie
Bardziej szczegółowoI. Podstawy języka C powtórka
I. Podstawy języka C powtórka Zadanie 1. Utwórz zmienne a = 730 (typu int), b = 106 (typu long long), c = 123.45 (typu double) Wypisz następujące komunikaty: Dane sa liczby: a = 730, b = 106 i c = 123.45.
Bardziej szczegółowo