Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Характеристика и особенности языка 3 страница

Читайте также:
  1. 1 страница
  2. 1 страница
  3. 1 страница
  4. 1 страница
  5. 1 страница
  6. 1 страница
  7. 1 страница

k = '1993';

При описании переменных тип указывается обязательно.

var

a: char;

b: string[20];

Если вы укажете в описании переменной длину меньшую, чем следует, то потеряете часть символов. Указание на длину строки можно опустить,но тогда для записи значения этой строки в памяти ЭВМ будет резервироваться место на максимально возможную длину строки – это не всегда рационально.

Строковая переменная может быть «пустой», т.е. не содержать ни одного символа, например, s:=".

Строковые переменные можно получать, соединяя значения переменных типа char:

Пример

For i:=1 to 10 do begin

read(z);

s:=s+z;

end;

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

Пример

'пролив'> Результат операции: true.

'11111 '>'111' Результат операции: true.

'11111 '>'2' Результат операции: false.

 

Специальные процедуры и функции для обработки строковых величин

· Length(st)

- значением функции является длина строковой переменной st.

Пример Length ('Привет!'); Результат: 7 (типа integer).

· Copy(st,m,n)

- значением функции является подстрока из n символов, вырезанных из строки st, начиная с позиции, указанной параметром m

Пример сору('водопровод',6,3); Результат операции строка 'ров'

· Delete(st,m,n)

- данная процедура удаляет n символов из строки st, начиная с позиции, указанной параметром m.

Пример

х:= 'abcdef;

Delete(x,2,3); Результат: переменной х типа string присвоено значение 'aef'.

· Concat(st1,st2,...stn)

- соединение строк. Можно использовать конструкцию st1+st2,+...+stn.

Пример f:= 'пи'; d:= 'лот'; s:= f + d; или s:=Concat(f,d). Результат: s='пилот'

· Insert(stl,st2,m)

- вставка в строку st2 строки st1, начиная с позиции m. Общая длина строки не превышает длину строки st2.

Пример

х:= 'aef';

Insert(x,'bcd',2); Результат: переменной х типа string присвоено значение 'abcdef'.

· Pos(st1,st2)

- значением функции будет номер позиции, в которой в строке st2 первый раз встречается строка stl.

Пример pos('cd','abcdef); Результат: 3 (типа integer).

· Str(x,st)

- заданное числовое значение преобразуется в строку символов. Значение присваивается переменной st.

Пример

х:=7;

Str(x,s); Результат: переменная s приобрела значение '7' (string).

Y:=7.0;

Str(y,s); Результат: переменная s приобрела значение '7.0000000000Е+00' (string).

· Val(st,x,c)

- строка символов st, состоящая из цифр, преобразуется в число. Значение передается переменной х. Параметр определяется средствами Турбо Паскаля.

Пример

s:='27';

Val(s,x,p); Результат: переменная х приобрела значение 27 (integer), переменная р значение 0.

s:='7.6';

Val(s,y,p); Результат: переменная у приобрела значение 7.6000000000Е+00 типа real, переменная р значение 0.

· UpCase('текст')

– преобразует строчные буквы латинского алфавита в прописные, но не изменяет другие символы.

Пример

UpCase('p') = 'P'

UpCase('B') = 'B'

UpCase('+') = '+'

· LowCase('текст')

– преобразует прописные буквы латинского алфавита в строчные, но не изменяет другие символы.

b) ASCII коды клавиш

Символам и некоторым командам присвоены десятичные ASCII коды (ASCII – American Standard Code for Information Interchange – американский стандартный код для обмена информацией), которые очень удобно использовать при решении некоторых задач в Паскале, особенно задач со строковыми переменными.

Для работы с ASCII кодами используются переменные типа char и специальные функции:

· Readkey

- считывание кода клавиши

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

· Ord(x)

- возвращает код символьного аргумента

· Chr(x)

