30 часов Бейсика для начинающих 1993 г.

Урок 5 - длина стринга.


УРОК 5

5. 1 Вступление.

в предыдущих уроках мы в основном знакомили читателя с но-
выми идеями. Они шли одна за
другой, в этом уроке мы немного
приостановимся и более детально рассмотрим работу со стрингами.

5. 2 Длина стринга.

Очень часто бывает важным знать, сколько же символов вхо-
дит в
символьную последовательность, во-первых, это важно для
того, чтобы эффективно распределять оперативную память компью-
тера, а
во-вторых. - для того, чтобы красиво организовывать
выдачу информапии на экран. Для этой пели в БЕИСИКе есть
Функ-
ция
LEH ( ). Она может выдать количество символов, входящих в
стринг. Например:

если а» = "Fred", то LEN(a*) = 4
если Ь« = "К", то LEH <Ъ*> = 1

BCK-5. 1

Что выдадут следующие Функции?

a) LEN (с*), где с* = "Ann"

b) LEH <d»>. где d$ = "А"

c) len (е»), где е» = "Т2"

d) LEH <f*). где f» = "CAT 123"

ПРИМЕР-5, 1

Написать БЕИСИК-прогрэмму. которая введет список
из 10 слов, заканчивающийся на "zzzz" и распеча-

тать длину каждого слова.

Решение Буден вводить слова, входящие в список в массив W*

поношью операторов READ. . . DATA.
10 REH ««Длина стринга»«

20 REH ««к»»»»»»»»»»»*»»»»»»»»»»»»»»»»»»»»»»»»»»»

30 REH ««Программа читает слова из списка READ
40 REH и определяет из
длину»»

90 REM »«»»«»»»»». »«*»«»«...........««к» .««к*** о

100 read w*

110 if w$="zzzz" theh go to 200
120 let s= len w$
130 print

140 Print w«;" состоит из ";i;" букв"
150 go то 100
200 stop

900 data "разработай", "алгоритн", "и", "напиши"
910 data "програнму","на"."Бейсике"
920 data "zzzz"

5. 3 Таблицы случайных событий.

Нам очень часто бывает важно определять, как часто проис-
ходит
то или иное событие. Например, знание того, как часто та
или иная буква алфавита встречается в текстах, оказывается
важным
при расшифровке закодированных сообщений.

Чтобы определить частоту, с которой встречается та или
иная буква, нам надо разработать какой-то
простой прием. Давай-
те сначала попробуем этот подход с помошью карандаша и бумаги.

ПРИНЕР-5. 2 Определите частоту повторения гласных букв в сле-

—-' дуюшем тексте:

"Определите частоту, с которой каждая гласная буква встре-
чается в этом предложении".

а) Ны можем пройтись по всему тексту, вычеркивая каж-
дую букву "а", затеи
повторить то же самое для буквы
"е" и т.д. Всего нан придется
пройти по тексту 9 раз для де-
вяти основных гласных букв
русского алфавита.

б) Ножно все сделать за один раз, если нарисовать таблицу
и, встретив гласную букву, ставить в таблице отметку
против
нее.

определите- ставим 3 отметки против "е" и по од-
ной отметке
против "и" и "о".

Частоту- по одной отметке против "а"."о" и "у".

ibck-5. г

Решение

Гласная

Счетчик

Всего

а

11111 11

7

е

11111 11

7

и

ill

3

О

11111 11

7

у

11

2

ы

0

э

1

1

ю

0

я

1.11

3

Используйте этот метод для определения длин слов в
тон же предложении.

Разработав метод для карандаша и бумаги, мы можем
пать к тому, чтбы разработать метод для компьютера.

Предположим, нан надо подсчитать частоту повтрения цифр
0.1,2. ..9, в какой-то числовой последовательности, для этого мы
можен использовать десять счетчиков: с(О), с С1).....с(9). На-
чальное значение каждого счетчика равно
нулю. Возьмем последо-
вательность 473808. Первая цифра - 4. Счетчик с(4) увеличится
на единицу и т. д.

цифры в

Счетчики

последова-

тельности

с(0)

с (1 )

с (2)

с(3)

с (4)

с (5)

с (6)

с (7)

с (8)

с (9)

Исходно

0

0

0

0

0

0

0

0

0

0

4

0

0

0

0

1

0

0

0

0

0

7

