Олег Деревенец - Песни о Паскале

Тут можно читать онлайн Олег Деревенец - Песни о Паскале - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-db. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Песни о Паскале
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.5/5. Голосов: 21
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Олег Деревенец - Песни о Паскале краткое содержание

Песни о Паскале - описание и краткое содержание, автор Олег Деревенец, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Аннотация: Изложены основы программирования на языке Паскаль. По ходу обучения решаются десятки задач (использован проектный подход). От читателя не требуется начальных познаний в программировании, но круг затронутых тем ориентирует его в профессиональную область. Книга адресована школьникам средних и старших классов, желающим испытать себя в «олимпийских схватках». Будет полезна студентам-первокурсникам и преподавателям информатики.

Песни о Паскале - читать онлайн бесплатно полную версию (весь текст целиком)

Песни о Паскале - читать книгу онлайн бесплатно, автор Олег Деревенец
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Разумеется, оператор печати строки тоже будет изменен.

Writeln(OutFile, Counter:3, Fam:18 , Cnt:8, Sum:14, Rating:11:1);

Осталось выяснить, что такое ReadFam? Это функция чтения фамилии, которую мы напишем по рассмотренному чуть выше алгоритму (рис. 72). Мой вариант функции таков.

function ReadFam: string;

var sym: char; { очередной символ }

S : string; { накопитель строки }

begin

S:=''; { очистка накопителя строки }

{ чтение символов до первой буквы }

repeat Read(InFile, sym); until Ord(sym)>32 ;

{ чтение последующих символов }

repeat

s:= s+sym;

if Eoln(InFile) then Break;

Read(InFile, sym);

until not ((Ord(sym)>32));

ReadFam:= S; { возвращаемый результат }

end;

Обратите внимание на сравнение введенного символа с пробелом. Это сравнение можно было бы записать так:

sym <> ’ ’

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

Испытание

Теперь все готово, запустите программу. Что оказалось в выходном файле «Journal2.out»? Наверное, вот это.

Номер Фамилия Количество Сумма Средний

ученика оценок баллов балл

1 Акулова 3 12 4.0

2 Быков 4 20 5.0

3 Волков 4 18 4.5

4 Галкина 3 10 3.3

5 Крокодилкин 2 7 3.5

Если не считать кривых колонок, неплохо. Кривизну даёт разная длина фамилий учеников. Можно выровнять колонки, вычисляя спецификатор ширины в зависимости от длины фамилии. Или поступить иначе, – дополнить фамилии до одинаковой длины пробелами справа, например:

while Length(Fam) < 12 do Fam:= Fam + Char(32);

Этот оператор уместен после чтения фамилии. Окончательный вариант программы со всеми дополнениями и уточнениями представлен ниже.

{ P_31_1 – Обработка классного журнала, второй этап }

var InFile, OutFile : text; { входной и выходной файлы }

Counter: integer; { счетчик строк в файле }

{----- Функция чтения фамилии -----}

function ReadFam: string;

var sym: char;

S : string;

begin

s:=''; { очистка накопителя строки }

{ чтение символа до первой буквы }

repeat Read(InFile, sym); until Ord(sym)>32;

{ чтение последующих символов }

repeat

s:= s+sym;

if Eoln(InFile) then Break;

Read(InFile, sym);

until not ((Ord(sym)>32));

ReadFam:= S;

end;

{----- Процедура обработки строки -----}

procedure HandleString;

var N : integer; { оценка, прочитанная из файла }

Cnt: integer; { количество оценок }

Sum: integer; { сумма баллов }

Rating: Real; { средний балл }

Fam: string ; { фамилия }

begin

Fam:= ReadFam ; { читаем фамилию }

{ для выравнивания столбцов добавляем пробелы }

while Length(Fam) < 12 do Fam:= Fam + ' ';

Sum:=0; Cnt:=0; { очищаем накопитель и счетчик оценок }

While not Eoln(InFile) do begin { пока не конец строки }

