Zakres wykładu INFORMATYKA. dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel

Podobne dokumenty
Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Wykład III PASCAL - iteracja cz, 2, - liczby losowe, - tablice

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

INFORMATYKA. Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki. dr inż. Michał Łanczont

Pascal - wprowadzenie

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

INSTRUKCJE PĘTLI, INSTRUKCJA WYBORU. Instrukcja pętli For to do

KURS PASCAL A. 1.Wprowadzenie

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

3. Podstawowe funkcje mamematyczne. ZAPOZNAĆ SIĘ!!!

2.Sprawdzanie czy podana liczba naturalna jest pierwsza Liczba pierwsza to liczba podzielna tylko przez 1 i przez siebie.

Informatyka 1. Przetwarzanie tekstów

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Wstęp do programowania. Różne różności

Pętle. Dodał Administrator niedziela, 14 marzec :27

Zasady Programowania Strukturalnego

Wrocław, dn. 19 kwietnia 2006 roku. Anna Kaleta Piotr Chojnacki IV rok, informatyka chemiczna Liceum Ogólnokształcące nr 10 we Wrocławiu

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Lekcja 6: Pascal. Procedura i funkcja

Wstęp do programowania

Podstawy Programowania C++

Język programowania PASCAL

Java Podstawy. Michał Bereta

Podstawy programowania 2. Temat: Wprowadzenie do wskaźników. Przygotował: mgr inż. Tomasz Michno

Wstęp do programowania

Instrukcje iteracyjne (pętle)

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

Kontrola przebiegu programu

Podstawy programowania

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

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

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

1 Podstawy c++ w pigułce.

Programowanie w Turbo Pascal

Wprowadzenie komentarzy do programu

INSTRUKCJA ITERACYJNA REPEAT. repeat Instrukcja_1; Instrukcja_2; {... } Instrukcja_N; until wyr ; INSTRUKCJA ITERACYJNA WHILE

Przykład programu Rozwiązanie równania postaci:

INFORMATYKA Studia Niestacjonarne Elektrotechnika

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

Instrukcje cykliczne (pętle) WHILE...END WHILE

Procedury i funkcje - powtórzenie i uzupełnienia. Przykład funkcji potęgowanie przy wykładniku naturalnym

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Pascal. 1. Pliki tekstowe. Przykład 1.1. Zapis do pliku tekstowego

Wstęp do programowania

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

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

Podstawy Programowania Wykład trzeci: Instrukcje warunkowe i iteracyjne.

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

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

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

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

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

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

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Tablice. TYPE identyfikator tablicy = ARRAY [Indeksl,..., Indeksn] OF Typ; Dany identyfikator_ tablicy można wykorzystać w deklaracji VAR:

P R OGRA M OW A N I E KOMPUTERÓW Ćwiczenia laboratoryjne. TEMAT 8: Moduły standardowe

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

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

Procedury i funkcje. Przykład programu z procedurą. Definicja. Cechy procedury

APROKSYMACJA. Rys. 1. Funkcja aproksymująca zbiór punktów pomiarowych (1) (2) (3) (4) (5) (6) (7) ... Zmienna y

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

Programowanie komputerowe. Zajęcia 3

Instrukcje sterujące. Programowanie Proceduralne 1

lekcja 8a Gry komputerowe MasterMind

1 Podstawy c++ w pigułce.

Zapis algorytmów: schematy blokowe i pseudokod 1

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Obsługa klawiszy specjalnych

Język C zajęcia nr 5

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Instrukcja standardowa Writeln

Programowanie w języku Python. Grażyna Koba

Konstrukcje warunkowe Pętle

Programowanie. Wprowadzanie danych i wyprowadzanie wyników. Klasa 2 Lekcja 24 WEJŚCIE/WYJŚCIE

LibreOffice Calc VBA

Programowanie Delphi obliczenia, schematy blokowe

Podstawy programowania

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