0

0

0

0

0

0

1

0

0

3

0

0

0

1

1

0

0

1

0

0

8

0

0

0

1

1

0

0

1

1

0

0

1

0

0

1

1

0

0

1

1

0

8

1

0

0

1

1

0

0

1

2

0

Итак, когда вводится цифра К, счетчик с(К) получает прира-
щение на единицу. Это легко реализуется в БЕИСИКе:

120 IHPUT К

140 LET С(К) = С(К) + 1

Правда. "Спектрум" не позволяет нам использовать нулевые
элементы массива - с(О). Отсчет элементов в массиве всегда дол-
жен начинаться с единицы. Но
эту проблему легко обойти. Пусть:

с<1) считает нули
с(2) считает единицы
с(3) считает двойки и т.д.

Итак, счетчик с(к) у нас будет считать к-1 -ую цифру. Поэ-
тому. когда мы вводим цифру п. то должны увеличить n+1-й счет-
чик.

век-5. з Программа

10 IHPUT п
20 LET
с(П+1) = с(П+1) + 1
используется для определения количества появлений цифр в после-
довательности: 3.1.0.5.9.9.6.6.6,0.4.4.2,4.1.2.1.3.0.2.1. 3.

Каковы будут значения: а) с(4) после ввода трек цифр?

в) с(10) после ввода 12 цифр?

c) с(2) после ввода веек цифр?

d) с<1) после ввода веек цифр?

!пример-5. з| написать программу для ввода последовательности
I------' цифр и для расчета и выдачи частоты повторения

каждой цифры.

Для цифр 0,1;... 9 назначим счетчики с <1), ... с(10).
Заканчивать ввод цифр будем "заглушкой" - 9999.
40 DIH С(10)

юо priht "По одной введите цифры"
110 priht "закончите список -9999"
115
priht

120 IHPUT "Очередная цифра? ";m

121 priht m

130 IF m=-9999 THEH GO TO 190
140 LET c(m+l) = c(m+l) * 1
150 GO TO 120
200 CLS

210 priht "Цифра"."Счетчик"
220 priht
230 for j=1 to 10
240 priht j-l.c(j)
250 hext j
260 stop

Если ввести последовательность: 3. 7, б, 4. 9.1.4. 9. 2. 7. 8. 0.1.
5,2.7.-9999. то результат работы программы будет такой:
Цифра счетчик

0 1

1 2
2 2

3 1

4 2

5 1

6 1

7 3

8 1
9 2

частотная таблица длин слов.

Решение.

В этом уроке мы написали две программы, первая определяет
длины
стрингов. Вторая создает таблицу частоты повтора цифр.
Попробуйте в рамках очередного упражнения объединить эти два
приема и построить часттную таблицу длин слов. Если хотите, мо-
жете для этого использовать ту Фразу,
которую мы анализировали
в ПРИНЕРЕ-5.2. Перед началом работы предположите, что слов
длиннее 15 синволов нам не встретится, поэтому нас должен
устроить массив:

w( 1). w(2).....w (15)

5. 4 Частотные диаграммы.

Картинка оказывает на нас большее воздействие, чем просто
колонка цифр. Она как бы несет в себе больше информации. А по-
чему бы нам не дать компьютеру команду, чтобы он рисовал нам
диаграмму? Ны ведь уже умеем рисовать целые
ряды символов
"«" переменной длины (УРОК 4) с помошью циклов FOR... НЕХТ.

Что появится на экране в результате работы следующей
программы, если при вводе дать: 2.5.7.8,3,1?
10 IHPUT а
20 FOR f=l то а
30 PRIHT "»•;
40 НЕХТ f
50 PRINT
60 GO ТО 10

Точно такую же технику мы можем использовать, если числа'
будем не вводить с помошью IHPUT, а брать их из таблицы частот
повторения символов. Тогда на экране ны
получим диаграмму рас-
пределения. Чей чаше встречается тот или иной синвол, тен более
длинный
ряд "»" будет построен на экране.

Написать программу для построения графика распре-
деления частот повторения гласных букв в фразе.

рассмотренной в ПРИНЕРЕ_5. 2.

Решение Эта програмна рисует график для частот, которые мы
уже рассчитали. Ны вводим эти частоты в строках
40. . .80. Ввод осуществляется
с поношью счетчиков f(K), где fill
- частота повторения буквы "a"; f(2) - буквы "е" и т.д.

