Программирование и не только

Объявление


!!

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Урок №1

Сообщений 1 страница 11 из 11

1

Здравствуйте друзья, я начинаю эту тему для тех кто хочет научится программировать.И начнем с языка pascal, я и сам когда то начинал с него поэтому и советую новичкам начинать именно с этого языка, потому что он достаточно легок и хорошо структурирован.Моя цель научить вас составлять программы,сначала самые простые, затем сложные.
Урок 1.

Язык Pascal был разработан Никлаусом Виртом в 1970 году. Благодаря своей простоте в изучении используется многими начинающими программистами и по сей день.Pascal  отображает фундаментальные и наиболее важные концепции алгоритмов в очевидной и легко воспринимаемой форме.В процессе
было выпущено много версий сред для языка, но мы будем пользоваться turbo pascal 7.0.

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

Символы языка pascal:
1) Все буквы латинского алфавита
2)десятичные цифры
3)Специальные символы: -+=\ / . , !#$%^&*()[] := <> {}

Зарезервированные слова:
Зарезервированные слова это слова которые являются служебными в языке и их нельзя употреблять для имен переменных и другого.

Список Зарезервированных слов языка Pascal
and  File not then

array  For object to asm

function of type begin

Goto or unit case If packed until

const implementation procedure

uses constructor In program var destructor

inherited record while div

inline repeat with do

intenface set xor

downto Label shl

else Mod shr

end Nil string

также кроме зарезервированных слов в паскале имеется 4 директив
___________________________________________________________
  Директивы:

absolute  external

forward interrupt 
___________________________________________________________

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

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

0

2

ну что ж приступим!
какова первая задача?
или сначала теория?

0

3

для задачи еще рановато.
В ближайшее время напишу 2 урок и где и перейдем к самому главному - практике!

0

4

Урок №2

Здраствуйте начнем второй урок по языку pascal.
каждая переменная или опреанд в паскале должен иметь тип. Например число может быть целым или дробным(вещественным) и т.д
Паскаль поддерживает 5 целых типов.

Shortint

integer 

Longint

Byte
 
Word

которые различаются между собой лишь диапазоном принимаемых значений.

Для вещественных чисел в паскале предусмотренны следующие типы

real

single

double

extended

которые также различаются между собой лишь диапазоном принимаемых значений.
остальные типы пройдем по мере изучения языка.
____________________________________________________________________________-

Любая программа на языке паскаль состоит из следующих частей.

program имя; заголовок программы

uses  имя;      список подключаемых модулей

const             раздел описания констант

label              раздел описания меток

type              раздел описания типов

var               раздел описания переменных

procedure     раздел описания процедур

function        раздел описания функций

begin
тело программы
end.

Из выше перечисленных обязательны только end. begin
Самая маленькая но рабочая программа на языке паскаль:
(правда она ничего ни умеет делать :lol: )
_______________
begin
end.
_______________________
Переменные:Переменная — это область памяти, в которой находятся данные, которыми оперирует программа. Когда программа манипулирует с данными, она, фактически, оперирует содержимым ячеек памяти, т. е. переменными.

Чтобы программа могла обратиться к переменной (области памяти), например, для того, чтобы получить исходные данные для расчета по формуле или сохранить результат, переменная должна иметь имя. Имя переменной придумывает программист.

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

Следует обратить внимание на то, что компилятор языка Delphi не различает прописные и строчные буквы в именах переменных, поэтому имена SUMMA, Summa и summa обозначают одну и ту же переменную.

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

ах2 + bх + с = 0

вполне логично присвоить имена а, b, с, x1 и х2. Другой пример. Если в программе есть переменные, предназначенные для хранения суммы покупки и величины скидки, то этим переменным можно присвоить имена

TotalSumm и Discount или ObSumma и Skidka.

В языке Delphi каждая переменная перед использованием должна быть объявлена. С помощью объявления устанавливается не только факт существования переменной, но и задается ее тип, чем указывается и диапазон допустимых значений.

В общем виде инструкция объявления переменной выглядит так:

Имя : тип;

где:

имя — имя переменной;

тип — тип данных, для хранения которых предназначена переменная.
Пример:

а : Real; b : Real; i : Integer;

В приведенных примерах объявлены две переменные типа real и одна переменная типа integer.

В тексте программы объявление каждой переменной, как правило, помещают на отдельной строке.
Если в программе имеется несколько переменных, относящихся к одному типу, то имена этих переменных можно перечислить в одной строке через запятую, а тип переменных указать после имени последней переменной через двоеточие, например:
а,b,с : Real; x1,x2 : Real;
Инструкция присваивания является основной вычислительной инструкцией. Если в программе надо выполнить вычисление, то нужно использовать инструкцию присваивания.

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

В общем виде инструкция присваивания выглядит так: Имя : = Выражение;

где:

Имя — переменная, значение которой изменяется в результате выполнения инструкции присваивания;

: = — символ инструкции присваивания.

Выражение — выражение, значение которого присваивается переменной, имя которой указано слева от символа инструкции присваивания.

Пример:

Surama := Сеnа * Kol; Skidka := 10; Found := False;

Инструкции write и writeln

Инструкция write предназначена для вывода на экран монитора сообщений и значений переменных. После слова write в скобках задается список переменных, значения которых должны быть выведены. Кроме имен переменных в список можно включить сообщение — текст, заключенный в одиночные кавычки.

Например:

write(Summa);

write('Результат вычислений');

write('Корни уравнения. xl=', xl, ' х2=', х2);

После имени переменной через двоеточие можно поместить описание (формат) поля вывода значения переменной.

Для переменной типа Integer формат — это целое число, которое задает ширину поля вывода (количество позиций на экране).

Например, инструкция

write(d:5);

показывает, что для вывода значения переменной d используется 5 позиций.

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

Например, если значение переменной Koi типа integer равно 15, то в результате выполнения инструкции

write('Всего изделий:', Kol:5);

на экран будет выведено:

Всего изделий: 15

Для переменных типа Real формат представляет собой два целых числа, разделенных двоеточием. Первое число определяет ширину поля вывода, второе — количество цифр дробной части числа. Если задать только ширину поля, то на экране появится число, представленное в формате с плавающей точкой.

Например, пусть переменные x1 и х2 типа real имеют значения 13.25 и -0.3401, тогда в результате выполнения инструкции

write('xl=',x1:5:2,' х2=',х2:12)

на экран будет выведено:

x1=13.25 х2=-3.40100Е-01

Если ширины поля, указанной в формате, недостаточно для вывода значения переменной, то выводится число в формате с плавающей точкой и десятью цифрами после запятой (все поле вывода в этом случае занимает 17 позиций).

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

х:=-2.73;

write('Значение перем');

write('енной:');

write('х=');

write(x:8:5);

на экран будет выведено:

Значение переменной: х=-2.73000

Инструкция writein отличается от инструкции write только тем, что после вывода сообщения или значений переменных курсор переводится в начало следующей строки. Например, если значением переменной x1 является число -3.561, а значением переменной х2 — число 10.345, то результатом выполнения инструкций

writein('Значения корней уравнения:');

writeln('x1=',x:7:3);

writein('х2=',х:7:3);

на экран будет выведено:

Значения корней уравнения:

xl=-3.5610

х2= 10.345

Инструкции read и readln

Инструкция read предназначена для ввода с клавиатуры значений переменных (исходных данных). В общем виде инструкция выглядит следующим образом:

read (Переменная1, Переменная2, ... ПеременнаяN)

где переменнаяы — имя переменной, значение которой должно быть введено с клавиатуры во время выполнения программы.
Приведем примеры записи инструкции read:

read(a); read(Cena,Kol);

При выполнении инструкции read происходит следующее:

1. Программа приостанавливает свою работу и ждет, пока на клавиатуре будут набраны нужные данные и нажата клавиша <Enter>.

2. После нажатия клавиши <Enter> введенное значение присваивается переменной, имя которой указано в инструкции.

Например, в результате выполнения инструкции

read(Temperat);

и ввода с клавиатуры строки 21, значением переменной Temperat будет число 21.

Одна инструкция read позволяет получить значения нескольких переменных. При этом вводимые числа должны быть набраны в одной строке и разделены пробелами. Например, если тип переменных а, ь и с — real, то в результате выполнения инструкции read(a,b,c); и ввода с клавиатуры строки:

4.5 23 0.17

переменные будут иметь следующие значения:
а = 4,5; b = 23,0; с = 0,17.

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

read(А,В); read(С);

и ввода с клавиатуры строки

10 25 18

переменные получат следующие значения: А=10, B = 25. Инструкция read (С); присвоит переменной с значение 18.

Инструкция readln отличается от инструкции read тем, что после выделения очередного числа из введенной с клавиатуры строки и присваивания его последней переменной из списка инструкции readin, оставшаяся часть строки теряется, и следующая инструкция read или readin будет требовать нового ввода.

Например, в результате выполнения инструкции

readin(А,В); read(С);

и вводе с клавиатуры строки

10 25 18

переменные получат следующие значения: А=10, B = 25. После чего программа будет ожидать ввода нового числа, чтобы присвоить его переменной с.

Перед каждой инструкцией read или readin следует располагать инструкцию write, для того чтобы подсказать пользователю, какие данные ожидает от него программа. Например, фрагмент программы вычисления стоимости покупки может иметь вид:

writeln('Введите исходные данные.');

write('Цена изделия:');

readln(Сеnа);

write('Количество в партии:');

readln(Kol);

write('Скидка:');

readln(Skidka);

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

Перейдем непосредственно к практике

задание: Написать программу которая будет счтитать площадь квадрата . Сторону квадрата ввести с клавиатуры.
___________________________________________________________________

Код:
program zadacha 1; заголовок программы
 var    a:real;            переменная сторона
          s:real;            переменная где будет хранится значение площади
 begin                       начало
   writeln('vvedite storonu:'); вывод на экран строки
   readln(a);                         вводим прочитываем сторону
   s:=а*а;                            присваеваем значению площадь призведение сторон
   write('s=',s);                     выводим значение площади
   readln;                             задержка экрана
end.                                    конец нашей программы

___________________________________________________

Попробуйте самостоятельно решить следующую задачу.
Теорема Пифагора
Условие: Написать программу считающую гипотенузу по 2 известным катетам.(катеты вводятся с клавиатуры)
                                            Если что то нпонятно обращаемся на -

+1

5

я зделал :
http://uafile.com/683960 - исходный код
http://uafile.com/955003 - екзешник

0

6

http://uafile.com/870673   и я зделал

0

7

kommunist
Молодец!!!Хорошие уроки!!
Я думаю для начинающих это будет понятно!!!

0

8

Здраствуйте друзья сегодня я закончил всю свою работу и могу  продолжить уроки по pascal.

На практике редко встречаются задачи, алгоритм решения которых является линейным. Часто оказывается, что алгоритм решения даже элементарной задачи не является линейным. Например, пусть надо вычислить по формуле ток в электрической цепи. Если предположить, что пользователь всегда будет вводить верные данные, то алгоритм решения этой задачи действительно является линейным. Однако полагаться на то, что пользователь будет вести себя так, как надо программе, не следует. Формула расчета предполагает, что величина сопротивления не равна нулю. А что будет, если пользователь введет 0? Ответ простой: возникнет ошибка "Деление на ноль", и программа аварийно завершит работу. Можно, конечно, возложить ответственность за это на пользователя, но лучше внести изменения в алгоритм решения чтобы расчет выполнялся только в том случае, если введены верные данные.

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

Условие

В повседневной жизни условие обычно формулируется в виде вопроса, на который можно ответить Да или Нет. Например:

Величина сопротивления равна нулю?

Ответ правильный?

Сумма покупки больше 300 рублей?

В программе условие — это выражение логического типа (Boolean), которое может принимать одно из двух значений: True (истина) или False (ложь).
Простое условие состоит из двух операндов и оператора сравнения. В общем виде условие записывается следующим образом:

Оn1 Оператор On2

где:

On1 и Оп2 — операнды условия, в качестве которых может выступать переменная, константа, функция или выражение;

Оператор — оператор сравнения.
Ниже приведены примеры условий:

Summa < 1000 Score >= HBound Sim = Chr(13)

В первом примере операндами условия является переменная и константа. Значение этого условия зависит от значения переменной Summa. Условие будет верным и, следовательно, иметь значение True, если значение переменной Summa меньше, чем 1000. Если значение переменной Summa больше или равно юоо, то значение этого условия будет False.

Во втором примере в качестве операндов используются переменные. Значение этого условия будет True, если значение переменной Score больше или равно значению переменной HBound.

В третьем примере в качестве второго операнда используется функция. Значение этого условия будет True, если в переменной Sim находится символьный код клавиши <Enter>, равный 13.
При записи условий следует обратить особое внимание на то, что операнды условия должны быть одного типа или, если тип операндов разный, то тип одного из операндов может быть приведен к типу другого операнда. Например, если переменная Key объявлена как integer, то условие
Key = Chr(13)
синтаксически неверное, т. к. значение возвращаемое функцией Chr имеет тип char (символьный).
Во время трансляции программы при обнаружении неверного условия компилятор выводит сообщение: incompatible types (несовместимые типы).
Из простых условий при помощи логических операторов: and — "логическое И", or -- "логическое ИЛИ" и not - "отрицание" можно строить сложные условия.
В общем виде сложное условие записывается следующим образом:
условие1 оператор условие2
где:
условие1 и условие2 — простые условия (выражения логического типа);
оператор — оператор and или or.

Например:

Код:
(ch >= '0') and (ch <= '9')


(day = 7) or (day = 6)


(Forml.Editl.Text <> ' ' ) or (Forml.Edit2.Text <> '' )


Forml.CheckBoxl.Checked and (Forml.Editl.Text <> '' )

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

Например, пусть условие предоставления скидки сформулировано следующим образом: "Скидка предоставляется, если сумма покупки превышает 100 руб. и день покупки — воскресенье", Если день недели обозначен как переменная Day целого типа, и равенство ее значения семи соответствует воскресенью, то условие предоставления скидки можно записать:

(Summa > 100) and (Day = 7)

Если условие предоставления скидки дополнить тем, что скидка предоставляется в любой день, если сумма покупки превышает 500 руб., то условие можно записать:

((Summa > 100) and (Day =7)) or (Summa > 500)

Инструкция if

Инструкция if позволяет выбрать один из двух возможных вариантов развития программы. Выбор осуществляется в зависимости от выполнения условия.

В общем виде инструкция if записывается так:

if условие then

begin

// здесь инструкции, которые надо выполнить,

// если условие истинно.

end

else

begin

// здесь инструкции, которые надо выполнить, // если условие ложно. end;

Обратите внимание, что перед else (после end) точка с запятой не ставится.
Выполняется инструкция if следующим образом:
1. Вычисляется значение условия (условие — выражение логического типа, значение которого может быть равно True или False).

2. Если условие истинно (значение выражения условие равно True), то выполняются инструкции, следующие за словом then (между begin и end). На этом выполнение операции if заканчивается, то есть инструкции, следующие за else, не будут выполнены.
Если условие ложно (значение выражения условие равно False), то выполняются инструкции, следующие за словом else (между begin и end).
Например, если переменная t обозначает тип соединения сопротивлений в электрической цепи (t=1 соответствует последовательному соединению, t=2 — параллельному), a r1 и r2 — величины сопротивлений, то приведенная ниже инструкция if осуществляет выбор формулы, по которой будет выполнен расчет

Код:
if t=l then


begin


z:=r1+r2; 

end 

else


begin


z:=(r1+r2)/(r1*r2); 

end;


Если в инструкции if между begin и end находится только одна инструкция, то слова begin и end можно не писать.


Например, инструкцию


if otv=3

then


begin


prav:=prav+1 ; 

end 

else


begin


writeln('Ошибка!');


end;


можно переписать так:


if otv=3 then


prav:=prav+l 

else


Writeln('Ошибка!') ;

В качестве примера использования инструкции if рассмотрим программу вычисления стоимости междугородного телефонного разговора.

Код:
program Primer1;
const


PAY =0.15; // цена одной минуты разговора 0.15 рубля 

DISCOUNT = 0.2; // скидка 20 процентов 

var


Time:Real; // длительность разговора 

Day:integer; // день недели 

Summa:real; // стоимость разговора 

begin

writeln('vvedite time');
readln(time);
writeln('vvedite day');
readln(day);
Summa:= PAY*Time;

// Если день суббота или воскресенье, то уменьшить


// стоимость на величину скидки


if (Day = 6) OR (Day = 7)


then Surama:=Summa*(1 - DISCOUNT);


// вывод результата вычисления

writeln('к оплате', ' ' summa );
readln;
end.

0

9

Прогу про гипотянузю без компилятора могу написать :D Люди, вы программисты, или кто?

0

10

Exmap написал(а):

Прогу про гипотянузю без компилятора могу написать :D Люди, вы программисты, или кто?

Не все здесь хорошие программисты, среди нас и новички есть  :idea:

+1

11

kommunist, линейным алгоритмом называется алгоритм, время работы которого T зависит от входных данных n как T(n)=O(n)

Отредактировано Exmap (2008-08-21 14:21:18)

0