Read(InFile, N); { читаем оценку в переменную N }

Sum:= Sum+N; { накапливаем сумму баллов }

Cnt:= Cnt+1; { наращиваем счетчик оценок }

end;

if Cnt>0

then begin { если оценки в четверти были }

Rating:= Sum / Cnt; { вычисляем и печатаем ср. балл }

Writeln(OutFile, Counter:3, Fam:18 , Cnt:8,

Sum:14, Rating:11:1);

end

else { а если оценок не было }

Writeln(OutFile, Counter:3, Fam:18,' : Ученик не аттестован');

end;

begin {--- Главная программа ---}

Counter:= 0; { обнуляем счетчик строк }

{ открываем входной файл }

Assign(InFile,' Journal2.in '); Reset(InFile);

{ создаем выходной файл }

Assign(OutFile,' Journal2.out '); Rewrite(OutFile);

{ выводим шапку таблицы }

Writeln(OutFile, 'Номер Фамилия Количество Сумма Средний');

Writeln(OutFile, ' оценок баллов балл');

{ пока не конец входного файла… }

while not Eof(InFile) do begin

Counter:= Counter+1; { наращиваем счетчик строк }

HandleString; { обрабатываем строку }

{ переход на следующую строку }

if not Eof(InFile) then Readln(InFile);

end;

{ закрываем оба файла }

Close(InFile); Close(OutFile);

end.

Итоги

• Для чтения отдельного слова в строке файла не годятся ни оператор Readln (он прочитает всю строку), ни оператор Read, который не видит конца строки. Слово читается посимвольно оператором Read с отслеживанием признака окончания строки и других условий.

• Строку выходного файла можно формировать порциями, применяя несколько вызовов процедуры Write. Каждый такой вызов формирует часть строки и продвигает позицию записи, оставляя её в текущей строке. Для перехода к следующей строке вызывается процедура Writeln.

А слабо?

А) Напишите программу для преобразования первого варианта базы данных «Police.txt» (которая содержит по одному числу в строке) во второй вариант (будет содержать по три числа в строке).

Б) Файл с физическими данными старшеклассников содержит три колонки: фамилия, рост и вес ученика. Создайте программы для решения следующих задач:

• отбор кандидатов для занятий баскетболом, – рост кандидата должен составлять не менее 175 см;

• поиск учеников с избыточным весом, для которых разница между ростом ученика (см) и его весом (кг) составляет менее 100.

Ваши программы должны сформировать соответствующие файлы с фамилиями и данными учеников.

Глава 32

Порядковые типы данных

Песни о Паскале - изображение 108

Вот поле битвы, где там и сям мелькают спины бегущего противника. Разгоряченные боем, наши полки готовы гнать его хоть на край света. Но что это? Зачем полководец прекращает атаку и велит трубить сбор? Поверьте, он знает свое дело: выигрыш битвы – ещё не победа в войне. Предстоят новые сражения, и надо укрепить армию: дать отдых бойцам, накормить, подлечить и вновь построить в боевые порядки.

Освоенные нами элементы Паскаля (считайте их нашим войском) разбили в пух и прах все поставленные задачи. Но, то ли ещё будет! Впереди сильнейший противник. Так соберем свою армию в кулак, соединим все, что нам известно о Паскале. В этой и двух последующих главах мы детально рассмотрим уже освоенные элементы языка, и в первую очередь – типы данных.

Типы данных: простые и сложные

Кто из вас видел «предметы вообще»? Также не бывает и «данных вообще», – они обязательно принадлежат к тому либо иному типу. Учреждая переменную, параметр или функцию, потрудитесь сообщить их тип компилятору, иначе он не уяснит, сколько памяти отвести для этих данных и что позволено совершать с ними.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Олег Деревенец читать все книги автора по порядку

Олег Деревенец - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Песни о Паскале отзывы


Отзывы читателей о книге Песни о Паскале, автор: Олег Деревенец. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x