Вт, 23.10.2018, 05:56
Форум інформатиків України
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Вітання на форумі
Незнайомець
Вітаємо на форумі,
Незнайомцю!

 
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво

Модератор форуму: Bandalak, Ktara, НІКОЛЯ, volevikt  
Форум інформатиків » РОЗДІЛ VIІІ: ОБМІН ДОСВІДОМ (УРОКИ, ФАКУЛЬТАТИВИ, ПОЗАКЛАСНА РОБОТА) » 8.6 Факультатив з програмування » Поговоримо про сучасні мови програмування. (Яку мову програмування Ви вивчаєте в школі?)
Поговоримо про сучасні мови програмування.
Ковшун Дата: Чт, 04.10.2007, 16:23 | Повідомлення № 1
Досвідчений учасник
Повідомлень: 1462
Нагороди: 1
Рейтинг: 25
Шановні колеги!!!
Існує багато мов програмування. Впродовж багатьох років у школах домінувала мова програмування Pascal.
Проте, життя не стоїть на місці. З’явились нові, прогресивні мови програмування.
Дана тема створена для обговорення проблем, пов’язаних з вивченням мов програмування в школі.
Чи це буде Borland Delphi, чи С++, чи Visual Basic.

Шановні форумчани!!!!!
Повідомлення, які не відповідають темі або несуть некорисний зміст будуть видалятись без попередження!!!


Відредаговано: Ковшун - Чт, 04.10.2007, 22:11
zverok Дата: Пн, 11.02.2008, 17:28 | Повідомлення № 61
Креативний вчитель
Повідомлень: 153
Нагороди: 1
Рейтинг: 8
ОК, я Вашу точку зрения понял. Не хотите конструктива -- не будет конструктива. Преподавайте С++ "до указателей".
Spirit Дата: Вт, 12.02.2008, 00:30 | Повідомлення № 62
Сис.адмін
Повідомлень: 406
Нагороди: 1
Рейтинг: 25
Господа!
Как без конструктива! Наоборот, давайте больше конструкива!

Я думаю, что каждый учитель должен сам выбирать какому языку лучше обучать. Так как именно учитель хорошо знает своих детей (их уровень обучаемости) и может реально оценить СВОИ возможности в учительстве.

Главное научить детей правильно мыслить, а язык выучить не проблема, я знаю 9 языков программиования, надо будет выучу еще smile

zverok Дата: Вт, 12.02.2008, 00:58 | Повідомлення № 63
Креативний вчитель
Повідомлень: 153
Нагороди: 1
Рейтинг: 8
Quote (Spirit)
Я думаю, что каждый учитель должен сам выбирать какому языку лучше обучать. Так как именно учитель хорошо знает своих детей (их уровень обучаемости) и может реально оценить СВОИ возможности в учительстве.

Это справедливо.
Но замечу, что дискуссия выглядела так:
-- С++ не стоит, в нем сложные концепции.
-- А как же олимпиады.
-- Олимпиады -- не аргумент, чтобы изучать действительно сложный язык.
-- Мне он нравится. А изучить его несложно, если оставить в стороне фундаментальные концепции.
(приношу извинения, если неверно изложил т.з. оппонента)

В этом контексте мне остается только развести руками (Хотел было поинтересоваться, как dpi показывает строки, или массивы, без указателей -- но на фразе "Вы идите в школу поработайте хотябы лет пять" -- понял что это бессмысленно.)

Spirit Дата: Чт, 14.02.2008, 01:00 | Повідомлення № 64
Сис.адмін
Повідомлень: 406
Нагороди: 1
Рейтинг: 25
Мне сложно оценить ход дискуссии, думаю это лучше получиться у господина dpi.

С++ не такой уж сложный. Может мне так кажеться, но я его учил в 9 классе в Малой академии smile

Строки и массивы я могу прекрассно рассказать без указателей! Легко smile
Но детям нужно рассказывать что такое указатель, так как это нужно понимать и лучше понять это в школе, чем в ВУЗе, где всем безразлично понял ты или нет.

zverok Дата: Чт, 14.02.2008, 12:09 | Повідомлення № 65
Креативний вчитель
Повідомлень: 153
Нагороди: 1
Рейтинг: 8
Quote (Spirit)
Строки и массивы я могу прекрассно рассказать без указателей!

Любопытно. А можно пример, тезисно?

Quote (Spirit)
Но детям нужно рассказывать что такое указатель, так как это нужно понимать и лучше понять это в школе

Я не совсем уверен, что каждый школьник должен четко понимать, что такое "указатель". Это достаточно абстрактная концепция.