PASCAL Kompendium. Środowisko TURBO PASCAL Skróty klawiaturowe. Edycja kodu Pomoc spis treści. Skopiowanie zaznaczonego bloku do schowka

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Instrukcje sterujące

Pętla for. Wynik działania programu:

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

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

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

Pętle iteracyjne i decyzyjne

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

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

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

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

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Informatyka 1. Procedury i funkcje, struktura programu w Pascalu

Transkrypt:

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 Instrukcje powtórzeń Często pisząc kod konieczne jest kilkukrotne wykonanie fragmentu kodu W większości języków programowania dostępne są instrukcję wykonywania kodu w pętli sterowanej parametrem zmieniającym się w sposób iteracyjny Istnieją także pętle warunkowe powtarzające wykonanie kodu po spełnieniu określonego warunku Pętle można realizować za pomocą instrukcji warunkowej if i funkcji skoku goto 2 Zakres wykładu Pętle ze współczynnikiem rosnącym i malejącym Pętle na zmiennej wektorowej Pętle warunkowe Operacje na ciągach tekstowych 3 1

Pętla rosnąca Podstawową instrukcją iteracyjną jest pętla o współczynniku rosnącym for początke to koniec do //kod powtarzany Współczynnik jest zmienną całkowitą przyjmującą wartości od początkowej do końcowej ze wzrostem o jeden Zmienna iteracyjna może być wykorzystana w kodzie 4 Pętle i:=1; skok: writeln(i); i:=i+1; if i<=1000 then goto skok; for i:=1 to 1000 do writeln(i); Zmienna i musi zostać zadeklarowana jako zmienna całkowita 5 Pętla malejąca W pewnych sytuacjach wymagane jest aby zmienna iteracyjna zmieniała się od wartości maksymalnej do minimalnej for początek downto koniec do //kod powtarzany Analogicznie jak w pierwotnej wersji pętli zmienna iteracyjna nie musi być wykorzystywana w kodzie pętli 6 2

Pętle - zagnieżdżanie Pętle można dowolnie zagnieżdżać Wewnątrz jednej pętli może być druga, wewnątrz niej następna Nie ma limitu zagnieżdżeń pętli Każda z zagnieżdżonych pętli musi posiadać indywidualną zmienną iteracyjną 7 Program generuje tabliczkę mnożenia Użytkownik podaje zakres liczb jakie definiują macierz tabliczki Wyniki wyświetlane są na ekranie i przechowywane w zmiennej tablicowej 8 {$mode objfpc} program tabliczka; uses crt, sysutils; var tab:array of array of single; i,j,a,b:byte; z: array[1..4] of integer; clrscr; a:=0; b:=0; 9 3

writeln('program generuje tabliczkę mnożenia liczb w zakresie.'); writeln('podaj wartoci graniczne:'); for i:=1 to 4 do write('z(',i,')='); readln(z[i]); clrscr; SetLength(tab,z[2]-z[1]+1,z[4]- z[3]+1); 10 for i:=z[3] to z[4] do a:=0; for j:=z[1] to z[2] do write(j*i,' '); tab[a,b]:=i*j; a:=a+1; b:=b+1; writeln; delay(10000); end. 11 12 4

Pętle warunkowe Nie zawsze z góry wiadomo ile razy ma zostać powtórzona pętla W sytuacjach takich wygodnie jest korzystać z pętli warunkowych W Pascalu i wielu innych językach programowania dostępne są dwie podstawowe pętle warunkowe Pętla w której warunek sprawdzany jest na początku pętli: while do Pętla w której warunek sprawdzany jest na końcu pętli: repeat until 13 Pętla warunkowa Wybór instrukcji pętli warunkowej uzależniony jest od tego czy kod pętli musi być wykonany chociaż raz czy nie repeat kod pętli; until warunek; while warunek do kod petli Z pętlą while w sytuacji dłuższego kodu konieczne jest stosowanie bloku. 14 Program przeliczający liczbę w systemie dziesiętnym na binarny W programie wykorzystano pętle warunkową sprawdzającą warunek na końcu pętli Poszczególne elementy liczby binarnej przechowuje się w zmiennej tablicowej Do zapisania liczby na ekranie wykorzystano pętle o iteracji malejącej 15 5