Печать символов "»" в соответствии с числом f(K) выполня-
ется в строках 220. . . 250.

10 REH ««Частотная диаграмма»»
20 DIH f(9)

40 LET К=1

41 REH ««Процедура ввода частот»«

42 print "Гласная", к

44 INPUT "Введите частоту f(К)
46 PRINT f(K)

60 IF f(К)=-9999 THEN GO TO 100
70 LET K=KM
80 GO TO 41

90 REH ««n.»»»»'»»»»»»»»»»»»»»»»

100 REH «« -9999 нам вводить в список не надо««
110 LET ПК 1

120 reh .«««i»»»»»»»»»»»»»»»»»»

ВСК-5. 4

ПРИНЕР-5. 4

200 КЕН ««Процедура печати диаграммы»»

205 CLS

210 PRIHT

220 FOR Х=1 ТО П

230 FOR Y=1 ТО f(x)

240 PRIHT "«■;

250 hext у

260 PRIHT

270 PRIHT

280 HEXT X

300 REH «i»»»*»»»»»»»»»»»»»»»»
Результат работы програнмы будет выглядеть так:

n « « « к к к
»»»»»»»

» » «

к к

«ММ

5. 5 табуляция.

Ны уже умеен строить осмысленные диаграммы, но кое-чего
все же не хватает. Было бы намного лучше, если бы могли сами по
желанию устанавливать, какую хотим позицию печати в строке. Это
называется табуляцией (
поскольку наиболее широко применяется
при печати таблиц). В БЕИСИКе для этого служит оператор TAB.

Рассмотрим следующую программу:

50 PRIHT "12345678901234567890123456789012"

60 PRIHT "a"; TAB 5; "е";TAB 7;"и";ТАВ 19;"О";ТАВ 31; "у"

Вот что она выдает:

12345678901234567890123456789012

а е и о у

Как видите, TAB 5 печатает букву "е" в 6-й позиции. Почему
в шестой?
Потому, что компьютер отсчитывает позиции печати,
начиная с нулевой. Следующая программа поправит этот недочет:

50 PRIHT "01234567890123456789012345678901"

60 PRINT "a"; TAB 5; "е"; TAB 7; "и"; TAB 19; "о"; TAB 31; "у"

ruh

01234567890123456789012345678901
a e и о у

Примечание: На "Спектруме" TAB а установит позицию Печати
в столбце а. но на многих других компьютерах здесь
нужны скоб-
ки: TAB (а).

Напишите программу, которая напечатает COL 1. C0L2,
COL3. СОИ следует печатать с нулевой позиции. COL2 -
с 10-Й. C0L3 - с 20-Й позиции.

Переменное значение TAB.

ВСК-5. 5

В качестве параметра при операторе TAB может выступать имя
переменной, это позволяет получать разные интересные и полезные
экранные эффекты.

Напринер:
зо for a=i то ю

40 PRIHT TAB a; "Hello"
50 НЕХТ а
60 STOP

ruh

Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello

напишите фрагмент программы, которая введет три числа
(по выбору пользователя) и напечатает
стринг "Тест",
начиная с трех разных позиций на одной экранной строке.

5. 6 Расчленение стрингов.

вск-5. б

вы никогда не задумывались о том. что такое дата? Например,
как компьютер представляет себе 23 июня 1973 года?

Ны знаем, что компьютер умеет хранить данные. И делает это
двумя способами - в виде чисел или в виде символьных строк
(стрингов). В виде чисел он уделяет по 5 байтов памяти на каж-
дое число, а для стрингов - по одному байту на каждый символ.
Так что же такое дата? Число или стринг?

23 июня 1973 года - вроде бы стринг. а если мы запишем то же
самое как
230673 - то вроде бы это число, давайте разбираться.

Если 230673 - это число, то почему 110593 (11 мая 1993 года)
меньше, ведь 93-ий год был позхе 73-го?
л если это стринг. то
спрашивается, как компьютер смохет рассчитать, сколько лет бу-
дет в 93-м году молодому человеку, родившемуся в 73-м.. да и
вообше. как тогда оперировать с календарей?

ответ очень прост. Даты - это особый вид информации и рабо-
тать с ними надо особо. Их надо вводить, как
стринги. а хранить
в памяти и обрабатывать надо как числа. И вводят их именно как
стринги еше и потому, что не все элементы даты нам одинаково
вахны.