В то же время, мой опыт (не школьно-учительский, который, увы, невелик, на что мне и пеняют -- но обучения в программистском вузе, участия в исследованиях и дискуссиях по теме и т.п.) показывает, что эта концепция действительно сложна для понимания (если не ошибаюсь, есть статистика по знаменитому IT-вузу MIT, там на первом курсе отсеивается более 50% студентов, прослушивающих курсы по низкоуровневому программированию, именно на понимании указателей).

Spirit Дата: Чт, 14.02.2008, 14:56 | Повідомлення № 66
Сис.адмін
Повідомлень: 406
Нагороди: 1
Рейтинг: 25
Да, со строкой в чистом С++ не получиться, я просто пишу в Билдере и поэтому привык что там есть класс AnsiString.
А с массивами, mas[1][1] = 25; и никаких указателей!
И объявлять его можно статическим, т.е. с неизменяемым кол-вом строк и столбцов.
Sasyk Дата: Чт, 14.02.2008, 18:25 | Повідомлення № 67
знаток тестуючих систем
Повідомлень: 300
Нагороди: 0
Рейтинг: 9
Quote (dpi)
Простота обучения зависит от того кто обучает. Отсюда простой вывод.

Не завжди... думаю тут зі мною всі погодяться... Звичайно, якщо вчитель !!!, то й результат буде !!! angry
Spirit Дата: Чт, 14.02.2008, 22:02 | Повідомлення № 68
Сис.адмін
Повідомлень: 406
Нагороди: 1
Рейтинг: 25
Quote (Sasyk)
думаю тут зі мною всі погодяться... Звичайно, якщо вчитель !!!, то й результат буде !!!

Однозначно! smile

Добавлено (14.02.2008, 21:02)
---------------------------------------------
И, думаю, на курсах повышения квалификации должны рассказывать про новые технологии, а не так как обычно... ерунду какую-то нести... Может у кого-то по другому, но у нас, насколько я знаю так.

dpi Дата: Пт, 15.02.2008, 14:17 | Повідомлення № 69
Досвідчений вчитель
Повідомлень: 1438
Нагороди: 1
Рейтинг: 39
Работа со строками (Dev-C++, Bilder 6):
#include <fstream>
#include <iostream>
#define n 100
using namespace std;
int main ()
{
fstream fin;
fin.open("ssss.dat", ios::in);
if (!fin)
{
cout<<"No file !!!\n";
system("PAUSE");
return -1;
}
int a;
string s("Helo forum!!!");
s="eto toge stroka";
//Смешанный вод чисел и строк из файла ssss.dat
//Просто fin>>s1 не читает из за пробела
char s1[n];
fin>>a; fin.get(); //убираем пробел или Enter
cout<<a<<"\n";
fin.getline(s1,n);
fin.close();
cout<<s1<<"\n";
cout<<"\n";
system("PAUSE");
}
+ всевозможные операции работы со строками
Не забудьте о размере строки (100) и "ssss.dat" в виде:
------------------
45
eto strochka
------------------
Хотите больше, есть дополнительные библилтеки
О массиве писать не хочется, скучновато...
zverok Дата: Пт, 15.02.2008, 15:40 | Повідомлення № 70
Креативний вчитель
Повідомлень: 153
Нагороди: 1
Рейтинг: 8
Угу. А потом прекрасное дитя делает

Code

string s = "mama" + "papa";

И учитель имеет бледный вид.

Я не спорю, string и vector из стандартной библиотеки могут помочь "скрыть сложность". Но, увы, не понимая фундаментальных вещей (указателей и ссылок), дальше чем "ввести строку с экрана, вывести строку на экран" не уедешь. Заметьте, что и в Вашем демонстрационном примере понадобился иероглиф "char s1[n]", про который придется объяснять, что это такое, и почему именно такое.

А касаясь массивов, про которые "скучновато", я вот не знаю, что хуже для объяснения:
это: int *massiv = new int[n]; ?
или это: vector<int> massiv(n); ?
или "массивы можно делать только заранее известного размера"? (Не касаясь даже двумерных массивов, которые при хоть сколь-нибудь сложных алгоритмических задачах неплохо бы затронуть).

badm Дата: Пт, 15.02.2008, 16:30 | Повідомлення № 71
Знаток програмування
Повідомлень: 185
Нагороди: 0
Рейтинг: 3
Не думаю що на таких прикладах вказівники пояснювати недоречно. Можна взагалі на С++ писати взагалі з логічної точки зору неприпустимі речі (при необхідності), але питання стоїть в тому, що мову можна використовувати не поглиблюючись у її закаулки і недоресності і все чудово буде працювати. До речі С++ має якщо не помиляюсь 5 моделей для програмування і кожен може вибрати згідно своїх можливостей.
На рахунок двовимірних масивів їх природа логічна це набір одновимірних.