{$mode objfpc} program konwersja; uses crt, math, sysutils; var i,j,k:integer; n: array of integer; clrscr; writeln('program konwertuje liczbe cakowita z postaci dziesietnej na binarna'); 16 1 write('podaj liczbe cakowita wieksza od zera:'); readln(i); k:=0; repeat setlength(n,k+1); j:=i mod 2; i:=i div 2; n[k]:=j; k:=k+1; until i=0; 17 2 write('podaj liczbe calkowita wieksza od zera:'); readln(i); k:=0; while i>0 do setlength(n,k+1); j:=i mod 2; i:=i div 2; n[k]:=j; k:=k+1; 18 6

write('postac binarna liczby to:'); for i:=high(n) downto 0 do write(n[i]); writeln; delay(10000); end. 19 Przerwanie pętli Pętle iteracyjne jak i pętle warunkowe w zależności od sytuacji mogą zostać przerwane. Możliwe jest także warunkowe pominięcie wybranych iteracji Pascal dostarcza dwóch funkcji realizujących te zadania break przerywa działanie pętli continue przerywa działanie aktualnej iteracji i przechodzi do następnej 20 program przerwanie; var i : LongInt; i := 0; while i<100000 do i := i + 1; WriteLn('Pela wykonuje sie po raz ', i); if keypressed then break; end. 21 7

program przerwanie; uses sysutils, crt; var i : LongInt; i := 0; while i<100000 do i := i + 1; if i mod 136 <> 0 then continue; WriteLn('Petla wykonuje sie po raz ', i); end. 22 Pętla po elementach Pętla for może działać nie tylko w oparciu o zmienną iteracyjną w zadanym zakresie, ale także na podstawie elementów podpiętej do pętli tablicy for zmienna in tablica do kod pętli; W takiej sytuacji zmienna przyjmuje wartości kolejnych elementów tablicy 23 program tablica; uses sysutils, crt; var tab:array of integer; n,i:integer; clrscr; write('podaj rozmiar tablicy:'); readln(n); randomize; setlength(tab,n); 24 8

for i:=0 to n-1 do tab[i]:=random(n); write('wylosowano ',n,' liczb: '); for i in tab do write(i,' '); writeln; readln(); end. 25 Pętle warunkowe z IN Analogicznie jak przy pętli for i instrukcji warunkowej if, w petlach warunkowych while do oraz repeat until także można korzystać ze zbiorów i wskaźnika in while zmienna in zbiór do kod; repeat kod; until zmienna in zbiór; 26 Z wykorzystaniem informacji o pętlach napisać program symulujący grę w lotto Program sprawdza po ilu losowaniach gracz trafi główną wygraną Jako podsumowanie przedstawia ile wygrał i jakie poniósł koszty Jako szczegółowe wyniki podaje ile w międzyczasie miał trafień 3, 4 i 5 27 9

{$mdule objfpc} program lotto; uses crt, sysutils; type TLos = set of 1..49; var zaklad,losowanie,wygrana: TLos; i,j: integer; w,k,x: int64; trafienia: array[3..5] of integer; 28 clrscr; writeln('program symuluje gre w lotto do czasu wygrania nagrody glownej'); writeln('program podaje ile bylo wygranych 3, 4 i 5 stopnia.'); writeln('program podaje po ilu losowaniach wygrano 6,'); writeln('jakie poniesiono koszty i koncowy bilans.'); writeln('za 3-10zl, 4-300zl, 5-7 000zl, 6-1 000 000zl.'); writeln; 29 randomize; i:=1; write('twoje liczby to:'); repeat j:=random(49)+1; if j in zaklad then continue else include(zaklad,j); write(j,' '); i:=i+1; until i>6; 30 10

