Міністерство освіти і науки України Коледж інженерії та управління Національного авіаційного університету Практична робота №11 з дисципліни «Алгоритми та структури даних» студента групи 405– ІПЗ Дмитренка Іллі Сергійовича Перевірив викладач: Роман Юрійович Волик м. Київ 2023 рік Хід роботи Опишіть принцип роботи словнику в обраній вами мові програмування. Словник Typescript - це тип даних, який дозволяє зберігати значення ключа, пов'язаного з певним типом даних. Зазвичай словник складається з пар "ключ-значення", де ключ - це унікальне ім'я, а значення - це тип даних, пов'язаний з цим ключем. У Typescript словники можуть бути визначені за допомогою типу "Record". Наприклад, наступний код створить словник з ключем типу string і значенням типу number: let dictionary: Record Зробіть CRUD операції зі словником. Рисунок 1 – Лістинг коду Рисунок 2 – Результат виконання Створити словник, де ключами будуть дні тижня, а значеннями – список зустрічей, запланованих на цей день. Дозволити користувачеві додавати, редагувати та видаляти зустрічі, а також переглядати всі заплановані зустрічі на певний день. Рисунок 3 – Результат виконання Лістинг коду: // 2 let week: Record "Monday": ["Прибрати кімнату","Приготувати обід"], "Tuesday": ["Прочитати книгу", "Подивитися фільм"], "Wednesday": ["Написати листа другові", "Посадити квіти"], "Thursday": ["Зробити зарядку", "Поспілкуватися з бабусею"], "Friday": ["Піти на прогулянку"], "Saturday": ["Почати вчитися нову мову"], "Sunday": [], }; class MeetingScheduler{ private schedule: Record constructor(week) { this.schedule = week; } addMeeting(dayOfWeek: string, meeting: string):void{ if (!this.schedule[dayOfWeek]) { this.schedule[dayOfWeek] = []; } this.schedule[dayOfWeek].push(meeting); } editMeeting(dayOfWeek: string, index: number, updatedMeeting: string):void{ if (this.schedule[dayOfWeek]){ this.schedule[dayOfWeek][index] = updatedMeeting; } } deleteMeeting(dayOfWeek:string, index: number):void{ if (this.schedule[dayOfWeek]) { this.schedule[dayOfWeek].splice(index, 1); } } viewMeetings(dayOfWeek:string){ return this.schedule[dayOfWeek] || []; } } // Приклад використання const scheduler = new MeetingScheduler(week); scheduler.addMeeting('Monday', 'Weekly team status meeting'); scheduler.addMeeting('Monday', 'Discuss project updates with client'); scheduler.editMeeting('Monday', 0, 'Editing info'); const mondayMeetings = scheduler.viewMeetings('Monday'); console.log(`Monday: `); console.log(mondayMeetings); scheduler.deleteMeeting('Monday', 1); const mondayAfterDeleting = scheduler.viewMeetings('Monday'); console.log(`Monday after deleting: `); console.log(mondayAfterDeleting); Необхідно створити менеджер завдань для зберігання інформації про завдання, які має виконувати менеджер. Кожне завдання буде мати унікальний ідентифікатор (id), назву, опис, статус виконання та дату закінчення. Рисунок 4 – Результат виконання Лістинг коду: type TaskStatus = "Виконано" | "Не виконано" | "В процесі"; type Task = { id: number, title: string, description: string, status: TaskStatus, dateOfEnd: Date } class TaskManager { private manager: Task[] = []; addTask(title: string, description: string, dateOfEnd: Date):void{ const id: number = this.manager.length + 1; const task: Task = {id, title, description, status: "Не виконано", dateOfEnd}; this.manager.push(task); } getTaskById(id):Task{ return this.manager.find((task) => task.id === id); } editTask(id, title: string, description: string, status: TaskStatus, dateOfEnd: Date):void{ const task: Task = this.getTaskById(id); if(task){ task.title = title; task.description = description; task.status = status; task.dateOfEnd = dateOfEnd; } } deleteTask(id: number):void{ if(this.getTaskById(id)){ this.manager = this.manager.filter((value) => value.id != id); } } viewTask(id:number){ const task: Task = this.getTaskById(id); if(task) { console.log(`ID: ${task.id}`); console.log(`Title: ${task.title}`); console.log(`Description: ${task.description}`); console.log(`Status: ${task.status}`); console.log(`Date of end: ${task.dateOfEnd}`); } } } // Приклад використання const taskManager = new TaskManager(); taskManager.addTask('Перегляд і підготовка презентації проекту', 'Необхідно переглянути та оновити презентацію проекту перед зустріччю з клієнтом.', new Date('2023-04-10')); taskManager.addTask('Організація внутрішньої конференції', 'Підготувати та організувати внутрішню конференцію для співробітників компанії.', new Date('2023-05-01')); taskManager.addTask('Розробка нового функціоналу для додатку', 'Розробити та випустити новий функціонал для мобільного додатку.', new Date('2023-04-30')); taskManager.addTask('Підготовка пропозиції проекту для клієнта', 'Підготувати детальну пропозицію для нового проекту, включаючи обсяг робіт та вартість проекту.', new Date('2023-04-15')); taskManager.addTask('Організація командного засідання', 'Організувати та провести засідання з командою для обговорення поточних проектів та планів на майбутнє.', new Date('2023-04-20')); console.log(`Задача під індексом 1: `); taskManager.viewTask(1); taskManager.editTask(1, 'Підготовка звіту проекту', 'Підготувати та надіслати звіт проекту клієнту з описом виконаних робіт та результатів.', 'В процесі', new Date('2023-05-07')); console.log(`Задача під індексом 1(змінена): `); taskManager.viewTask(1); taskManager.deleteTask(1); console.log(`Задача під індексом 1(видалена): `); taskManager.viewTask(1); |