Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Как создать свой сайт и заработать?" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Программирование с нуля - это совсем просто! 30) О типовых ошибках
Информационный Канал Subscribe.Ru |
Программирование с нуля - это совсем просто!30) О типовых ошибках
По поводу Д. в 6-ой рассылке наткнулся на вопрос о Д.8 - " Вообщем, в
инспекторе обьектов нет такого свойства как caption". Ура! Мы эту особенность Дельфи рассмортим далее. Что касается ошибок, то бывает, между прочим, и так:)
Собиралась написать несколько раз: Чаще всего проблемы вызывает условный оператор. Точнее, неверное его использование :) Во-первых, часто путаются в then - else. Где что чему соответствует, какой end какому begin-у итд. Это потому, что не применяются отступы и пустые строки, а сам код пишется строчка за строчкой. А как же его писать-то, спросите? Лучше вводить его сразу целым блоком. Как-то так:
if then
end
else
end;
Потом вставляете условие, далее - внутрь каждой пары begin / end команды, и так далее. И максимально наглядно, чтобы каждая пара begin end была на одном уровне. Еще одна важная особенность условного оператора. Для Паскаля и Си актуальная!
1. почему не нравится что-то? За комментарием - это предупреждение компилятора. О чем оно? О том, что значение, занесенное в переменную p, далее нигде не используется. Умный компилятор, правда? Действительно, зачем нам в программе переменная, если мы ее нигде далее не задействуем, даже не выведем на экран. Такие предупреждения всегда надо учитывать. И вот собственно ошибка:
if (c>a) and (a>b) then ; Команды, взятые в группу, выполняются в любом случае. Почему? Потому что за then поставлена незаметная точка с запятой. А она означает завершение оператора (в данном случае условного). То есть на самом деле такая запись: if (c>a) and (a>b) then ; Трактуется так:
if (c>a) and (a>b) then
end; Внимательно, без спешки, набирайте операторы. Проверяйте пошагово, все веточки. Если вводите begin, сразу же для него укажите end, только потом вводите группу команд между ними. Точка с запятой НЕ ставится (точнее, поставить можно, но лучше не надо) после then :) , после begin, перед else, перед end. Продолжение ответов на первые задачи:
1).
2).
3).
4).
5).
Константин. Программы для задачи по Фанте: Кстати:
Если вы действительно не знаете, как правильно решается задача про Фанту, то возьму на себя смелость сказать, что верное решение - у Лены, но не в словесном алгоритме, а в программе. В программе она начинает считать с пятницы, что, по-моему, и есть верный путь, ведь при минимальной начальной сумме в пятницу утром хватит денег ровно на одну бутылку.
Никак не получалось решить задачку о фанте, просмотрел другие
А потом решение само как то в голове образовалось:
k - стоимость бутылки фанты;
Поскольку каждый раз ребята сдавали пустые бутылки, значит за
1. Введем k, m и x;
Если неважно количество человек в компании, просто убираем x.
program fanta;
var k, m, n, x :integer;
begin
writeln( ' vvedite stoimost 1 bytulki fantu ' );
end.
Ух, Фанта парамия Рикки! :)
Сергей Еще вариант:
var N,i,P,F,D,Sd:integer;
Нахождение корней квадратного уравнения
begin
writeln( ' vvedite a,b,c ' );
end.
var x,y,z,w,h,min1,min2,a,b,max:real;
Вроде всё. Кстати, в задании по квадратному уравнению несколько ошибок было.
Смею заметить ,что в задании 6 в записи уравнения есть ошибочка. Потом, очень важно! Так было в одном из решений:
begin
Там надо поставить - Это ВАЖНО ! Если записано x1:=(-b-kd)/2*a; то компилятор операции с равным приоритетом (деление и умножение) будет выполнять (точнее, переводить в исполнимый код) слева направо. То есть сначала выполнится (-b-kd)/2 а потом то, что получится, умножится на a. ( (-b-kd)/2 ) *a Чтобы таких ошибок избежать, все знаменатели в любых формулах всегда желательно явно заключать в скобки!
Далее - по бруску :)
program Project2;
{$APPTYPE CONSOLE}
uses math, Следующие ответы.
1) ввести два числа а и b и напечатать максимальное из них
var x,y: Integer;
begin
2) ввести три числа x, y, z. Напечатать минимальное из них.
var x,y,z: Integer;
begin
Кстати программа работает и так
begin
var x,y,z: Integer;
begin
4)
var x,y,z: Integer;
begin
5
var a,b: Integer; Это далеко не все ответы. Они будут продолжены далее. На Си уже много вариантов, они будут тематически объединены. На Бейсике очень мало (к счастью :). Обязательно присылайте свой код! Потому что учиться на примерах других людей, которые выполняют такие-же упражнения - очень полезно! Пожалуй, ничего эффективнее в этой области еще не придумано. Поэтому подумайте о других ! :) Упражнения на условный оператор. Закрепляющие :) 13. Даны два прямоугольника с вершинами x1,y1 и x2,y2, и шириной/высотой w1,h1 и w2,h2. Определить, пересекаются ли они.
Примеры:
б) 0,0 1,1
14. С клавиатуры вводится число. Если это 0, то завершить программу. Если нет, определить максимальное и минимальное из всех введенных на данный момент, напечатать эти мин/макс, и продолжить ввод следующего числа. 15. ИЗвестны три стороны треугольника - a, b, c. ПРоверить, может ли такой треугольник существовать, и если да - дополнительно указать, является ли он прямоугольным. 16. Задание с Пермской олимпиады (на циклы, условия, арифметику). Начните с алгоритма на бумаге! (хотя все равно не послушаете :).
Древнерусское умножение . Известен древнерусский прием умножения. Для умножения a и b поступаем так: делим a на 2, а b умножаем на 2, причем если делимое — число нечетное, то берем целую часть частного. С полученными числами проделываем то же самое, пока в частном не получится единица. Для получения произведения ab складываются только те числа правого столбика, слева от которого стоят нечетные числа. Вам надо избавиться от столбика к тому же, и выполнять все вычисления на лету (в этом предыдущее задание поможет). Кстати, вот письмо про олимпиады от Максима:
Хочу Вам сказать ( поделиться радостью ), что я только что приехал с олимпиады по базовому курсу информатики. Эта олимпиада
рассказала мне много, например, что я не такой уж компьютерный гений (как кажется на первый взгляд) чтобы быть
таковым, похоже, надо быть на нем помешанным. Ну или где-то около+ Гм-гх (это я кашляю простыл). В общем, задания
то простые с одной стороны, а с другой ой. И так, ближе к делу... Кто решит? Я не смог :) Вот еще, где-то прочитал, уже не помню:
Задачка для второго класса церковно-приходской школы, придуманная Львом Толстым. Можно не думая (что приятно с точки зрения программиста :) написать программу, реализующую вышеприведенную последовательность, но лучше решить ее в уме. Вот письмо, над которым я долго смеялся! Надеюсь, и вы со мной.
Ко мне вчера друг зашел, так поиграть на компьютере, смотрит, у меня там Delphi открыт, ну он не понял
конечно что Delphi, видит только какието цифры, фрмулы, английские слова. Кстати. Где сказки? Неужели с творческой составляющей так плохо? Не ожидал, честно говоря... От одного программирования только отупеете, предупреждаю :) Пока мне не придет достаточное количество сказок, следующий выпуск выпускать не буду! :) (c) 2004 Сергей Бобровский bobrovsky@russianenterprisesolutions.com
Школа программирования с нуля
Все предыдущие выпуски базового курса тут:
|
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.prognull |
Отписаться |
В избранное | ||