Например, если наша организация ехегодно в декабре месяце
повышает заработную плату тем. кто отработал у нас более десяти
лет, то для этого вахен только год. в котором работник был за-
числен. Если хе наша организация занимается настройкой пианино
и роялей, то кахдые
три месяца мы рассылаем всем своим зарегис-
трированным клиентам письмо-напоминание о том. что надо бы об-
слухить инструмент. В этон случае нас интересует только месяц,
когда был последний раз обслухен данный клиент, а год и день не
имеют никакого значения.

Наконец, для отдела халоб и претензий, которому полагается
разбираться с каждым заявлением в 30-ти дневный
срок, вахен
день и месяц поступления заявления.

итак, мы видим, что стринг. содержащий дату, имеет вахное
значение как единое целое, но есть серьезные
причины для того.
чтобы вырезать из него отдельные части и обрабатывать их от-
дельно. Таким образон. после того, как дата была введена в
Формате: ДДННГГ или

ДД. НН. ГГ или
мн. ДД. ГГ или как угодно,
нам
нужно иметь возможность "вырезать" из нее отдельно дни, ме-
сяцы и годы и работать с ними
порознь, но теперь уже как с чис-
лами.

Для этого нужен специальный оператор, и он есть. На "Спек-
труме" это делает оператор

(. . . ТО. . . ).

Его полная Форма, например, такая:
х$ (а ТО Ъ)

Здесь из стринга х* вырезается его часть, начинающаяся с

символа, номер которого равен а и до символа с номерон ъ.

Если X* = "СПЕКТРУН", то X» (5 ТО 7) = "ТРУ"

вы можете поснотреть, как это происходит, на принере следу-
ющей программы:

12 ihput "Введите исходное слово" ;го*
16 priht m*

20 ihput "Начало вырезки"; а
40 priht а

50 IHPUT "Конец вырезки"; b

60 priht ь

во.LET n*=m*(a то ь>

90 priht m*; " ("; а; " то ";ь;") = ";п*

100 stop

В некоторых других языках программирования, а также в неко-
торых
других версиях БЕИСИКа Вы найдете еше несколько операто-
ров для вычленения субстринга из стринга. нан бы не стоило на
них
и останавливаться, но вы должны знать, как Вам реализовы-
вать те же возможности, раз этих операторов у вас нет.

LEFT* <х*,К) - дает вам к левых символов стринга. На "Спек-
труне" его аналогом будет:

X* (1 ТО К).

RIGHT* (х*,К) - дает К правых символов стринга. На "Спек-
труме" аналог подобрать труднее, приходится пользоваться Функ-
цией LEN,
которую мы рассмотрели ранее:

x*(leh <х»)-к+1 то leh (x*))

HID* (х*. К, т) - дает Вам m символов, начиная с К-го. С этим
оператором дело обстоит проше:

х*(К то к+ш)

I ВСК-5. 7.

Если а*="1а2ЬЗс4сГ. то что получится:

(a) а*(3 то 5)

(b) а*(1 то 4)

(c) а*(4 то 4)

упражнение - 5. 1

Напишите программу, которая будет вводить сло-
ва (по одному), а выводить будет только те

слова, которые начинаются с гласной.
5. 7 Функция VAL.

Научившись расчленять стринги, нан теперь надо научиться
понимать, что же мы в итоге
получили. Один из возможных приемов
заключается в использовании функции VAL(а*). которая ишет чис-
ловое содержание a*. VAL(a*> на "Спектруие" дает числовое зна-
чение а*, если стринг а» содержит только цифры.

Демонстрационная программа:

10 REH «» ФУНКЦИЯ VAL ««

20 IHPUT "Введите очередной стринг";п*

21 PRIHT П»

25 IF 11*= "zzzz" THEH GO TO 999

30 LET 11=VAL №♦>

60 PRIHT

70 PRIHT П

80 PRIHT

90 GO TO 10

999 STOP

RUH
456
456
789
789
56t

С Honsence in BASIC 30:1

Обратите внимание на сообщение об ошибке. "Спектрун" не
может дать числовое значение для "56t". поскольку "t" - это не
цифра.

ВСК-5. 8

ПРИНЕР-5. 5

Каковы будут результаты:

(а)

VAL

(a*).

где a*

= "54"

(Ь)

VAL

где b*

= "76ХУ"

(с)

VAL

<C*>.

где с*

= "аз"

<d)