writeln; writeln; k:=0; trafienia[3]:=0; trafienia[4]:=0; trafienia[5]:=0; 31 //Losowanie repeat losowanie:=[]; i:=1; repeat j:=random(49)+1; if j in losowanie then continue else include(losowanie,j); i:=i+1; end until i>6; 32 //Sprawdzenie wygrana:=losowanie*zaklad; w:=0; for i:=1 to 49 do if i in wygrana then w:=w+1; case w of 3:trafienia[3]:=trafienia[3]+1; 4:trafienia[4]:=trafienia[4]+1; 5:trafienia[5]:=trafienia[5]+1; k:=k+1; until w=6; 33 11

writeln; writeln('wygrana 6 stopnia uzyskano po:',k,' losowaniach.'); write('losowanie z 6 to: '); for i:=1 to 49 do if i in losowanie then write(i,' '); writeln; writeln('podsumowanie:'); writeln('kwota wydana na losy:',k*2.5:10:2,' zl.'); writeln('wygranych 3 stopnia bylo ',trafienia[3],', uzyskano:',trafienia[3]*10,' zl'); writeln('wygranych 4 stopnia bylo ',trafienia[4],', uzyskano:',trafienia[4]*300,' zl'); writeln('wygranych 5 stopnia bylo ',trafienia[5],', uzyskano:',trafienia[5]*7000,' zl'); x:=1000000 + 10*trafienia[3] + 300*trafienia[4] + 7000*trafienia[5]; writeln('razem wygrano:',x,' zl'); writeln('bilans koncowy:',(x-k*2.5):10:2,' zl'); readln(); end. 34 35 36 12

Tekst Zarządzanie i przetwarzanie tekstu z poziomu kodu programu za pomocą wyspecjalizowanych funkcji jest jedna z podstawowych cech większości języków programowania Tekst przechowywany i przetwarzany jest za pomocą zmiennych typu String, do 255 znaków, natomiast AnsiString ma limit ograniczony rozmiarem pamięci Pojedynczy znak może być przechowywany w zmiennej typu char 37 Zmienna tekstowa Tekst przechowywany w zmiennej typu String ma postać tablicy, której indeks 0 przechowuje informacje o liczbie znaków, natomiast poszczególne znaki tekstu w pozostałych komórkach jako elementy typu char. napis: String = Ala ma kota ; Nr bajtu 0 1 2 3 4 5 6 7 8 9 10 11 napis 11 A l a m a k o t a 38 Zestaw znaków ASCII W trybie konsolowym aplikacji pisanych w pascalu dostępnych jest 255 znaków, zależnych od wybranej czcionki 39 13

Kopiowanie Funkcja kopiowania tekstu umożliwia pobranie wybranych znaków z tekstu źródłowego i użycie go do utworzenia nowej zmiennej lub innych operacji copy(zmienna, index_start, index_end) s:='adres webpage: http://lanczont.pollub.pl'; f:=copy(s,1,6)+ 'e-mail: m.lanczont@pollub.pl'; writeln(f); writeln(s); 40 Kopiowanie Pascal zawiera funkcje umożliwiające kopiowanie określonej liczby znaków z lewej lub prawej strony tekstu Leftstr(zmienna, liczba_znaków); Rightstr(zmienna, liczba_znaków); Obydwie funkcje, jak i wiele innych umożliwiających przetwarzanie tekstu zgrupowane są w bibliotece StrUtils 41 Długość tekstu Długość analizowanego tekstu jest często istotna informacją Długość czyli liczbę znaków analizowanej zmiennej zwraca funkcja n:=length(zmienna); Inną metodą jest skorzystanie z właściwości zmiennej tekstowej i wykorzystanie informacji zapisanej w komórce o indeksie 0 zmiennej tekstowej n:=byte(zmienna[0]); 42 14