- возврат клавиши по числовому коду


  NUL
  SOH
  STX
  ETX
  EOT
  ENQ
  ACK
  Звуковой сигнал динамика
  Возврат курсора на одну позицию
  Горизонтальная табуляция
  Перевод строки
  VT
  Прогон страницы
  Возврат каретки
  SO
  SI
  DLE
  DC1
  DC2
  DC3
  DC4
  NAK
  SYN
  ETB
  CAN
  EM
  Конец файла
  Символ Escape
  FS
  GS
  RS
  US
  SP
  !
  "
  #
  $
  %
  &
  '
  (
  )
  *
  +
  ,
  -
  .
  /
   
   
   
   
   
   
   
   
   
   
  :
  ;
  <
  =
  >
  ?
  @
  A
  B
  C
  D
  E
  F
  G
  H
  I
  J
  K
  L
  M
  N
  O
  P
  Q
  R
  S
  T
  U
  V
  W
  X
  Y
  Z
  [
  \
  ]
  ^
  _
  `
  a
  b
  c
  d
  e
  f
  g
  h
  i
  j
  k
  l
  m
  n
  o
  p
  q
  r
  s
  t
  u
  v
  w
  x
  y
  z
  {
  |
  }
  ~
  DEL
  А
  Б
  В
  Г
  Д
  Е
  Ж
  З
  И
  Й
  К
  Л
  М
  Н
  О
  П
  Р
  С
  Т
  У
  Ф
  Х
  Ц
  Ч
  Ш
  Щ
  Ъ
  Ы
  Ь
  Э
  Ю
  Я
  а
  б
  в
  г
  д
  е
  ж
  з
  и
  й
  к
  л
  м
  н
  о
  п
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  р
  с
  т
  у
  ф
  х
  ц
  ч
  ш
  щ
  ъ
  ы
  ь
  э
  ю
  я
  Ё
  ё
  Є
  є
  Ї
  ї
  Ў
  ў
 
 
  .
 
 
  ¤
 

Вопросы для самостоятельной работы

  1. Какие переменные называют строковыми? Какой тип используется для таких переменных?
  2. Как задаются строковые переменные?
  3. Какие правила действуют для сравнения строковых переменных?
  4. Для чего используются функции length, copy, delete?
  5. Какая функция позволяет соединить строки; вставить одну строку в другую; найти символы одной строки в другой?
  6. Какие функции используются для перевода значений строкового типа в числовой и наоборот?
  7. Какие функции позволяют изменять регистр символов? Как ограничена область их применения?
  8. Что такое ASCII коды клавиш?
  9. Какой тип используется для ASCII кодов клавиш? Вспомните особенности этого типа (раздел «Типы переменных в Паскале»).
  10. Какие функции применяются для работы с ASCII кодами клавиш?

Задачи

Уровень A

108. Написать программу, которая запрашивает имя пользователя и здоровается с ним.

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

110. Дана строка. Подсчитать, сколько в ней слов.

111. Дана строка. Подсчитатать количество вхождений букв k, r, t.

112. Дана строка. Подсчитать, сколько различных символов встречаются в ней. Вывести их на экран.

113. Дана строка (без знаков препинания). Удалить те слова, которые содержат хотя бы одну букву k.

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

115. Дана строка символов, среди которых есть одна открывающая и одна закрывающая скобки. Вывести на экран все символы, расположенные внутри этих скобок.

116. Определить, сколько раз в строке встречается заданное слово.

117. Упорядочить данный массив строчных английских букв по алфавиту.

Уровень B

118. Из заданной строки выбрать и вывести на экран те символы, которые встречаются только один раз, в том порядке, в котором они встречаются в тексте.

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

120. Строка содержит слово. Определить, является ли оно палиндромом.

121. В данном тексте слова зашифрованы – каждое слово записано наоборот. Расшифровать сообщение.

122. Строка содержит произвольный русский текст. Подсчитать, сколько в нем гласных и согласных букв.

123. Дана строка. Подсчитать, какие символы и сколько раз в ней встречаются.

124. Составить программу преобразования чисел, записанных в римской нумерации, в десятичную систему счисления.

Уровень C

125. Дана строка, содержащая русские и английские слова. Получить новую строку, заменив в исходной строчные буквы заглавными и наоборот.

126. Упорядочить строку русских слов по алфавиту.

127. Дана строка с текстом, в котором некоторые слова записаны подряд несколько раз. Получить новую строку, удалив из исходной все лишние слова.

 


11. Подпрограммы

Подпрограмма – программа, реализующая вспомогательный алгоритм. В основной программе, т.е. в программе, содержащей основной алгоритм решения задачи, содержатся также обращения к подпрограммам. В Паскале существуют два типа подпрограмм: подпрограммы-функции и подпрограммы-процедуры.

a) Подпрограмма-функция

Подпрограмма-функция может иметь несколько переменных с входными данными (параметров-аргументов) и только одну переменную в результате. Подпрограмма-функция имеет следующий формат описания:

Function <имя функции>(var <параметры - аргументы>: <тип>): <Тип результата>;

const <описание локальных констант>;

var <описание локальных переменных>;

begin

<инструкции подпрограммы>;

end;

Тип результата (тип функции) может быть только простым типом или типом string. Основная часть подпрограммы содержит локальные для функции описания и раздел операторов

Обращение к подпрограмме-функции является операндом в выражении и осуществляется посредством имени подпрограммы.

Пример

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

 

Program naibolshie_tsifry;

uses crt;

var ch: array[1..20] of longint; s,k,h: integer;

function maxts(n: longint): integer;

var ts: array[1..10] of integer; i,j: integer;

begin

for i:=1 to 10 do begin

ts[i]:=n mod 10;

n:=n div 10;

if n=0 then break;

end;

for j:=1 to (i-1) do begin

if ts[j]>ts[j+1] then maxts:=ts[j] else maxts:=ts[j+1];

end;

end;

begin

clrscr;

writeln(‘введите количество чисел’);

readln(k);

for h:=1 to k do begin

writeln(‘введите ’,h,‘ число’);

readln(ch[h]);

s:=s+maxts(ch[h]);

end;

writeln(s);

readkey;

end.

b) Подпрограмма-процедура

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

Procedure <Имя процедуры>(<параметры-аргументы>: <типы>; var <параметры-результаты>: <типы>);

const <описание локальных констант>;

var <описание локальных переменных>;

begin

<инструкции подпрограммы>;

end;

Обращение к процедуре – отдельный оператор.

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

Пример

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

 

Program naibolshiye_tsifry_2;

uses crt;

var n,m: longint; nt,mt,mr,nr: integer;

procedure maxnum(a: longint; var t,r: integer);

var p,i,ts: integer;

begin

t:=0;

while a<>0 do begin

ts:=a mod 10;

a:=a div 10;

inc(p);

if ts>t then begin

t:=ts;

r:=p;

end;

end;

for i:=1 to (r-1) do r:=r*10;

end;

begin

clrscr;

writeln(‘Введите первое число’);

read(n);

writeln(‘Введите второе число’);

read(m);

maxnum(n,nt,nr);

maxnum(m,mt,mr);

m:=m-mt*mr+nt*mr;

n:=n-nt*nr+mt*nr;

writeln(n,‘ ’,m);

readskey;

end.

 

Вопросы для самостоятельной работы

  1. Что такое подпрограммы?
  2. Какую роль исполняют подпрограммы? В каких случаях удобно их использовать?
  3. Какие виды подпрограмм существуют?
  4. Чем характеризуются подпрограммы-функции?
  5. Как задается подпрограмма-функция в Паскале?
  6. Как осуществляется обращение к подпрограмме-функции?
  7. Чем характеризуются подпрограммы-процедуры?
  8. Как задается подпрограмма-процедура в Паскале?
  9. Как осуществляется обращение к подпрограмме-функции?
  10. В чем важнейшее различие двух видов подпрограмм?

Задачи

Во всех задачах этого раздела использовать подпрограммы.

Уровень A

128. Написать программу нахождения наибольшего и наименьшего из трех чисел.

129. На плоскости заданы своими координатами n точек (координаты занесены в массив). Составить программу, определяющую между какими точками расстояние наибольшее.

130. Даны две дроби и (A, B, C, D – натуральные числа). Составить программу: деления, умножения дроби на дробь, сложения и вычитания дробей. Ответ должен быть несократимой дробью.

131. Сформировать массив x(n), n -ый член которого определяется по формуле .

132. Составить программу вычисления суммы факториалов всех четных чисел от m до n.

133. Заменить отрицательные элементы массива их модулями, не пользуясь стандартной функцией вычисления модуля.

134. Дано натуральное число. Найти следующее за ним простое число.

135. Дано натуральное число n. Составить программу формирования массива, элементами которого являются цифры числа n.

136. Составить функцию нахождения наименьшего нечетного натурального делителя k (k≠1) для любого заданного натурального числа.

137. Составить программу, определяющую в каком из данных двух чисел больше цифр.

138. Заменить данное натуральное число на число, которое получится из исходного записью его цифр в обратном порядке.

Уровень B

139. Треугольник задан координатами своих вершин. Составить программу вычисления его площади.

140. Составить программу нахождения наибольшего общего делителя четырех чисел.

141. Два натуральных числа называют «дружественными», если каждое из них равно сумме всех делителей (кроме его самого) другого. Найти все пары «дружественных» чисел, которые не больше данного числа n.

142. Натуральное число, в записи которого n цифр, называется числом Амстронга, если сумма его цифр, возведенная в степень n, равна самому этому числу. Найти все такие числа от 1 до k.

143. Найти все натуральные n -значные числа, цифры в которых образуют строго возрастающую последовательность.

144. Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр.

145. На части катушки с автобусными билетами номера шестизначные. Составить программу, определяющую количество счастливых билетов на катушке, если меньший номер билета – n, больший – m (билет считается счастливым, если сумма первых трех цифр равна сумме трех последних).

Уровень C

146. Дано четное число n >2. Проверить для него гипотезу Гольдбаха: каждое четное число представляется в виде суммы двух простых чисел.

147. Составить программу перевода данного натурального числа в p -ичную систему счисления (2 ≤ p ≤ 9).

148. Дана символьная строка, представляющая собой запись натурального числа в p-ичной системе счисления. Составить программу перевода этого числа в десятичную систему счисления.


12. Графика в Паскале

Графический экран работает в двух режимах:

· Текстовой режим (каждый символ занимает 6 пикселов по горизонтали и 8 по вертикали);

· Графический режим (экран рассматривается как последовательность точек. Каждый пиксел характеризуется координатами X, У.Начало координат находится в левом верхнем углу. Пиксел определяют следующие атрибуты: координата по X, координата по У, цвет).

a) Переход в графический режим

До начала составления программы необходимо подключить графический драйвер (программа, которая обслуживает адаптер дисплея) ***.bgi - расширение файла драйвера.

InitGraph (Driver, Mode,'<полный путь>');

Путь к папке BGI (C:\BP\BGI).

Обязательно Driver, Mode должны быть определены в области описания переменных Var.

Пример:Var driver, mode: Integer;

При обращении к процедуре InitGraph используется автоматически определенный тип адаптера, который переводи экран в графический видеорежим, номер которого содержит переменная Mode.

Когда графический адаптер больше не нужен, необходимо закрыть видеорежим: CloseGraph;

b) Цветовое оформление


Дата добавления: 2015-11-14; просмотров: 38 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Характеристика и особенности языка 2 страница| Характеристика и особенности языка 4 страница

mybiblioteka.su - 2015-2024 год. (0.038 сек.)