VAL

(d*>.

где d*

= "-132"

(е>

VAL

<e*(l

TO 2)).

где е*--

"593'

(f)

VAL

(f*(l

TO 1)).

где f*=

"ваш1

(в)

VAL

(s*(l

TO 2)).

где g*=

"Z35'

(h)

VAL

<h»<3

ТО 3)),

где h*=

"593'

(1)

VAL

(i»(2

TO 3)),

где

"вага'

(J)

VAL

(j*<2

ТО 3)),

где

"Z351

Теперь мы с Вами уже в состоянии организовать такую полез-
ную вешь. как проверка правильности ввода пользователем даты.
Мы знаем, что все люди делают ошибки и всюду, где возможно,
компьютер должен перехватить эти ошибки.

Напишите программу, которая проверит все три поля
в 6-разряднон стринге, выражающем дату.

Стринг даты - d» имеет три ноля:
гг - год - правое поле
НИ - месяп - среднее поле
ДД - день - левое поле.
Ны рассматриваем только годы 1994 и 1995»'
поэтому:
VAL (d* (1 ТО 2)) должно быть 1. ..31
VAL (d«(3 ТО 4))
должно быть 1. . . 12
VAL <d*<5 ТО 6))
должно бЫТЬ 94. ..95

Это довольно сложный процесс, поэтому сначала составим
блок-схему.

решение

Ниже приведен текст этой КЕИСИК-програнны.

Ю REM ««Проверка даты»»
го INPUT "Введите дату ":d$

22 PRIHT d*

30 IF d$="ZZZZ"THEH GO to 900
50
IF LEH <d»>=6 THEH GO TO 110
80
PRIHT "Error in date length"
90
GO TO 10

100 REH ш»нншш»ни1шнн<|ш1

110 PRIHT "Длина стринга - О. К. "

120 IF VAL <d*(5 TO 6))=94 THEH GO TO 210

130 IF VAL <d$(5 TO 6))=95 THEH GO TO 210

180 PRIHT "Неверно указан год"

190 GO TO 10

200 REH ................................

210 PRIHT "Год указан верно"

220 IF VAL <d*<3 TO 41X1 THEH GO TO 280

230 IF VAL (d»<3 TO 4))<=12 THEH GO TO 310

280 priht "неверно указан месяц"

290 GO TO 10

300 REH »»««»«««...»......»..«»..«.,,«,.

310 PRIHT "Несяц указан верно"

320 IF VAL <d»(l TO 2) XI THEN GO TO 380

330 IF VAL (d*(l TO 2)><=31 THEH GO TO 410

380 PRIHT "Неверно указан день"

390 GO TO 10

400 reh «ii»»»»»»»»»»»»»»*»»»»*»»»»»»»»»»
410 priht
"Дата проверена, все в порядке. ■
490 GO ТО 10

900 PRIHT "Конец проверки даты. "

А вот еше одно очень практическое применение функции VAL.
Скалите, как часто Ван приходилось "заваливать" программы на
простой ошибке, когда исполняется ihput п. а Вы вместо того,
чтобы ввести число, нажимаете на какую-либо букву. Ошибка до-
садная и
приходится заново повторять весь ввод.

Эту проблемы легко решить. Надо все, что вводится через
IHPUT. расценивать, как
стринги. Затен надо понять, что ввел
пользователь. Если это число, то с помошью
Функции val мы лег-
ко найден его значение. Вот возможный пример такого подхода:
50 IHPUT а*

60 IF а*="" THEH GO ТО 50
70 FOR f=l ТО LEH а»

80 IF a* <f> <"0" OR a*(f)>"9" THEH GO TO 50

90 HEXT f

100 LET 1D=VAL a*

Когда Вы делаете программу для постороннего пользователя.
Вы должны предусмотреть по-возножности все варианты его непра-
вильных действий, которые могут привести к выходу программы из

строя.

Практически все программы в этой книге в этом смысле не
зашишены от неправильных действий и это вовсе не потому, что мы
не придаем этону значения или считаем это ненужным. Это очень
важный монент, но мы его опускаем только потому, что книга ине-
ет учебный характер, а зашита каждой программы от ошибочных
действий, как минимум вдвое увеличивает размер программы и
при
этом "скроет" основную мысль, которую программа должна донести
до читателя.

5. 6 Оператор prist at

Это еше одна Форма оператора priht. Ее полный Формат:
priht at у. x

такой оператор позволяет нам выполнять печать в заданном
знакоместе с экранными координатами:

у - по вертикали;
х - по горизонтали.

Сравните оператор ат с оператором tab. Если tab задает по-
зицию печати на текушей экранной строке (О. ..30), то AT делает
не только это, но еше может задавать номер
строки у(!...21)

Применяется at, как и tab, для того, чтобы уменьшить объем
программирования. Так, если Вы хотите изобразить на экране ре-
шетку их синволов "«", то вы можете сделать это без оператора
AT или с ним.

а) без оператора AT:

