Отправляет email-рассылки с помощью сервиса Sendsay

Pascal с нуля by [CPM]

  Все выпуски  

Pascal с нуля by [CPM] Выпуск №4


Информационный Канал Subscribe.Ru

Рассылка "Pascal с нуля" by [CPM]. Выпуск №4

Рассылка "Pascal с нуля" by [CPM]. Выпуск №4


v()v@n[CPM]


Доброе время суток!

BEGIN

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


Во-первых. Приношу свои извинения за задержку рассылки. Я не имел доступа к компьютеру и был завален учёбой. Но я снова свободен.
Во-вторых. Если вы нашли несколько ошибок в прошлом выпуске, просьба не сильно обращать внимание. Вообще, я думал, что рассылка "подохнет" очень скоро, так как число подписчиков росло не очень быстро, и на последний момент просмотра мною статистики их было около 70-ти. Когда я сегодня пишу этот выпуск, вас уже 863. Когда я это увидел, чуть со стула не грохнулся. Сразу появилось непреодолимое желание дописать этот выпуск.


Поправка к прошлому выпуску:


  

Правильный рисунок не ^y | | экран | +------->x а +--------->x | | экран | v y



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


Теория



Вступление.
Итак, переменная - кусок памяти, которая резервируется в ОЗУ (Основательно Забывающее Устройство) программой. Чтобы, например, уменьшить занимаемое программой место в оперативке, вы должны контролировать количество переменных и занимаемое ими место. Дальнейшее "укорачивание" проги называется оптимизацией. Чтобы показать программе, сколько места должна занимать та или иная переменная, существуют типы.
Приведём несколько таблиц:

Целые типы
Тип Размер(в байтах) Диапазон значений
integer 2 -32768...32767
shortint 1 -128...127
longint 4 -2147483648...2147483647
byte 1 0...255
word 2 0...65535


Вещественные типы
Тип Размер(в байтах) Диапазон значений
real 6 2.9E-39..2.7E-38
double 8 5.0E-324..1.7E+308
comp 8 E-263+1..E+263-1
extended 10 3.4E-4932..1.1E+4932
single 4 2.9E-39..1.7E+38



Начнём с целых типов. Вы, наверное, посмотрев на некоторые числа в таблице, перехотели даже трогать паскаль. Ведь надо выучить все эти числа, чтобы умело оперировать переменными. И тут я скажу, что очень легко вручную получить Диапазон любой переменной целого типа. Для этого нужно знать размер переменной (в байтах), а также Может ли она хранить отрицательные числа. Сначала, давайте разберёмся с переменными, которые хранят только положительные числа и 0 (byte, word). Для этого возьмём калькулятор. Пуск---Выполнить---Calc. Когда появится калькулятор, надо изменить вид на инженерный. Если не знаете, как это делается, спросите у кого-нибудь из взрослых или внимательно изучите меню. Когда вы справились с этим заданием, надо отметить переключатель Bin. После выполнения этого действия мы готовы к подсчёту диапазона. Берём тип Byte и смотрим его размер. В данном случае это 1 байт. Как вы, наверное, знаете, что байт - 8 бит. Каждый бит может иметь значение 1 или 0. Так вот мы берём и вводим 11111111 (8 единиц) - максимальное число, которое может содержать 1 байт. Отмечаем переключатель Dec, и получаем самое большое число, которое может хранить тип Byte. Должно выйти 255.

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



Теперь рассмотрим вещественные. Если мне не изменяет память, то все, кроме Real, могут быть использованы на процах intel 8087/80287. Вы, наверное, испугались интервалов. Какие-то 2.9E-39..2.7E-38. Дело в том, что вещественный тип имеет общий вид С Е+n, где с - какое-то число (целое или дробное). E+n - 10 в степени n. Например, 3.40Е+2=3.40*10^2=340.



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



Чтобы работать с переменной, надо её объявить. Объявление переменной имеет вид
var
имя : тип;
Пример.

var
w:word; {i - переменная целого типа}
i,N:integer; {i,N}
s:single; {s - вещественная переменная}
str:string[40]; {str - строковая переменная}
...


Возникает вопрос: что это за строковая переменная. Ответ: переменная, которая может хранить строку. Её объявление имеет следующий вид
name: string[l];
где l - максимальная длина строки. Если не указывать - 256. Под переменную отводится l байт памяти.
Также, мы имеем возможность определить свой тип
type
type_name = 0..70;

var
t: type_name;
...

