Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > .NET для новичков > C# по Карли Ватсону |
Автор: massimo2 8.8.2011, 00:18 | ||
Здравствуй, народ! Совсем недавно я захотел попробовать заняться программированием Перебрал кучу инфы, что к чему, с чего начинать, что изучать, как и т.д. Ну выбрал в итоге C#. Вроде для новичков советуют. Читаю и изучаю книгу Карли Ватсона - C# Может кто-то её изучал, или читает сейчас, прошу оставить отзывы. А также хотелось тут обсуждать упражнения которые там даются, т.к. ответов там нет. А самому сложновато разбираться. Вот не могу выполнить упражнение о множестве Мандельброта...( Вот сам код
Надо изменить его таким образом, чтобы оно запршивало у пользователя границы рисунка и выводило выбранную часть рисунка. |
Автор: massimo2 8.8.2011, 12:37 | ||||
Код пишется либо в Notepad и сохраняется в расширении cs, а затем компилируется через командную строку, и потом можно запустить созданную программу и проверить. Либо (если по книге) всё делаешь в Visual Studio
Ну а выводиться уже должна в консоли, т.к. работаем с консольными приложениями пока. А насчёт книги, так вроде всё написано понятным языком, пока всё норм. Хотя я вообще ноль в программировании. |
Автор: Экскалупатор 8.8.2011, 12:47 | ||
при чем тут то куда пишется код? я спросил куда пользователь должен ввести значения? или ты хочешь их прямо в код вводить? и что значит "выводиться"? картинку(изображение) в консоль? или какие то координаты? по моему личному мнению в таких случаях надо взять Си, там как то быстрее понимаются всякие нюансы мелкие, виднее что ли становиться... |
Автор: massimo2 8.8.2011, 12:54 |
надо исправить код, что же ещё?! а картинка состоит из символов, вот в чём дело. вы бы запустили программу и проверили, сразу стало бы понятно |
Автор: Экскалупатор 8.8.2011, 13:13 |
![]() ![]() ![]() т.е. нужно будет каждый раз, когда пользователю вздумалось получить другой вариант, исправлять код? ![]() с "картинкой" все понятно. для того что бы ввести значения есть http://msdn.microsoft.com/ru-ru/library/system.console.read.aspx?ppud=4/http://msdn.microsoft.com/ru-ru/library/system.console.readline.aspx а дальше уже логика твоей программы должна решать какую часть выводить, так как картинка у тебя нигде не храниться и делается на лету, то тебе нужно будет подставить в циклы свои значения(полученные от пользователя) и пересчитать еще раз. |
Автор: massimo2 8.8.2011, 13:20 |
да всё верно вы написали. просто я вообще не могу въехать в этого мандельброта... |
Автор: Экскалупатор 8.8.2011, 14:22 |
massimo2, я надеюсь, что вполне понятен тот факт что если я сделаю вместо тебя то ты скорее всего не научишься, что бы понять и разобраться надо сделать самостоятельно, задай конкретный вопрос, что именно не понятно, я попытаюсь объяснить. |
Автор: massimo2 8.8.2011, 15:49 | ||
какие цифры должны быть в коде я вычислил, но как связать это с запрсом пользователя, не могу врубиться. Например будет выводиться: Какую часть рисунка показать(1 - верхняя, 2- нижняя, др. - весь рисунок). Допустим пользователь введет 1, и как сделать чтоб при вводе единицы менялась определённая переменная цикла for ? В принципе можно наделать ветвлений с помощью switch (каждый раз засовывая туда цикл for), но код будет очень уж объёмным! И всё же задание можно считать выполненным. Вот так выглядит код:
Вначале выведется рисунок, а затем вы сможете выбрать какую часть рисунка вам показать. |
Автор: Экскалупатор 8.8.2011, 17:10 | ||||
у тебя написано:
но ведь ты можешь написать
а откуда ты возьмешь это i циклу все равно, прочитаешь из консоли или из файла или еще откуда, не имеет значения. по поводу вывода, я не совсем въезжаю что должно получиться, но можно сделать один свитч, который будет решать че делать с тем что ввел пользователь, потом все логику рисования вынести в отдельный метод, в который в качестве параметров передавать значения, определяющие какую область нужно выводить. Добавлено через 2 минуты и 32 секунды не обновил страницу перед отправкой поста... смотри как много у тебя повторяющихся блоков, вынеси все в отдельный метод и вызывай его в нужных местах. в параметрах передавай то чем блоки отличаются друг от друга Добавлено через 4 минуты и 39 секунд кстати, забываю спросить, а зачем тебе именно дробные значения в циклах? |
Автор: massimo2 8.8.2011, 18:11 |
дело в том, что методы пока для меня ещё не изученная область.. вот.. насчёт "i" я думал, но ничего не придумал. Так что пока только так. А дробные значения - это уже нюансы построения этого множества Мандельброта, так что я не знаю этого. |
Автор: Экскалупатор 8.8.2011, 18:49 | ||
ну даже если так:
то уже в три раза меньше строк кода получается... это нужно было выучить раньше всего, что такое класс и что такое метод, без этого дальше нельзя учить. |
Автор: massimo2 8.8.2011, 19:07 |
значит у Ватсона своя метода изложения |
Автор: Экскалупатор 8.8.2011, 21:43 |
повторюсь я не читал, так что не знаю как он излагает, но по опыту могу сказать что до изучения методов в книгах, обычно(!), примеры не сложнее Hello World, а этот пример сложнее, значит, скорее всего, ты его придумал сам(молодец, на интересных задачах быстрее научишься), но к такому уровню уже нужно знать что такое классы и методы, почитай отдельно и будет тебе счастье. станет намного проще писать. |
Автор: massimo2 9.8.2011, 00:41 | ||
После прочтения очередной главы новые упражнения: 1. Какие из приведенных ниже преобразований не могут выполняться неявно? а) int в short b) short в int c) bool в string d) byte в float Мой ответ : a, c 2. Напишите программу, в которой описывается перечислимый тип color, использующий в качестве базового типа short и содержащий все цвета радуги, а также белый и чёрный. Может ли для такого перечислимого типа в качестве базового использоваться тип byte? Насчёт программы я не совсем понял что требуется, но написал вот такую (по аналогии с приводимым в книге примером):
а ответ на вопрос: конечно может. И ещё вопрос: возможно ли вывести на экран все значения типа по порядку? |
Автор: SKrivosein 9.8.2011, 02:07 | ||
Ну это утверждение очень спорное, я как и Экскалупатор считаю что лучше начать с Си. Но уж если сильно надо то возьми Троелсен Э. C#.NET 4 - 2010, причитай бегло первую часть, а от второй чётко и ясно всё расписано. А пытатся делать какие то упражнения не понимая методы, и ожидать что помогут на форуме, мне кажется не совсем систематический подход... Линк посылаю в личку. |
Автор: SKrivosein 9.8.2011, 02:51 | ||
|
Автор: massimo2 9.8.2011, 12:01 |
SKrivosein, спасибо, попробую Троелсена, так и быть. А может мне стоит попробовать курсы Intuit? Не знаю, осилю ли Троелсена..мне кажется он ориентируется на человека уже с базой каких-то знаний. |
Автор: SKrivosein 9.8.2011, 13:35 |
Пойми меня правильно, я нечего неимею против Карли Ватсана, но прочитав внимательно I-ю II-ю часть Троелсена, ты эти упражнения (судя по этим двум) будеш знать как решать. Вот потом их и решиш, тоже непомешает. |
Автор: massimo2 12.8.2011, 21:25 | ||||
Новые упражнения: 1.В следующих двух функциях содержатся ошибки. Какие именно? static bool write() { Console.WriteLine("Text output from function."); } static void myFunction(string label, params int[] args, bool showLabel) { if (showLabel) Console.WriteLine(label); foreach (int i in args) Console.WriteLine("{0}",i); } 2. Напишите приложение, которое использует два аргумента командной строки для присваивания значений строковой и целой переменным соответственно, а затем выводит эти значения. 3. Создайте делегат и используйте его вместо функции Console.ReadLine() в запросе ввода от пользователя. 4. Модифицируйте приведенную ниже структуру, включив в неё функцию, которая возвращает суммарную стоимость заказа: struct order // заказ // { public string itemName; // наименование // public int unitCount; // число единиц // public double unitCost; // стоимость одной единицы // } После недолгих мучений я сделал 3 упражнения, проверьте меня: 1. Первая фунцкия должна возвращать логическое значение, а она вообще ничего не возвращает, т.к. нету слова return. Во второй функции params int[] должно стоять после всех параметров. 2.
3.
|
Автор: massimo2 12.8.2011, 22:13 | ||
ну а вот и четвёртое:
Не захотел уже додумывать, и сделал по-простому. |