Відредаговано: badm - Пт, 15.02.2008, 16:30
zverok Дата: Пт, 15.02.2008, 17:30 | Повідомлення № 72
Креативний вчитель
Повідомлень: 153
Нагороди: 1
Рейтинг: 8
Quote (badm)
...мову можна використовувати не поглиблюючись у її закаулки і недоресності і все чудово буде працювати.

Изначально шла речь о том, что на указателях держится вообще почти все в С++, их МОЖНО не использовать, но без базового понимания концепции языком пользоваться тяжело (т.е. это НЕ "мелкий недостаток языка").
Еще раз уточню -- С++ я очень люблю, написал на нем сотни тысяч строк. Т.е. я не о том, что это "плохой язык", а лишь о том, что это "не лучший выбор учебного языка". Жестокий он.

Quote (badm)
На рахунок двовимірних масивів їх природа логічна це набір одновимірних.

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

Code
vector<int> test(10);

еще легко объяснить как "массив целых размером 10", а вот двумерный массив 10х10 уже потребует многословного

Code

vector<vector<int> > test(10);
for(...){test[i].resize(10)}

В общем, "все от руки" :) Я бы все же для обучения предпочел язык, где можно сделать это лаконичнее.

(Альтернативный вариант -- специальный подбор "библиотек для школьников", в принципе класс двумерного массива не бог весть что, а показывать vector2<int> test(10, 10) -- куда нагляднее. Но от исходной темы -- необходимости хоть поверхностного объяснения указателей -- далеко все равно не уйти, увы.)

dpi Дата: Сб, 16.02.2008, 10:30 | Повідомлення № 73
Досвідчений вчитель
Повідомлень: 1438
Нагороди: 1
Рейтинг: 39
Quote (zverok)
или "массивы можно делать только заранее известного размера"?

В школьном курсе и для олимпиадного факультатива - да.

Quote (zverok)
string s = "mama" + "papa";
И учитель имеет бледный вид.

string s3;
string s2(" tak i ");
s3="Ne"+s2+"ploho";

badm Дата: Пн, 18.02.2008, 12:53 | Повідомлення № 74
Знаток програмування
Повідомлень: 185
Нагороди: 0
Рейтинг: 3
Вся бібілотека Stl та і основні концепції С++ базуються на посиланнях string, vector i тд. працюють динамічними змінними, але це сховано у бібліотечних файлах, де використовуються шаблони.
З двовимірними масивами через vector було самому цікаво пробував vector<vector<int> > test(10); test(10) можна і test(10,10), але від цього задання масиву не зміниться vector<vector<int> > test; а далі як обробляти?
for(...){test[i].resize(10)} але так і не дійшов кінця, а от vector<int > test[10]; Тільки обмеження по стрічках до 10 або організувати структуру, клас з 2 vector, також можна через посилання.
Для паскаля більш логічно a:array[1..10]of array[1..10] of integer; 10x10 двухмерный масив.
Приклад для введення 10Х10.
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int>s[10];
for(int i=0;i < 10;i++)
for(int j=0;j < 10;j++)
s[i].push_back(j);
for(int i=0;i < 10;i++)
{
for(int j=0;j < 10;j++)
cout<<s[i][j]<<" ";
cout<<endl;}
}


Відредаговано: badm - Пн, 18.02.2008, 12:58
Varkan Дата: Пн, 18.02.2008, 14:13 | Повідомлення № 75
Викладач ВУЗу
Повідомлень: 425
Нагороди: 0
Рейтинг: 6
судячи по всьому з с, с++, бейсиком та паскалем розібралися.
невже на цьому всі сучасні мови і закінчилися?
давайте поговоримо про таку чудову мову як пролог, яка дозволяє створювати експертні системи та штучний інтелект.
взагалі хтось із вас програмував коли небуть на пролозі?
Форум інформатиків » РОЗДІЛ VIІІ: ОБМІН ДОСВІДОМ (УРОКИ, ФАКУЛЬТАТИВИ, ПОЗАКЛАСНА РОБОТА) » 8.6 Факультатив з програмування » Поговоримо про сучасні мови програмування. (Яку мову програмування Ви вивчаєте в школі?)
Пошук:


© Форум інформатиків України, 2007-2018.