- Задачи на циклы while, for в JavaScript
- Учебник JavaScript
- Практика
- Работа с DOM
- Практика
- Некоторые продвинутые вещи
- Рекомендованное ES6
- Регулярки
- Разное
- Работа с канвасом
- Практика
- Контекст
- Drag-and-Drop
- Практика по ООП
- Практика
- Promise ES6
- Библиотека jQuery
- Примеры решения задач
- Задача
- Задача
- Задача . Цикл for-in
- Задачи для решения
- Циклы while и for
- Работа с for для массивов
- Работа с for-in
- Задачи
- Алгоритм нахождения простых чисел
- Оптимизация алгоритма нахождения простых чисел
- Вывести в консоль сумму введенных пользователем чисел с помощью Цикла for. C#
- 1 ответ 1
- Присваивание
- Вывод в консоль
- Коллекции
- Циклы
- Математика
- Python Урок 2. Работа с циклами
- Цикл WHILE
- Операторы break и continue
- Цикл FOR
- Случайное число
- Цикл for in при работе с кортежами (тип данных)
Задачи на циклы while, for в JavaScript
Учебник JavaScript
Практика
Работа с DOM
Практика
Некоторые продвинутые вещи
Рекомендованное ES6
Некоторые видео могут забегать вперед, тк к этому месту учебника мы прошли еще не весь ES6. Просто пропускайте такие видео, посмотрите потом.
Регулярки
Разное
Работа с канвасом
Практика
Контекст
Drag-and-Drop
- Урок №
Введение, задач нет - Урок №
Основы
работы с ООП - Урок №
Наследование
классов в JavaScript
Продвинутая работа
с классами на JavaScript —> - Урок №
Применение
ООП при работе с DOM - Урок №
Практика
по ООП в JavaScript - Тут скоро будут еще уроки
по функциональному и прототипному
стилю ООП.
Практика по ООП
Ваша задача: посмотрите, попробуйте повторить.
Практика
Promise ES6
Библиотека jQuery
Тк. jQuery устаревает, объявляю эти уроки не обязательными и выношу в конец учебника (так по уровню уроки середины учебника, если что). В перспективе переедет в отдельный учебник по jq.
Перед решением задач изучите теорию к данному уроку.
Примеры решения задач
Задача
Задача. Выведите столбец чисел от 1 до 50.
Решение: воспользуемся циклом while (отделим числа тегом br друг от друга, чтобы получить столбец, а не строку):
Можно также воспользоваться и циклом for:
Задача
Задача. Дан массив с элементами [1, 2, 3, 4, 5]. С помощью цикла for выведите все эти элементы на экран.
Решение: будем повторять цикл for от 0 до номера последнего элемента массива. Этот номер на единицу меньше количества элементов в массиве, которое можно найти с помощью свойства length таким образом: arr.length.
Чтобы цикл прокрутился на единицу меньше длины массива, в условие окончания мы поставим
Задача. Дан массив с элементами [2, 3, 4, 5]. С помощью цикла for найдите произведение элементов этого массива.
Решение: для таких задач существует стандартное решение, которое заключается в том, что циклом for перебираются элементы массива и их произведение последовательно записывается в переменную result (в ней постепенно накапливается искомое произведение):
Как это работает: изначально переменная result имеет значение 1, затем при первом проходе цикла в нее записывается ее текущее содержимое (это 1), умноженное на первый элемент массива (это 2). Получится, что в result запишется 1*2 и теперь там будет лежать число 2.
При следующем проходе цикла в result запишется текущее значение result, умноженное на второй элемент массива (то есть 2*3=6). И так далее пока массив не закончится.
Можно переписать строчку result = result * arr[i] через *= для краткости:
Задача . Цикл for-in
Задача. Дан объект obj с ключами ‘Минск’, ‘Москва’, ‘Киев’ с элементами ‘Беларусь’, ‘Россия’, ‘Украина’. С помощью цикла for-in выведите на экран строки такого формата: ‘Минск — это Беларусь.’.
Решение: задача не представляет сложности если уметь работать с циклом for-in. Давайте решать задачу поэтапно. Для начала выведем на экран все ключи объекта (это названия городов):
А теперь выведем все значения объекта (это страны):
Ну, а теперь сформируем строки нужного нам формата:
Задачи для решения
Циклы while и for
Выведите столбец чисел от 1 до 100.
Выведите столбец чисел от 11 до 33.
Выведите столбец четных чисел в промежутке от 0 до 100.
С помощью цикла найдите сумму чисел от 1 до 100.
Работа с for для массивов
Дан массив с элементами [1, 2, 3, 4, 5]. С помощью цикла for выведите все эти элементы на экран.
Дан массив с элементами [1, 2, 3, 4, 5]. С помощью цикла for найдите сумму элементов этого массива. Запишите ее в переменную result.
Работа с for-in
Дан объект obj. С помощью цикла for-in выведите на экран ключи и элементы этого объекта.
Дан объект obj с ключами Коля, Вася, Петя с элементами ‘200’, ‘300’, ‘400’. С помощью цикла for-in выведите на экран строки такого формата: ‘Коля — зарплата 200 долларов.’.
Задачи
Дан массив с элементами 2, 5, 9, 15, 0, 4. С помощью цикла for и оператора if выведите на экран столбец тех элементов массива, которые больше 3-х, но меньше 10.
Дан массив с числами. Числа могут быть положительными и отрицательными. Найдите сумму положительных элементов массива.
Дан массив с элементами 1, 2, 5, 9, 4, 13, 4, 10. С помощью цикла for и оператора if проверьте есть ли в массиве элемент со значением, равным 4. Если есть — выведите на экран ‘Есть!’ и выйдите из цикла. Если нет — ничего делать не надо.
Дан массив числами, например: [10, 20, 30, 50, 235, 3000]. Выведите на экран только те числа из массива, которые начинаются на цифру 1, 2 или 5.
Дан массив с элементами 1, 2, 3, 4, 5, 6, 7, 8, 9. С помощью цикла for создайте строку ‘-1-2-3-4-5-6-7-8-9-‘.
Составьте массив дней недели. С помощью цикла for выведите все дни недели, а выходные дни выведите жирным.
Составьте массив дней недели. С помощью цикла for выведите все дни недели, а текущий день выведите курсивом. Текущий день должен храниться в переменной day.
Дано число n=1000. Делите его на 2 столько раз, пока результат деления не станет меньше 50. Какое число получится? Посчитайте количество итераций, необходимых для этого (итерация — это проход цикла), и запишите его в переменную num.
Источник
Алгоритм нахождения простых чисел
Оптимизация алгоритма нахождения простых чисел
2 3 5 7 11 13 17 19 23 29 31… $250.000…
Дело было давно, в университете, когда мы начали изучать язык программирования Pascal и домашним заданием стало создание алгоритма нахождения простых чисел.
Алгоритм был придуман и тутже реализован на изучаемом языке. Программа запрашивала у пользователя число N и искала все простые числа до N включительно. После первого успешного теста сразу же возникло непреодолимое желание ввести N = «много». Программа работала, но не так быстро как хотелось бы. Естественно, дело было в многочисленных проверках (порядка N*N/2), поэтому пришлось избавиться от лишних. В итоге получилось 5 похожих алгоритмов каждый из которых работал быстре предыдущего. Недавно захотелось их вспомнить и реализовать, но на этот раз на Python.
Итак, поехали. Первый алгоритм, ударивший в студенческую голову, продемонстрирован в Листинге 1.
Очень быстро понимаешь, что в подсчете делителей каждого числа нет никакой надобности и поэтому переменную k можно освободить от своих обязанностей. Действительно, если хотябы один делитель имеется, то число уже не простое. Смотрим Листинг 2.
Конструкция break позволяет нам завершить выполнение внутреннего цикла и перейти к следующей итерации внешнего.
Далее возникает вопрос: «а зачем делить на 4, если на 2 число не делится?». Приходим к выводу, что искать делители нужно только среди простых чисел не превышающих делимое. Наш алгоритм превращается в… см. Листинг 3.
А потом вспоминаем теорию чисел и понимаем, что переберать надо только числа, не превосходящие корня из искомого. К примеру, если число M имеет делитель pi, то имеется делитель qi, такой, что pi * qi = M. То есть, чтобы найти пару, достаточно найти меньшее. Среди всех пар, предполагаемая пара с максимальным наименьшим — это пара с равными pi и qi, то есть pi * pi = M => pi = sqrt(M). Смотрим Листинг 4.
Код из Листинга 4 при N=10000 выполняется примерно в 1000 раз быстрее, чем самый первый вариант. Есть еще один «ускоритель», проверять только те числа, которые заканчиваются на 1, 3, 7 или 9 (так как остальные очевидно делятся на 2 или 5). Наблюдаем Листинг 5.
В следствии незначительного изменения Листинга 5 получаем небольшую прибавку в скорости:
Итого: Программа из последнего листинга выполняется, примерно, в 1300 раз быстрее первоначального варианта.
Я не ставил перед собой задачи написать программу максимально быстро решающую данную задачу, это скорее демонстрация начинающим программистам того, что правильно составленный алгоритм играет далеко не последнюю роль в оптимизации Ваших программ.
P.S.
Благодаря замечаниям получаем Листинг 7:
при N=10000, поучаем время:
time 1 = 26.24
time 2 = 3.113
time 3 = 0.413
time 4 = 0.096
time 5 = 0.087
time 6 = 0.083
time 7 = 0.053
Результаты при n = 1 000 000:
time 7 = 7.088
time 8 = 1.143
Источник
Вывести в консоль сумму введенных пользователем чисел с помощью Цикла for. C#
Нужно заполнить коллекцию из 10 целых чисел с клавиатуры (заполнить данными от пользователя) и посчитать сумму всех введенных пользователем чисел.
Сделал вот такой код, но это не сумма всех введенных чисел, а сложение переменной на саму себе с шагом +1. Помогите, пожалуйста исправить мой код 😗
1 ответ 1
Давайте разберу всю задачу с самого начала.
Присваивание
Вот смотрите, присваивание в шарпе работает просто
Чтобы оно сработало, переменная должна быть ранее объявлена. Но переменную можно объявить так же вместе с присваиванием, для этого перед ее именем надо написать ее тип. Нельзя дважды объявить одну и ту же переменную в текущем блоке кода.
Вывод в консоль
Как что-то написать в консоль, вы уже знаете. Но строки для вывода в консоль можно дополнять переменными, для этого есть несколько способов.
Вывод в консоль будет у всех трех способов одинаковый. Что именно использовать — вам решать. Я предпочитаю интерполяцию. Конечно со строками много всякого можно делать, но для вашей задачи этих знаний хватит.
Коллекции
Для начала, вам стоит познакомиться двумя из них: массивом и списком.
Как оно объявляется:
Первое, что бросается здесь в глаза — это то что у массива при создании его экземпляра ( new создает экземпляр объекта) количество элементов массива известно заранее, а у списка их можно добавлять по ходу дела.
Здесь важно условие вашей задачи «коллекцию из 10 целых чисел». Количество известно заранее? Да, значит используем массив.
ВАЖНО: нумерация элементов, то есть их порядковые номера в массиве начинаются с нуля 0 .
Циклы
Можно было бы написать 10 строк кода и ввести 10 значений, но что если их 2000 или еще больше. Хотя что это я — вы уже знакомы с циклом for . Берем всё, что я написал выше, собираем вместе, получаем следующий блок кода.
Вот и готова первая часть задачи. Имеем массив из 10 элементов, заполненный пользователем.
Кстати, обратите внимание, у вас в коде Convert.ToInt32(Console.ReadLine()); вы никуда не присваиваете число, считанное с клавиатуры.
Математика
Чтобы посчитать сумму элементов, нужно ее где-то хранить. Окей, объявим еще одну переменную.
Чтобы что-то прибавить к переменной, то есть не просто присвоить, а учитывая текущее ее значение — прибавить к ней, можно воспользоваться такой конструкцией:
Или есть более короткая запись того же самого:
Теперь точно так же, как считывалось оно с клавиатуры, только заменим тело цикла на суммирование.
Ну и выведем консоль
Готово. Думаю, вам не составит труда теперь собрать это воедино и заставить работать.
Источник
Python Урок 2. Работа с циклами
Цикл WHILE
Цикл while — цикл с предусловием. Пример использования:
i = 5 while i Комментарии в Python
Однострочный комментарий начинается с # .
Блочный комментарий можно использовать так (строго говоря, блочного комментария нет в Питоне):
#Однострочные Питон комментарии # Это # блочный или многострочный # комментарий
»’ тоже блочный комментарий »’
Операторы break и continue
Оператор break — выход из цикла
Оператор continue — выход из текущей итерации цикла
a=0 while a!=10: a=a+1 if a==5: continue print (a) if a==7: break print («всё!»)
import random number = random.randint(0, 100) while True: answer = input(‘Угадай число: ‘) if answer == «» or answer == «exit»: print(«Выход из программы») break if not answer.isdigit(): print(«Введи правильное число») continue answer = int(answer) if answer == number: print(‘Верно!’) break elif answer > number: print(‘Загаданное число больше’) else: print(‘Загаданное число меньше’)
Задание Python 2_1: Последовательно вводятся ненулевые числа. Определить сумму положительных и сумму отрицательных чисел. Закончить ввод чисел при вводе 0. Для перевода из строки в целое число, использовать функцию int().
Пример вывода:
Пример вывода:
Цикл FOR
В Python цикл for имеет такой синтаксис:
Пример:
for i in range(3): print(i) # 0 # 1 # 2
Пример с двумя параметрами:
for i in range(5, 8): print(i) # 5 # 6 # 7
for x in range(1,11): print ( 2**x ) # 2 4 8 16 . 1024
Шаг счетчика цикла можно менять:
for x in range(1,11,2): print ( 2**x )
for i in range(10, 7, -1): print(i) # 10 # 9 # 8
Еще пример работы:
for i in ‘hello world’: if i == ‘o’: continue print(i, end=») # hell wrld
Пример использования break:
for i in ‘hello world’: if i == ‘l’: break print(i, end=») # he
a=0 n=10 for i in range(1,n+1,2): a=a+1 if a==5: continue print (a) if a==7: break print («всё!»)
Пример вывода:
Случайное число
В Python случайное число задается с помощью двух функций:
- random() – случайное вещественное из полуинтервала [0,1) ;
- randint(a,b) – случайное целое из отрезка [a,b].
Но для использования функция необходимо предварительно подключить библиотеку:
# подключение библиотеки: from random import randint # получение целого случайного числа в диапазоне от 1 до 10 x = randint(1,11) # получение вещественного случайного числа в полуинтервале от 5 до 11 from random import random x = 6*random() + 5
Цикл for in при работе с кортежами (тип данных)
i = 1 for color in ‘красный’, ‘оранжевый’, ‘желтый’, ‘зеленый’, ‘голубой’, ‘синий’, ‘фиолетовый’: print(i,’-й цвет радуги — это ‘, color) i += 1
Другой вариант работы со счетчиком цикла:
for i in 1,2,3,’one’,’two’,’three’: print(i)
name = «Ivan» for letter in name: print(letter) # I # v # a # n
Источник