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.
wrzesień 30, 2007 o 4:58 pm |
dzięki.
troche pomogło, ale najlepiej jak mi to jeszcze BOR lub SER wytłumaczy
listopad 3, 2007 o 10:41 am |
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…