Есть возможность определения константы. const
c=5;
d=10;
...
Теперь приведу таблицу возможных операций над переменными

Операция Общий вид Пример
Сложение a+b a=3; b=1; c=a+b; после выполнения с=4
Вычитание a-b a=3;b=1; c=a-b; после выполнения с=2
Умножение a*b a=3;b=2; c=a*b; - c=6
Деление а/b a=555; b=5; c=a/b; - c=111;
Деление целых a div b a=13; b=3; c=a div b; - c=4
Остаток от деления целых a mod b a=13; b=3; c=a mod b; - c=1

Присвоение значения переменной имеет вид
имя:=значение; a:=5;
b:=3;
c:=a+b;
str:='First string';

Таблица арифметических функций
Функция Что возвращает
abs(x) модуль числа
cos(alfa) косинус угла
sin(alfa) синус угла
arctan(alfa) арктангенс
frac(x) дробная часть
int(x) целая часть
pi число пи pi=3.14...
ln(x) логарифм натуральный
sqr(x) квадрат
sqrt(x) арифметический квадратный корень

Теперь вы знаете операции, которые можно производить над переменными. Вы знаете, как присвоить значение той или иной переменной. Одна загвоздка - вы не знаете, как вывести переменную на экран. Делается это элементарно. В прошлом выпуске была описана такая фишка, как Write().
Вывод переменной на экран
...
name:='pascal'; {присвоить переменной name значение pascal}
write(name); {вывести значение переменной на экран}
writeln(name); {вывести значение переменной на экран и перейти на новую строку}
write(name, ' '); {вывести значение переменной на экран, после него поставить}
writeln; {прейти на новую строку}
writeln(name, ' rulez'); {вывести значение переменной на экран, а потом то, что в кавычках}
writeln('a=5, b=5'); {смотри прошлый выпуск}
writeln('a+b=', 5+5); {выводит то, что в кавычках, а потом сумму двух пятёрок}
writeln(name:3); {см. дальше}
...
У вас возник вопрос, что это за writeln(name:3);, а именно, что это за :3. Ответ прост
Вот вам вид процедуры writeln (аналогично write)
writeln(name:n:s);
где name - переменная, значение которой надо вывести, n - ширина выводимого поля, s - кол-во цифр после запятой.
Но даже с этими знаниями вы нормальной проги не напишете. Допустим, вы напишите прогу, но ведь она будет работать всё время с данными, которые вы введёте во время программирования. Полноценная прога должна уметь принимать данные с клавиатуры данные. Делает это процедура read(x); Она заносит в переменную всё, что вводит пользователь. Есть ещё readln(x);, которая ещё и переходит на новую строку. Можно запрашивать также несколько значений readln(x,y,z);.
пример. ...
write('enter your name, please: ');
readln(name);
writeln('Hello, ',name);
...

Вот и всё. Теории хватит.


Практика


Напишем прогу перевода температуры. Цельсий - Фаренгейт. uses crt;
var
tem_cels, tem_far:real;
begin
clrscr;
WriteLn('Programm by v()v@#. CELbSii vs FAPEHrEIT');
write('VVEDITE TEMnEPATyRy V rRADySAX CELbSIYA: ');
ReadLn(tem_cels);
tem_far := 9 / 5 * tem_cels + 32;
WriteLn('FAPEHrEIT: ',tem_far:4:5);
readln;
end.


Домашнее задание


  1. Написать прогу, которая вычисляет площадь треугольника (вводят длины сторон)

  2. Написать прогу, которая находит радиус окружности, если вводят объём

  3. Написать прогу, которая выводит число обратное данному. Ввод - трёхзначное число. Пример: ввод - 345, вывод - 543.

  4. Написать прогу, которая вычисляет cos(cos(x)+sin(x)+cos(|x-2*x|)). Округлить до ближайшего целого. Ввод - x.

  5. Написать прогу, которая находит максимальную высоту (относительно земли), на которую поднимается тело, брошенное со скоростью V под углом alfa с поверхности земли. Ввод - v, alfa. Константа g=10.



  6. Все вопросы и ответы шлите на мыло v()v@#[CPM]


    1. Автор >>>v()v@#[CPM] (это я). IСQ: 88880172

    2. Дизайн и верстка >>>Ustas[CPM]

    3. MedL[CPM] человек, который любит помогать другим и обожает Паскаль. IСQ:88883515

    4. @mor[CPM] в общем программер, который, как и все остальные, хочет помочь вам в освоении Паскаля. IСQ:88884978




http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное