Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Нахождение корней квадратного уравнения




var a,b,c: real; x1,x2,D: real; begin writeln('Введите коэффициенты a,b,c квадратного уравнения a*x*x+b*x+c=0: '); readln(a,b,c); D:= b*b - 4*a*c; if D<0 then writeln('Корней нет') else if D=0 then begin x1:= -b/2/a; writeln('Корни совпадют: x1=x2=',x1); end else begin x1:= (-b-sqrt(D))/2/a; x2:= (-b+sqrt(D))/2/a; writeln('Корни: x1=',x1:0:3,' x2=',x2:0:3); end; end.

Словесное наименование сезона по номеру месяца

var Month: integer; Season: string; begin write('Введите номер месяца: '); readln(Month); case Month of 1,2,12: Season:= 'Зима'; 3..5: Season:= 'Весна'; 6..8: Season:= 'Лето'; 9..11: Season:= 'Осень'; else Season:= 'Вы ввели неверный номер месяца'; end; writeln('Это ',Season) end.

Определение того, является ли символ цифрой или буквой

var Symbol: char; begin write('Введите символ: '); readln(Symbol); case Symbol of 'a'..'z': writeln('Это маленькая английская буква'); 'A'..'Z': writeln('Это большая английская буква'); '0'..'9': writeln('Это цифра'); end; end.

 

Условный оператор и оператор выбора. Возможные ошибки

Неверная расстановка begin end

var x,y: integer; v: integer; begin write('Введите x,y: '); readln(x,y); begin // ошибка: операторные скобки должны использоваться по ветке then оператора if if x>y then v:= x; x:= y; y:= v end; writeln('Результат упорядочения по возрастанию: ',x,' ',y); end.

Операторные скобки должны находиться внутри другого оператора (например, оператора if), а не окаймлять его.

Отсутствие begin end

var x,y: integer; v: integer; begin write('Введите x,y: '); readln(x,y); if x>y then v:= x; // ошибка: операторные скобки отсутствуют, поэтому по ветке then выполняется только этот оператор x:= y; // эти операторы выполняются ПОСЛЕ оператора if в любом случае y:= v // writeln('Результат упорядочения по возрастанию: ',x,' ',y); end.

Операторные скобки begin-end служат для объединения нескольких операторов в один. В данном случае ими следует окружить 3 оператора по ветке then. Если этого не сделать, то по ветке then будет выполняться только один оператор - v:= x; последующие операторы будут выполняться после оператора if всегда, что неверно.

Неверная расстановка скобок в сложном логическом выражении

var x: integer; begin readln(x); if x>1 and x<10 then // ошибка: отсутствуют скобки write(x); end.

В языке Паскаль операция and имеет более высокий приоритет, чем операции > и <, поэтому будет сделана попытка выполнить ее в первую очередь, что неверно.


 

Циклы. Тексты программ

Вывод последовательностей 1 2 3 4 5 и 5 4 3 2 1

var i: integer;

Begin

// С помощью for

for i:= 1 to 5 do

write(i,' ');

writeln;

 

for i:= 5 downto 1 do

write(i,' ');

writeln;

writeln;

 

// С помощью while

i:= 1;

while i<=5 do

Begin

write(i,' ');

i:= i + 1;

end;

writeln;

 

i:= 5;

while i>=1 do

Begin

write(i,' ');

i:= i - 1;

end;

writeln;

writeln;

 

// С помощью repeat

i:= 1;

Repeat

write(i,' ');

i:= i + 1;

until i>5;

writeln;

 

i:= 5;

Repeat

write(i,' ');

i:= i - 1;

until i<1;

writeln;

end.

Вывод последовательности 1 3 5 7 9

var i,x: integer;

Begin

// С помощью for и промежуточной переменной

x:= 1;

for i:= 1 to 5 do

Begin

write(x,' ');

x:= x + 2;

end;

writeln;

 

// С помощью for без промежуточной переменной

for i:= 1 to 5 do

write(2*i-1,' ');

writeln;

 

// С помощью while

x:= 1;

while x<10 do

Begin

write(x,' ');

x:= x + 2;

end;

writeln;

 

// С помощью repeat

x:= 1;

Repeat

write(x,' ');

x:= x + 2;

until x>=10;

end.

Сумма и произведение введенных чисел

Код на Pascal

Var

i: integer;

s,p: real;

x: real;

Begin

writeln('Введите 10 чисел: ');

s:= 0;

p:= 1;

for i:= 1 to 10 do

Begin

read(x);

s:= s + x;

p:= p * x;

end;

writeln('Сумма введенных чисел = ',s);

writeln('Произведение введенных чисел = ',p);

end.

Код на PascalABC.NET

Var

s,p: real;

Begin

writeln('Введите 10 чисел: ');

s:= 0;

p:= 1;

for var i:= 1 to 10 do

Begin

var x: integer;

read(x);

s += x;

p *= x;

end;

writeln('Сумма введенных чисел = ',s);

writeln('Произведение введенных чисел = ',p);

end.

Вычисление n!

Код на Pascal

Var

n,fact: integer;

i: integer;

Begin

write('Введите n (n<=13): ');

readln(n);

fact:= 1;

for i:= 2 to n do

fact:= fact * i;

writeln(n,'! = ',fact);

end.