10 FOR f 1 TO 21 STEP 3
20 FOR К=1 TO 31 STEP
30 PRINT "«"
40 NEXT К
50 PRINT
60 PRINT
70 PRINT
80 NEXT f
б) с оператором AT:

10 FOR f=l TO 21 STEP 3
20 FOR K=1 TO 31 STEP 2
30 PRINT AT f, K; "»"
40 NEXT К
50 NEXT f

Как видите, второй путь ощутимо короче.

Задание на самостоятельную проработку.

1. Напишите программу, которая примет от пользователя сим-
вольный стринг и выдаст его же. но в обратном порядке.

ОБЗОР УРОКА

Проверьте свое знание следующих вопросов:

- применение функции LEH(at);

- печать простейших графиков:

- применение оператора TAB:

- использование х»<а ТО Ы;

- применение Функции VAL (а»);

- зашита оператора IHPUT от неправильного ввода;

- использование оператора AT в операторе PRIHT.

|вСК-5. l|

ОТВЕТЫ НА ЮПРОСЫ ДЛЯ САМОКОНТРОЛЯ
(а) 3; <ь> 1; (с) 2; <d) Т.

длина

Счетчик

всего

1

11

2

2

0

3

0

4

1

1

5

1

1

6

1

1

7

111

3

8

0

9

0

10

1

1

И

11

2

(а) С(4) = 1 (Ь) С(10)=2

(С) С(2)=4 <d> С(1)=3

■ ■

Ibck-5. г

|вСК-5. з|
|вСК-5.

я к к к к

IX

10 PRIHT "COL 1"; TAB 9;"COL 2";TAB 19;"C0L3"

10 IHPUT a
20 IHPUT b
30 IHPUT С

40 PRIHT TAB а;"Тест":ТАВ b; "Тест";ТАВ с; "Тест"

|вСК-5. 5
|вСК-5. б|

К57!

1вД-5. g|
(а) 54

(d) -132

(в) нет решения

(J.) 35
(Ь) нет решения

(е> 59
(Ь) 3

(а) гьз tb> 1агь (с) ь

(с) нет решения
(f) 8

(1) нет решения

ОТВЕТЫ К УПРАЖНЕНИЯ!

20 IHPUT "Введите слово

30 IF W*="ZZZ2" THEH GO TO 9999

40 LET C»=W*<1 TO 1)

50 IF C»="a" THEH GO TO 200

51 IF C«="e" THEH GO TO 200
53 IF C»="И" THEH GO TO 200

53 IF C»="0" THEH GO TO 200

54 IF ct-'у" THEH GO TO 200

55 IF С*="Э" THEH GO TO 200

56 IF С»="Ю" THEH GO TO 200

57 IF С*="Я" THEH GO TO 200
100 GO TO 10

190 REH «ни*»»»**»»» «mi»* »«»««»

200 PRIHT

210 PRIHT ct,w*

220 GO TO 10

230 REH n»»»*»*»»»»»*»»»*»»*»»»

9999 STOP

УПРАЖНЕНИЕ- 5. 1




  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Ликбез - Распространённые приёмы неверного аргументирования и просто логические ошибки.
Фан-клуб - Сегодня, 21 июня 1999 года исполнилось бы 38 лет лидеру группы "КИНО" Виктору Цою...
Вступление - га, вы, наверно уже и не ждали следующего, двадцатого выпуска новосибирской газетки FLASН INFО.
Сладкие - приход.
Семь и 1/2 - Взятки! (интервью врача).

В этот день...   21 ноября