Контрольные по информатике
компании. О дальнейших попытках реанимировать Turbo BASIC под названием Power BASIC (Мощный Бейсик) кроме рекламных сообщений ничего не известно.А фирма Microsoft продолжила совершенствование своего любимого детища, выпустив в конце 80-х гг. мощные системы для профессиональных разработок (Professional Development System) BASIC PDS-6 и PDS-7.
Наконец, четвёртое поколение Бейсика связано с появлением в 1991 системы программирования Visual BASIC и её последующим совершенствованием сотрудниками Microsoft. К началу 1995 поступили сообщения об опытной эксплуатации версии 4.0.
Алгоритмический язык Паскаль был придуман в 1968 профессором Института информатики при Швейцарской высшей технической школе Н. Виртом. В 1970 под его руководством оыл разработан первый компилятор, а в следующем году появилась и первая публикация. Своё название язык получил в честь известного Франц. математика Б. Паскаля, который в 19-летнем возрасте изобрёл первую суммирую-щую машину.
1
Новый язык, являясь продолжателем традиций алгоритмического языка АЛГОЛ-60, был ориентирован, главным образом, на обучение курсу систематического программирования. В Паскале были представлены наиболее распространённые типы данных и средства для создания пользовательских структур. К числу элементов, способствующих созданию надёжных программ, относились блочные конструкции и требование обязательного описания (объявления) всех объектов - типов данных, констант, переменных, меток, функций и процедур.
Заметную роль в разработке стандарта языка Паскаль и совершенствовании его средств ввода/вывода сыграла рабочая группа Британского института стандартов во главе с А. Эддиманом. Британский стандарт был принят в 1982, а несколько позднее его утвердила международная организация ISO. Однако к этому времени Н. Вирт, недовольный предложениями рабочей группы, отказался от сотрудничества по совершенствованию Паскаля и переключился на новый проект Модула.
Язык Паскаль довольно долго оставался средством для изучения программирования в университетах, т. к. ни одна серьёзная компьютерная фирма его не поддерживала. Перелом в отношении к этому языку наметился в 1984, когда молодой француз Ф. Кан привёз в США необычайно скоростной компилятор Turbo-Pascal для IBM-совместимых ПК и начал торговать им по цене 49 долларов 95 центов. Удачная реклама и «бросовая» цена позволили ему продать за первый месяц более 3000 копий системы и заложить основы фирмы Borland International. Последующие 8 лет Turbo Pascal оставался наиболее опекаемым продуктом фирмы, которая сумела выпустить более 9 различных версий. Самая свежая из них (7.0; 1992) включает две системы - Turbo Pascal, функционирующую под управлением MS-DOS, и расширенную версию Borland Pascal, работающую в среде Windows. Возможно, что после ухода в 1995 Кана с поста президента фирма Borland изменит свою политику в отношении языка Паскаль.
Язык Си был придуман в 1972 сотрудником Bell Laboratories (отделение известной телефонной компании AT&T) Д. Ритчи, одним из первых пользователей операционной системы Unix, и задумывался не как универсальный алгоритмический язык, а, скорее, как инструмент для развития операционной системы и создания новых обслуживающих программ (утилит). Такой подход характерен для большинства системных программистов, разрабатывающих сложные проекты и придумывающих для облегчения своего труда различные сервисные процедуры, макрокоманды и т. п. По завер-я
i
t шению разработки эти инструментальные наборы, как правило, предаются забвению или, в | лучшем случае, остаются в личных архивах | авторов. Язык Си, однако, эта участь миновала. § Вполне возможно, что его становлению способ-| ствовало- последующее всемирное признание •^ операционной системы Unix.
Как алгоритмический язык сравнительно низкого уровня, т. е. достаточно близкий к ассемблеру, Си имел предшественников в лице . аналогичных инструментальных средств - язы-; ков CPL, BCPL (сокр. от Basic Combined Pro-| gramming Language - базовый комбинирован-i ный язык программирования) и В. Два первых языка разрабатывались в конце 60-х гг. в Кембриджском университете в качестве машинно-независимых языков для создания трансляторов1. Последний был придуман К. Томпсоном - сотрудником Bell Laboratories и автором операционной системы Unix. В отличие от своих предшественников, Ритчи наряду с машинно-ориентированными типами данных (байт, слово) ввёл в состав Си объекты и операторы, присущие универсальным языкам (числовые и символьные переменные, структурные блоки), сохранив при этом элементы, характерные для макроассемблера MACRO-11 (логические операции над битами, сдвиги, работа с адресами и регистрами).
Первым программным продуктом, написанным почти полностью на Си, был компилятор с языка Си в код машинных команд PDP-11/20 (прототип СМ-4). В 1973 Ритчи и Томпсон переписали на Си большую часть операционной системы Unix. Из 13000 машинных команд для PDP-7, на которой появилась первая версия Unix, только 800 пришлось вручную перевести в ассемблер PDP-11. В процессе перевода Unix из однопользовательской операционной системы, ориентированной на работу в конкретной ЭВМ, превратилась в мобильную операционную систему коллективного пользования. Успех этой операции в значительной мере предопределил популярность новой операционной системы и её базового инструмента - языка Си. Б 1976 Ритчи и Томпсон перенесли Unix с ЭВМ фирмы DEC на компьютеры другой архитектуры (Interdata 8/32), практически ничего не изменив в ядре операционной системы, написанном на Си. Точно таким же образом Unix распространялся на десятках машин различных типов.
В 1978 появилась первая книга, посвящённая описанию Си и технике программирования не
этом языке, которая с большим запозданя была переведена на русский язык (Ken»81* ган Б., Ритчи Д., Фьюэр А. Язык программ^ рования Си. Задачи на языке Си. М.: Фиван и статистика, 1985). От фамилий двух перв^* авторов произошло сокращённое обозначенм* первого, никем не утверждавшегося, но пpивяe того всеми программистами стандарта язык Си - K&R. а
Дальнейшая работа по совершенствованию языка Си и принятию в 1987 первого настояше го стандарта ANSI С была выполнена на общественных началах рабочей группой при Американском национальном институте стандартов Возглавлял эту работу сотрудник Bell Labs Л. Рослер. Наиболее серьёзный вклад в развитие языка Си за последние годы внёс ещё один представитель той же лаборатории Б. Страуст-руп, который ввёл в обращение новые объекты - классы, объединяющие данные и обрабатывающие их функции.. С 1983 за расширенной версией языка Си с классами закрепилось название C++.
Первые версии Си подвергались серьёзной критике за отсутствие достаточной строгости, что приводило к многочисленным ошибкам из-за работы с неинициализированными переменными, отсутствия контроля за выходом индексов у элементов массивов за установленные пределы, несоответствия типов формальных и фактических параметров функций и т. п. Перед системными программистами Bell Labs эти проблемы остро не стояли, т. к. они пользовались специальной программой Lint, которая проводила тщательный анализ программ, написанных на Си, перед их трансляцией и выполнением. Для рядовых пользователей ситуация изменилась с появлением интегрированных сред, среди которых наибольшую популярность приобрели Турбо-системы фирмы Borland. Первая версия Turbo С, работавшая в среде MS-DOS, была выпущена в 1987. К середине 1995 фирма Borland вышла на рынок с версией 4.5, предназначенной для работы под управлением Windows. Известны и другие реализации языка Си на IBM-совместимых ПК - Microsoft С, Lattice С, Zortech С, Symantec С. Но в нашей стране продукция фирмы Borland получила наибольшее распространение.
Задание 1.
Вариант В.
1.
Константа— идентификатор, обозначающий некоторую неизвестную величину (значение данных) определенного типа. Константы, так же как и переменные, объявляться в декларационной части программы (или процедуры) до момента своего использования в процессе вычисления.
Объявление констант начинается зарезервированным словом CONST. Затем следует имя константы, символ равенства и значение этой константы. Например:
CONST Name=’Alex’;
CONST Age=18;
После объявления константы ее можно вызывать по объявленному имени из произвольного места программы.
Типизированные константы представляют собой инициализированные переменные, значение которых используется в программах наравне с обычными переменными. В отличии от нетипизированных констант, описанных выше, в описании типизированной константы указывается как тип, так и значение константы, т.е. она позволяет объявлять переменные и тут же присваивать им начальное значение.
Типизированные константы обладают всеми преимуществами переменных, в частности, они могут использоваться в левой части оператора присваивания. К их преимуществам можно отнести и то, что они инициализируются только один раз— в начале выполнения программы. Таким образом, типизированные константы, объявленные в какой-либо процедуре или функции, при каждом новом ее выполнении не инициализируются заново.
CONST
Year:INTEGER=2000;
Mon:String=’December’;
2.
Тип файл представляет собой последовательность компонент одного типа, расположенных на внешнем устройстве. Компоненты могут быть любого типа, за исключением типа файл (или содержащего компоненты типа файл) и типа объекта. Число компонент в файле не объявляется.
Для задания типа файл следует использовать зарезервированные слова file и of, после чего указать тип компонент файла.
Type
number = file of integer;
symb = file of ‘A’..’Z’;
Стандартный тип Text определяет тип файла, содержащий символы, объединенные в строки. Следует иметь ввиду, что тип Text в Турбо-Паскале не эквивалентен тину file of char.
Введя файловый тип, можно определять переменные файлового типа:
Var
F1:number;
F2:Text;
В Турбо-Паскале можно использовать файл без типа, при определении которого не указывается тип компонент. В этом случае работа с файлом осуществляется на физическом уровне в соответствии с внутренним форматом его данных. При этом реальные компоненты файла могут иметь и различный тип.
Тип файл можно определять и непосредственно при введении файловых переменных.
Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций (присваивание значений, сравнивание и т.д.). Кроме того, через файловую переменную можно получить информацию о конкретном файле (тип, параметры, имя и т.д.).
Задание 2(8).
Var
x,a,b,c,y:real;
Begin
write (‘Введите 2 числа’ );
readln ( y,b);
c:=y+b;
a:=sqr (sin(c*c*c)/cos(c*c*c));
b:=sqrt (y+b)/(y*pi);
x:=a+b;
writeln (‘x=’,x:7:2);
End.
Задание 3-а(5).
Uses crt;
Var
a,b:array[1..10] of integer;
i,m:byte;
Begin
clrscr;
m:=1;
for i:=1 to 10 do
begin
write (‘Введите ’,i,‘-ый элемент массива:’);
readln (a[i]);
if a[i]<0 then begin
b[m]:=a[i];
inc(m);
end;
end;
clrscr;
writeln (‘Исходный массив:’);
for i:=1 to 10 do write (a[i]);
writeln;
writeln (‘Массив, состоящий из отрицательных чисел:’);
for i:=1 to m do write (b[i]);
End.
Задание 4(8).
Uses crt;
Type
tcm=record
name: string[50];
amountw:integer;
amountwo:integer;
date:string[8];
Var
cm=tcm;
F1:file of tcm;
F2: text;
m:char;
Begin
clrscr;
assign (F1,’1.dat’);
assign (F2,’1.txt’);
rewrite (F1);
rewrite (F2);
repeat
clrscr;
write (‘Введите фамилию и инициалы ’);
readln (cm.name);
write (‘Введите количество голосующих акций ’);
readln (cm.amountw);
write (‘Введите количество неголосующих акций ’);
readln (cm.amountwo);
write (‘Введите дату регистрации ’);
readln (cm.date);
write (F1,cm);
writeln (‘Чтобы закончить ввод, введите *’);
readln (m);
until m=’*’;
while not eof(F1) do
begin
read (F1,cm);
if cm.amountw>100 then write (F2, cm.name, cm.amountw, cm.amountwo, cm.date);
end;
close (F1);
close (F2);
End.
6. Языки программирования и их классификация.
Отечественное программирование зародилось в 50-х годах 20 века в крупных научных центрах, осваивавших первые советские вычислительные машины БЭСМ и «Стрела».
При поверхностном взгляде выбор языковой гаммы продиктован следующими ступенями становления программиста:
Бэйсик — первая ступень, школьная информатика;
Паскаль — вторая ступень, информатика в специализированных школах и большинстве ВУЗов;
Си, Си++ — третья ступень, стандартное профессиональное образование;
Visual Basic — четвертая ступень, программирование в среде Windows.
Однако при более глубоком анализе можно заметить очень тесное взаимопроникновение современных версий алгоритмических языков и сближение их функциональных возможностей. В развитых современных системах программирования предлагаются примерно эквивалентные возможности. Там, где трудно обойтись стандартными средствами алгоритмического языка высокого уровня, используют вставки из ассемблерных строк (т. е. команд машинного языка). Иногда тот или иной язык вырывается вперёд. Например, появление и развитие элементов объектно-ориентированного программирования в Си++ моментально вызвало к жизни аналогичные изменения в других языках. Революционная идея общедоступного «визуального» программирования, предложенная в системе Visual BASIC, сразу же была подхвачена в среде Visual С и в той или иной мере нашла своё отражение в новых версиях Borland C++.
Своим названием BASIC обязан сокращению фразы Beginner's All-purpose Symbolic Instruction Code, которая дословно переводится как многоцелевой код (язык) символических инструкций для начинающих. Авторство и первая реализация языка Бейсик принадлежат группе преподавателей и студентов Дартмутского колледжа во главе с профессорами Дж. Кемени и Т. Куртцем, которые 1 мая 1964 вдохнули жизнь в первый Бейсик-интерпретатор.
Бейсик был одним из первых алгоритмических языков, в составе которого изначально присутствовали операторы общения пользователя с пошагово выполняющейся программой. Одновременно с текстом сообщения об ошибке Бейсик-система сообщала номер строки программы, нарушившей синтаксис языка или приведшей к аварийной ситуации. Первые Бейсик-системы, совмещавшие в себе возможности ввода, редактирования, исполнения и отладки программ, послужили прототипами современных интегрированных сред.
Заметную роль в разработке стандарта языка Паскаль и совершенствовании его средств ввода/вывода сыграла рабочая группа Британского института стандартов во главе с А. Эддиманом. Британский стандарт был принят в 1982, а несколько позднее его утвердила международная организация ISO. Однако к этому времени Н. Вирт, недовольный предложениями рабочей группы, отказался от сотрудничества по совершенствованию Паскаля и переключился на новый проект Модула.
Язык Паскаль довольно долго оставался средством для изучения программирования в университетах, т. к. ни одна серьёзная компьютерная фирма его не поддерживала. Перелом в отношении к этому языку наметился в 1984, когда молодой француз Ф. Кан привёз в США необычайно скоростной компилятор Turbo-Pascal для IBM-совместимых ПК.
Язык Си был придуман в 1972 сотрудником Bell Laboratories (отделение известной телефонной компании AT&T) Д. Ритчи, одним из первых пользователей операционной системы Unix, и задумывался не как универсальный алгоритмический язык, а, скорее, как инструмент для развития операционной системы и создания новых обслуживающих программ (утилит).
Первым программным продуктом, написанным почти полностью на Си, был компилятор с языка Си в код машинных команд PDP-11/20 (прототип СМ-4). В 1973 Ритчи и Томпсон переписали на Си большую часть операционной системы Unix. Из 13000 машинных команд для PDP-7, на которой появилась первая версия Unix, только 800 пришлось вручную перевести в ассемблер PDP-11. В процессе перевода Unix из однопользовательской операционной системы, ориентированной на работу в конкретной ЭВМ, превратилась в мобильную операционную систему коллективного пользования. Успех этой операции в значительной мере предопределил популярность новой операционной системы и её базового инструмента - языка Си. Б 1976 Ритчи и Томпсон перенесли Unix с ЭВМ фирмы DEC на компьютеры другой архитектуры (Interdata 8/32), практически ничего не изменив в ядре операционной системы, написанном на Си. Точно таким же образом Unix распространялся на десятках машин различных типов.
Дальнейшая работа по совершенствованию языка Си и принятию в 1987 первого настоящего стандарта ANSI С была выполнена на общественных началах рабочей группой при Американском национальном институте стандартов Возглавлял эту работу сотрудник Bell Labs Л. Рослер. Наиболее серьёзный вклад в развитие языка Си за последние годы внёс ещё один представитель той же лаборатории Б. Страуструп, который ввёл в обращение новые объекты - классы, объединяющие данные и обрабатывающие их функции.. С 1983 за расширенной версией языка Си с классами закрепилось название C++.
Вообще, дается большое количество классификаций языков программирования по различным признакам, но наиболее распространенными являются:
языки программирования бывают — высокого (Паскаль, Бэйсик) и низкого уровня (Ассемблер); строго типизированными (Паскаль) и нестрого типизированными (Бэйсик); с поддержкой объектно-ориентированного программирования (Си++) и без и т.д.
Задание №1.
Вариант Р.
Какие строковые функции используются в Турбо-Паскале? Задайте какие-либо строковые переменные и примените к ним строковые функции.
В Турбо-Паскале существует тип данных String (строка), специально предназначенный для обработки строк (цепочек символов). Он не относится к простым типам данных и занимает промежуточное место между простыми и структурированными типами данных.
Переменная типа String состоит из цепочки символов, т.е. элементов типа Char. Строки могут выводиться на экран монитора посредством стандартных процедур Write и WriteLn и вводиться с помощью стандартной процедуры ReadLn или Read. В большинстве случаев переменные типа String используются для хранения слов и сообщений, состоящих из нескольких символов.
Турбо-Паскаль представляет в распоряжение пользователей целый ряд процедур и функций, предназначенных для обработки строк.
Length — позволяет определить фактическую длину текстовой строки, хранящейся в указанной переменной.
Var
Words: String;
Begin
Write (‘ Введите слово:’);
ReadLn (Words);
WriteLn;
WriteLn (‘Это слово состоит из ‘, Length (Words),’букв’);
End.
UpCase — позволяет преобразовать любой символ из строчного в прописной. Эта функция рассчитана на обработку отдельного символа. Русские литеры не могут обрабатываться этой функцией.
Var
S: String;
I: Integer;
Begin
S:=’alex’;
For I=1 to 4 do S[I]:=UpCase (S[I]);
WriteLn (S);
End.
На экран будет выведена надпись: ALEX.
Copy — позволяет копировать фрагмент некоторой строки из одной переменной в другую. Вызывая данную функцию необходимо указать следующие параметры:
имя строки, из которой должен извлекаться копируемый фрагмент;
позицию в строке, начиная с которой будет копироваться фрагмент;
число копируемых символов.
Var
s:string[8];
s1:string[3];
Begin
s:=’домашний’;
s1:=Copy (s,1,3);
writeln (s1); {на экран выводится: дом}
End.
Pos — с помощью этой функции можно осуществить в некоторой строке поиск определенного фрагмента. Если заданный фрагмент в строке присутствует, то функция возвращает номер позиции в строке, с которой этот фрагмент начинается. Если фрагмент не найден в строке, то функция возвращает нуль.
...
s:=’машина’;
i:=pos (‘шина’,s);
if i=0 then writeln (‘ данный фрагмент не содержится в строке’) else
writeln (‘ данный фрагмент содержиться в строке начиная с ‘,i:3,’ позиции.’);
...
Как формируется имя переменной файлового типа в тексте программы? По каким правилам формируется имя файла в операционной системе MS-DOS? Какая процедура используется для связывания конкретной файловой переменной программы с конкретным файлом на внешнем устройстве? Приведите примеры имен файловой переменной и имен файла на внешнем устройстве.
Правила формирования файловой переменой в языке Турбо-Паскаль совпадают с правилами формирования обычной переменной:
переменная должна состоять из латинских строчных и/или прописных букв, а также арабских цифр от 0 до 9 (цифры можно использовать наряду с буквами начиная со второй позиции) и символа подчеркивания (ASCII-код 95);
имя переменной должно начинаться с латинской буквы или символа подчеркивания;
пробел в Турбо-Паскале является разделителем и не может быть использован в имени переменной;
применение других символов в именах переменных не допускается;
зарезервированные слова также не могут быть использованы в качестве имен переменных.
Имена файлов в системе MS-DOS.
Каждый файл на диске имеет обозначение, которое состоит из двух частей: имени и расширения ( часто имя и расширение вместе также называют именем, как правило, это не приводит к путанице). В имени файла может быть от 1 до 8 символов. Расширение начинается с точки, за которой следует от 1 до 3 символов. Например:
command
autoexec.bat
config.sys
paper.doc
Имя и расширение могут состоять из прописных и строчных латинских букв, цифр и символов: - _ $ # & @ ! % () {} ’ ~ ^
Расширение имени файла является необязательным. Оно, как правило, описывает содержимое файла, поэтому использование расширения файла весьма удобно.
В имени и расширении имени файла прописные и строчные латинские буквы являются эквивалентами, так как DOS переводит все строчные буквы в соответствующие прописные буквы.
Процедурой, которая связывает имя файловой переменной с конкретным файлом на диске, является процедура Assign(<имя файловой переменной>,<имя файла на диске>).
Var
filename: file of integer;
path:string;
Begin
write (‘ Введите имя файла на диске:’);
readln (path);
assign (filename,path);
...
Задание №2.
9.Вычислить значение переменной по расчетной формуле и исходным данным. На экран вывести значение исходных данных и результаты расчетов.
Q=
uses crt;
var
q,b,s,x:real;
begin
clrscr;
write ('Введите значение x:');
readln (x);
write ('Введите значение b:');
readln (b);
write ('Введите значение s:');
readln (s);
clrscr;
q:=(b*sqrt(x)-s)/(exp(s*x)-1);
writeln ('Исходные данные');
writeln ('x=',x:5:2,',b=',b:5:2,',s=',s:5:2);
writeln ('Результат');
writeln ('Q=',q:8:2);
readln;
end.
Задание №3а.
Ввести одномерный массив X вещественных чисел. Размерность массива 7. Переписать элементы этого массива в обратном порядке в массив Y. Вывести на экран массивы X и Y.
uses crt;
var
x,y:array [1..7] of real;
i:integer;
begin
clrscr;
writeln ('Ввод элементов массива');
for i:=1 to 7 do
begin
gotoxy (29,2);
writeln (' ');
gotoxy (1,2);
write ('Введите ',i,'-й элемент массива:');
readln (x[i]);
end;
for i:=7 downto 1 do y[i]:=x[8-i];
clrscr;
writeln ('Массив X:');
for i:=1 to 7 do
begin
write (x[i]:3:2,';');
end;
writeln;
writeln ('Массив Y:');
for i:=1 to 7 do
begin
write (y[i]:3:2,';');
end;
end.
Задание №3б.
Написать программу анализа динамики поквартального роста дохода различных социальных слоев населения в течении года. Для этого ввести количество категорий слоев населения, название категорий населения и величину дохода каждой категории по кварталам. Определить средний доход по всем категориям за каждый квартал и во сколько раз увеличился доход в четвертом квартале по сравнению с первым. Исходные данные и результаты расчетов представить в виде таблицы.
uses crt;
type
tkat_inf=record
name:string[30];
income:array [1..4] of real;
end;
var
num,int:integer;
kat_inf:array [1..100] of tkat_inf;
first,second,third,forth:real;
procedure input_data(var n:tkat_inf);
var i:integer;
begin
clrscr;
write ('Введите название категории:');
readln (n.name);
for i:=1 to 4 do
begin
gotoxy (44,2);
writeln (' ');
gotoxy (1,2);
write ('Введите доход данной группы за ',i,'-й квартал:');
readln (n.income[i]);
end;
end;
procedure output_data (b:tkat_inf);
var i:integer;
begin
writeln
(b.name:30,'|',b.income[1]:7:2,'|',b.income[2]:7:2,'|',b.income[3]:7:2,'|',b.income[4]:8:2,'|',b.income[4]/b.income[1]:15:2);
writeln ('------------------------------+-------+-------+-------+--------+---------------');
end;
Begin
clrscr;
num:=101;
while num>100 do
begin
write ('Введите количество категорий населения (<=100):');
readln (num);
end;
for int:=1 to num do input_data (kat_inf[int]);
clrscr;
writeln ('-----------------------------------------------------------------------------------------');
writeln ('Название категории | Средний доход | Увеличение ');
writeln (' |----------------------------------| дохода ');
writeln ('