Код на PascalABC.NET

var n: integer;

Begin

write('Введите n (n<=13): ');

readln(n);

var fact:= 1;

for var i:= 2 to n do

fact *= i;

writeln(n,'! = ',fact);

end.

Вычисление An

Код на Pascal

Var

n,i: integer;

a,p: real;

Begin

write('Введите a,n: ');

readln(a,n);

p:= 1;

for i:= 1 to n do

p:= p * a;

writeln(a,' в степени ',n,' = ',p);

end.

Код на PascalABC.NET

Var

n: integer;

a: real;

Begin

write('Введите a,n: ');

readln(a,n);

var p:= 1.0;

for var i:= 1 to n do

p *= a;

writelnFormat('{0} в степени {1} = {2}',a,n,p);

end.

Вывод цифр числа

var x: integer;

 

Begin

write('Введите x: ');

readln(x);

write('Цифры числа x в обратном порядке: ');

while x<>0 do

Begin

write(x mod 10,' ');

x:= x div 10;

end;

end.

Вывод букв английского алфавита

var c: char;

 

Begin

for c:= 'a' to 'z' do

write(c,' ');

writeln;

c:= 'A';

while c<='Z' do

Begin

write(c,' ');

c:= succ(c);

end;

end.

Числа Фибоначчи

Код на Pascal

const n = 25;

 

Var

a,b,c: integer;

i: integer;

 

Begin

a:= 1;

b:= 1;

write(a,' ',b,' ');

for i:= 3 to n do

Begin

c:= a + b;

write(c,' ');

a:= b;

b:= c;

end;

end.

Код на PascalABC.NET

const n = 25;

 

Begin

var a:= 1;

var b:= 1;

write(a,' ',b,' ');

for var i:= 3 to n do

Begin

var c:= a + b;

write(c,' ');

a:= b;

b:= c;

end;

end.

Минимум из введенных

Код на Pascal

const n = 10;

 

Var

min: integer;

x: integer;

i: integer;

 

Begin

writeln('Введите ',n,' значений: ');

read(x);

min:= x;

for i:= 2 to n do

Begin

read(x);

if x<min then

min:= x;

end;

writeln('Минимальное значение = ',min);

end.

Код на PascalABC.NET

const n = 10;

 

var min: integer;

 

Begin

writelnFormat('Введите {0} значений: ',n);

min:= integer. MaxValue;

for var i:= 1 to n do

Begin

var x: integer;

read(x);

if x<min then

min:= x;

end;

writeln('Минимальное значение = ',min);

end.

Алгоритм Евклида поиска НОД

var a,b,c: integer;

 

Begin

writeln('Введите a,b: ');

read(a,b);

while b<>0 do

Begin

c:= a mod b;

a:= b;

b:= c;

end;

writeln('Наибольший Общий Делитель = ',a);

end.

Вывод таблицы умножения

Код на PascalABC.NET

const n = 9;

 

Begin

for var i:=1 to n do

Begin

for var j:=1 to n do

write(i*j:4);

writeln;

end;

end.

Определение простоты числа

Var

N: integer;

IsSimple: boolean;

 

Begin

writeln('Введите число: ');

readln(N);

 

IsSimple:= True;

for var i:=2 to round(sqrt(N)) do // если число составное, то один из его сомножителей <= sqrt(N)

if N mod i = 0 then

Begin

IsSimple:= False;

break;

end;

 

if IsSimple then

writeln('Число ',N,' простое')

else writeln('Число ',N,' составное');

end.


 

Циклы. Возможные ошибки

Неверный тип переменной цикла

var x: real; begin for x:= 1 to 10 do // переменная - параметр цикла не может иметь вещественный тип write(x); end.

Изменение переменной цикла в теле цикла

Пример 1.

var i: integer; begin for i:= 1 to 10 do begin write(i); i:= i + 2; // Нельзя изменять значение переменной цикла внутри цикла end; end.

Пример 2.

var i: integer; begin for i:= 1 to 10 do begin read(i); // Нельзя изменять значение переменной цикла внутри цикла write(i); end; end.

Использование одинаковой переменной цикла в заголовках вложенных циклов

var i,j: integer; begin for i:= 1 to 10 do for i:= 1 to 10 do // ошибка: во вложенном цикле нельзя использовать параметр цикла с тем же именем begin write(i); end; end.

Неинициализированная переменная

var i: integer; p: real; begin // Забыли инициализировать p:= 1 for i:= 1 to 10 do p:= p * 2; write(p); end.

Зацикливание

var x: integer; begin x:= 1; while x>0 do // ошибка: условие все время остается истинным begin writeln(x); x:= x + 1; end; end.

Переполнение

var n: integer; x: real; begin n:= integer. MaxValue; // максимальное целое writeln(n); n:= n + 1; // следующее за максимальным целым writeln(n); writeln; x:= real. MaxValue; // максимальное вещественное writeln(x); x:= x * 2; // бОльшее, чем максимальное вещественное writeln(x); // в ряде компиляторов возникает ошибка переполнения. // Здесь x получает значение "бесконечность" end.

Сравнение вещественных чисел на равенство

begin if 0.3*3 = 0.9 then // Значения не равны ввиду ошибки округления при работе с вещественными числами writeln('Равны') else writeln('Не равны'); end.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...