Pozycjonowanie Pozycjonowanie, czyli określanie pozycji wybranego znaku lub ciągu znaków w tekście Funkcja pos( znaki, zmienna) zwraca informacje o współrzędnej pierwszego wystąpienia znaku (ciągu znaków) od początku tekstu Funkcja posex( znaki,zmienna,start) spełnia analogiczne funkcje jak pos, jednakże można zdefiniować od którego znaku zaczyna poszukiwanie 43 Program możliwa poszukiwanie we wprowadzonym tekście wybranego znaku (ciągu znaków) Użytkownik wprowadza tekst, a następnie znak/ki jakie chce poszukiwać Jako wynik działania program zwraca informacje o pozycji poszukiwanego znaku oraz podaje ile razy w danym tekście wystapił 44 {$mode objfpc} program lokalizator; uses crt, strutils; var s,x:string; i,j:integer; clrscr; write('podaj tekst do analizy:'); readln(s); write('podaj poszukiwany znak/ki:'); readln(x); 45 15

writeln(); if pos(x,s)>0 then write('poszukiwany znak "',x,' wystapil na pozycjach:'); i:=pos(x,s); write(i,' '); j:=1; 46 while posex(x,s,i+1)>0 do i:=posex(x,s,i+1); j:=j+1; write(i,' '); writeln('poszukiwany znak wystapil ',j,' razy'); end else writeln('poszukiwany znak nie wystepuje w tekscie'); Readln; end. 47 48 16

Kasowanie Funkcja kasowania umożliwia usunięcie z wskazanej zmiennej tekstowej określonej liczby znaków począwszy od wskazanego znaku s:='ala ma kota, a Ela ma psa.'; 1 15 writeln(s); delete(s,1,15); writeln(s); 49 Wstawienie Procedura wstawienie umożliwia dodanie we wskazane miejsce w zmiennej tekstowej wybranego znaku lub ciągu znaków s:='ala ma kota, a Ela ma psa.'; writeln(s); delete(s,16,4); writeln(s); insert('wanda ',s,16); writeln(s); 50 Małe i duże litery Zmiana liter na duże lub małe w ciągu tekstowym (zmiennej typu string) realizowana jest przez dwie funkcje konwertujące Funkcje są dostępne w bibliotece SysUtils S:= Ala ma kota, a Ela ma psa. ; A:=UpperCase(s); B:=LowerCase(s); 51 17

Kolejność odwrotna Zmiana kolejności znaków w zmiennej tekstowej na odwrotną realizowana jest przez funkcję z biblioteki StrUtils S:= Ala ma kota, a Ela ma psa. A:=ReverseString(s) 52 Program pobiera od użytkownika tekst dowolnej długości Program analizuje liczbę wystąpień poszczególnych znaków w analizowanym tekście Program wyświetla poszczególne znaki występujące w tekście podając liczbę ich występowania 53 {$mode objfpc} program maleduze; uses crt, strutils, sysutils; var a:ansistring; i,j,k:integer; ile:array of integer; lit:array of char; w:boolean; 54 18

clrscr; write('wprowadz tekst do analizy znakowej: '); readln(a); writeln(); writeln('w analizowanym tekscie jest ',length(a),' znakow.'); k:=1; for i:=0 to 255 do j:=1; w:=false; 55 while posex(char(i),a,j)>0 do if w=false then SetLength(ile,k); SetLength(lit,k); lit[k-1]:=char(i); ile[k-1]:=0; w:=true; k:=k+1; 56 j:=posex(char(i),a,j); ile[k-2]:=ile[k-2]+1; j:=j+1; if j>=length(a) then break; writeln('wykryto nastepujace znaki:'); 57 19

writeln(' '); writeln(' znak licz. '); for i:=0 to k-2 do writeln(' ',lit[i],' ',ile[i]:3,' '); writeln('------------'); readln(); end. 58 59 Zadanie Napisać program analizujący wprowadzony tekst. Program przedstawia w podsumowaniu statystykę zawierającą informacje: Liczbie znaków w tekście Liczbie samogłosek Liczbie spółgłosek Liczbie innych znaków Liczbie wyrazów Szczegółowa statystyka wyrazów: (liczba znaków w wyrazie liczba wyrazów tej długości w tekście) 60 20