Informatyka, lekcja 3, 27.09.07

Temat: Pascal ciąg dalszy.

wszystkie liczby dzielone znakiem “/” są liczbami rzeczywistymi (4/2=2.0)
integer≠4/2
5 div 2 =2 (zawszwe wynikiem jest integer)
5 mod 2=1 (dzielenie modulo)
opertatory logiczne:
()AND() – koniunkcja
()OR() – alternatywa
()NOT() – negacja

Rozkład liczby na czynniki pierwsze:
1. Wczytać x
2. Niech dzielnik będzie 2
3. Dopóki x<>1 wykonaj:
sprawdź czy się dzieli x przez dzielnik
jeśli tak to:
3a wypisz dzielnik
3b podziel x przez dzielnik
wpp weź następny dzielnik
(patrz program dzielnik)

ile pytań musimy zadać, żeby zgadnąć liczbę od 1 do 100?
log 2 100 , maksimum 7

pamiętamy, żeby zazwyczja zamiast read() używać readln(), ponieważ jest to bezpieczniejsze (można spróbować napisać program liczba i zamiast readln napisać read).

Program ‘liczba’ pyta, czy liczba jest z danego zakresu i w zależności od odpowiedzi, pyta o następny zakres.

Polecenie tekst:=Lowercase(tekst) zmienia cały na małe litery. Analogicznie Uppercase(tekst) zmienia na wielkie.

Pętla odwrotna do pętli while:
repeat until – pętla ta użyta jest w programie ‘liczba’, żeby zapobiec podawaniu odpowiedzi innych niż ‘tak’, ‘nie’, ‘t’ i ‘n’.
Nie możemy używać tych pętli zamiennie, ponieważ:

while a<>b do
if a>b then a:=a-b
else b:=b-a

a

repeat
if a>b then a:=a-b
else b:=b-a
until a=b

W przypadku a=b, druga pętla działała by w nieskończoność.

Polecenie Length(tekst) zwraca nam długość tekstu
Polecenie tekst[n] zwraca nam n-tą literę tekstu

Pętla FOR:
FOR zmienna:=wart.pocz. TO/DOWNTO wart.koncowa DO begin instrukcje end
(instrukcje begin i end nie są konieczne w przypadku gdy wykonujemy tylko jedną instrukcję) patrz program cyferki.

Programy:

euklides (z modulo)

program euklides;
var a,b: integer;
begin
write('Napisz a ' );
read(a);
write('Napisz b ');
read(b);
While (a<>0) AND (b<>0) do
If a>b then a:=a mod b
else b:=b mod a;
write ('nwd=', a+b)
end.

Rozłóż liczbę na czynniki pierwsze:

program dzielnik;
var a,d: integer;
begin
writeln ('napisz a');
read (a);
d:=2;
while a1 do
if a mod d = 0 then
begin writeln(d);
a:=a div d
end
else d:=d+1
end.

Program pytający o wymyśloną liczbę (gra 20 pytań):

program liczba;
var a,b,c: integer;
var o: string;
begin
writeln ('podaj granice dolna');
readln(a);
writeln('podaj gorna');
readln(b);
while a<>b do
begin
c:=(a+b) div 2;
repeat
writeln ('czy to jest zakres: ', a,'-',c,'? ');
readln (o);
o:=LowerCase(o);
until (o='tak') or (o='t') or (o='n') or (o='nie');
if (o='tak') or (o='t') then
b:=c
else
a:=c+1
end ;
writeln ('twoja liczba to: ',a)
end.

Wypisywanie kolejnych cyferek.

program cyferki;
var
i: integer;
begin
for i:=1 to 10 do
writeln (i)
end.

Wypisywanie kolejnych literek

program napis1;
var
i: integer;
s: string;
begin
writeln ('napisz cos ');
readln(s);
for i:=1 to length(s) do
writeln (s[i])
end.

Jeśli chcemy, zeby program pisał literki w odwrotnej kolejności, zamiast writeln (s[i]) piszemy write (s[length (s)- i +1])

Program który sprawdza, czy słowo jest palindromem.

program napis2;
var
p: string;
d: string;
s: string;
i: integer;
begin
writeln ('napisz cos ');
readln(s);
i:=1;
repeat
p:=s[i];
d:=s[length(s)-i+1];
if p=d then i:=i+1 else write ('zle');
until (pd) OR (i>length(s));
if i>=length(s) then write('dobrze')
end.

Odpowiedzi: 2 do “Informatyka, lekcja 3, 27.09.07”

  1. Dżejkop mówi:

    dzięki.
    troche pomogło, ale najlepiej jak mi to jeszcze BOR lub SER wytłumaczy :D

  2. Wsparcie Pascala mówi:

    Pierwszy wpis, Pierwszy kod

    Skąd wyjeżdża czołg? Czołg wyjeżdża znienacka Tak samo ten blog powstał z nagłej potrzeby okazało się że na oficjalnym blogu jest coś nie tak z palindromami, a skoro już pisze ten program to mogę go udostępnić w szerszej postaci.

    1
    2…

Dodaj komentarz