Informatyka MZT1 Wykład 3.

Slides:



Advertisements
Podobne prezentacje
Język C/C++ Funkcje.
Advertisements

Wprowadzenie do C++ Zajęcia 2.
PROGRAMOWANIE STRUKTURALNE
ALGORYTM Co to jest algorytm?
Opracowała: Elżbieta Fedko
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 1: Wprowadzenie do programowania.
P O D S T A W Y P R O G R A M O W A N I A
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Kurs Pascala – spis treści
Wykład 2 struktura programu elementy języka typy zmienne
Wstęp do programowania obiektowego
Projektowanie i programowanie obiektowe II - Wykład IV
Algorytmy i algorytmika Opracowanie: Teresa Szczygieł
Wstęp do interpretacji algorytmów
CO TO JEST ALGORYTM!.
Dr Anna Kwiatkowska Instytut Informatyki
Wprowadzenie do programowania w języku Turbo Pascal
Algorytmy Marek Pudełko
Algorytmy Marek Pudełko
Algorytmy i algorytmika Opracowanie: Maciej Karanowski
Budowa algorytmów Algorytm: skończony ciąg operacji wraz z ściśle sprecyzowanym porządkowaniem ich wykonywania, które po realizacji dają rozwiązanie dowolnego.
ALGORYTMY.
Programowanie w języku Fortran 95
Podstawy programowania
Metody przedstawiania algorytmów.
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Algorytmy.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Podstawy programowania. Język C i C++– podstawy Temat: 1
Prowadzący: Dr inż. Jerzy Szczygieł
ALGORYTMY.
Programowanie obiektowe – zastosowanie języka Java SE
Algorytmy.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Elżbieta Fiedziukiewicz
Wykład 6 Inżynieria programowania
Podstawy języka Instrukcje - wprowadzenie
Podstawy programowania
ZAPIS BLOKOWY ALGORYTMÓW
Algorytmy.
Algorytmika.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska.
Programowanie strukturalne i obiektowe C++
Zapis blokowy algorytmów
Algorytmy i struktury danych
Procesor, pamięć, przerwania, WE/WY, …
opracowała: Anna Mikuć
Algorytm to przepis prowadzący do osiągnięcia celu lub rozwiązania problemu, opisujący każdy krok. Algorytmika to dziedzina zajmująca się algorytmami (własnościami,
Wprowadzenie do programowania w Pascalu mgr inż. Agata Pacek.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Podstawy programowania
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Wstęp do interpretacji algorytmów
Temat: Schematy blokowe - ćwiczenia
Dokumentacja programu komputerowego i etapy tworzenia programów.
Wstęp do programowania Wykład 1
Liczby 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …(i tak dalej) nazywamy liczbami naturalnymi. Tak jak z liter tworzy się słowa, tak z cyfr tworzymy liczby. Dowolną.
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Sposoby zapisu algorytmu
Algorytm to przepis prowadzący do osiągnięcia celu lub rozwiązania problemu, opisujący każdy krok. Algorytmika to dziedzina zajmująca się algorytmami (własnościami,
Zrozumieć, przeanalizować i rozwiązać
Programowanie obiektowe – zastosowanie języka Java SE
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Informatyka MZT1 Wykład 3

ALGORYTMY Algorytm jest to sformalizowany ciąg logicznie powiązanych instrukcji (poleceń, rozkazów), których wykonanie pozwoli na przetworzenie informacji wejściowych (danych) w informacje wyjściowe (wyniki). Algorytm - rozwiązywanie "krok po kroku" dowolnego problemu.

Algorytm ma przeprowadzić system z pewnego stanu początkowego do pożądanego stanu końcowego. Badaniem algorytmów zajmuje się algorytmika.

Każdy algorytm komputerowy musi być wprowadzony do komputera w bardzo rygorystycznie zdefiniowanym języku - jednoznaczne instrukcje. Jeżeli dany algorytm da się wykonać na maszynie o dostępnej mocy obliczeniowej i pamięci oraz akceptowalnym czasie, to mówi się że jest algorytm obliczalny. Algorytm – przepis niezależny od implementacji (w jakim języku będzie zapisany) Program – zastosowanie algorytmu w języku zrozumiałym przez komputer

Czynności służące do rozwiązania zadania: analiza treści zadania wykaz danych wejściowych; wiadomych i niewiadomych oraz relacji między nimi sprawdzenie czy zadanie posiada jednoznaczne rozwiązanie wybór metody rozwiązania zadania opis czynności dla wybranej metody rozwiązania sporządzenie i przedstawienie wyników rozwiązania zadania

Sposoby zapisu algorytmów Język naturalny - opis słowny (pseudokod) - przedstawienie kolejnych czynności (akcji) na elementach (danych). Przykład:przepis kulinarny. Brak ścisłych reguł, w zamian czytelność Schemat blokowy – operacje na danych przedstawione graficznie w postaci elementarnych bloków.

ZASADY BUDOWY SCHEMATU BLOKOWEGO 1) Każda operacja jest umieszczona w bloku 2) Schemat ma tylko jeden blok "START" i przynajmniej jeden blok "STOP" 3) Bloki mają połączenia ukierunkowane 4) Z bloku wychodzi jedno połączenie; wyjątki - "STOP" (nie wychodzą żadne połączenia) - blok "warunkowy" ( wychodzą dwa połączenia opisane TAK i NIE) 5) W bloku "operacyjnym" odbywa się nadanie wartości (przypisanie) znak ":="

Reguły graficzne tworzenia schematów blokowych Start i stop START STOP Operacje wejścia i wyjścia wczytaj a,b,x pisz suma, wynik Instrukcja wykonawcza (proces) blok operacyjny Blok decyzyjny oblicz suma:=a+b TAK suma>0 Łącznik stronicowy NIE 1

Klasy problemów Metodyka algorytmy obliczeniowe ( - np. całkowanie numeryczne, obliczanie funkcji z sumy wyrazów ciągu, wyznaczanie liczb pierwszych, zamiana systemów liczbowych itp.) algorytmy sortujące algorytmy wyszukujące algorytmy kompresji Metodyka algorytm "krok po kroku" algorytmy rekurencyjne algorytmy genetyczne algorytmy sztucznej inteligencji

Dla utworzenia algorytmu konieczne są: • opis obiektów do przechowywania danych wejściowych, danych pośrednich i wyników • opis czynności jakie należy wykonać z obiektami, co realizujemy przy pomocy instrukcji, które opisują: sposób działania kolejność ich wykonywania ewentualne warunki jakie muszą być spełnione • opis wyników - zawiera sposób udostępnienia wyników rozwiązanego zadania

Przykład W algorytmach sortujących potrzebny jest mechanizm zamiany wartości umieszczonych w dwóch zmiennych, jeśli są w niewłaściwej kolejności Algorytm wymaga zmiennej pomocniczej (jak do zamiany zawartości dwóch szklanek potrzebna jest trzecia szklanka) Pseudokod: 1. Wczytaj dane do obiektów 1 i 2 2. Przepisz zawartość obiektu 1 do obiektu pomocniczego 3. Przepisz zawartość obiektu 2 do obiektu 1 4. Przepisz zawartość obiektu pomocniczego do obiektu 2 5. Wyprowadź wartości obiektów 1 i 2

obiekt pomocniczy 3 1 B A 2

schemat blokowy zamiany wartości w dwóch zmiennych wczytaj a,b schemat blokowy zamiany wartości w dwóch zmiennych pom:=a a:=b b:=pom drukuj a, b

Przykład 2 – z blokiem decyzyjnym i pętlą Ile razy trzeba podzielić na pół daną liczbę, aby uzyskać wartość mniejszą od  Pseudokod: Wczytaj liczbę i  Ustal wartość licznika równą 0 3. Podziel liczbę przez 2 4. Zwiększ licznik o 1 5. Sprawdź czy wynik jest mniejszy od , jeśli tak, to przejdź do punktu 6, jeśli nie to wróć do punktu 3 6. Wyprowadź wartość licznika

czy algorytm jest poprawny?? liczba:=liczba/2 wczytaj liczba,  licznik:=0 licznik:=licznik+1 drukuj licznik liczba<  TAK NIE schemat blokowy czy algorytm jest poprawny??

A może tak lepiej? licznik:=0 liczba:=liczba/2 licznik:=licznik+1 wczytaj liczba,  licznik:=0 liczba:=liczba/2 licznik:=licznik+1 NIE liczba<  TAK drukuj licznik

Widzimy, że potrzebna jakaś ocena poprawności A może jeszcze inaczej? Który z tych trzech algorytmów jest poprawny? wczytaj liczba,  licznik:=0 licznik:=licznik+1 liczba:=liczba/2 NIE liczba<  TAK Widzimy, że potrzebna jakaś ocena poprawności drukuj licznik

A więc, aby tworzyć efektywne algorytmy i móc je aplikować programowo, potrzebne są następujące elementy: obiekty programowe, możliwość ich odróżniania, klasyfikacja do typu, umieszczanie ich identyfikatorów (nazw) i wartości w pamięci operacje na obiektach! (operatory nadawania wartości, arytmetyczne, porównania) Mechanizm sterowania – co wykonać następnie po aktualnej operacji

Podstawy programowania Do 1954 roku – język maszynowy (Eniac, Mark I- USA) Kodowanie instrukcji procesora w postaci ciągu liczb dwójkowych (elementarny rozkaz i dane) -        pracochłonność (same liczby, długie algorytmy działań takich jak dodawanie i mnożenie) -        trudność śledzenia błędów

lata 50-te zastąpienie kodów operacji nazwami mnemotechnicznymi np. mnożenie MPY (multiply) język symboliczny - assembler ASSEMBLER – także program tłumaczący na kod maszynowy (wewnętrzny) DISSASSEMBLER – tłumaczenie odwrotne stosowany do dziś – np. oprogramowanie interfejsów pomiarowych, wprowadzanie danych z pomiarów i ich obróbka komputerowa

Cechy assemblera: -         zmniejszona ale nadal duża pracochłonność -         błędy – prawie każda kombinacja znaków mogła być wykonana -         ukierunkowanie na konkretny komputer (procesor) dla którego program był pisany wąski zbiór rozkazów, prymitywna architektura ówczesnych komputerów, brak rejestrów, brak operacji zmiennoprzecinkowych

języki tzw. wysokiego poziomu Etap przejściowy – tzw. systemy automatycznego programowania języki tzw. wysokiego poziomu kod maszynowy i assembler to niski poziom – bliższy procesorowi 1954 – FORTRAN a następnie inne języki

Podział języków programowania j.obiektowe

- skuteczność tłumaczenia Problemy: -         zrozumiałość -         jednoznaczność -         skuteczność tłumaczenia Języki wysokiego poziomu po etapie początkowym stały się maszynowo niezależne z powodu wielu wersji translatorów (programów kompilujących)

COBOL – dla przedsiębiorstw, język prawie naturalny W kolejnych latach - obfitość języków programowania BASIC, LOGO – prostota, interpretacja w odróżnieniu od kompilacji, tłumaczenie „na bieżąco” każdej instrukcji a nie programu w całości PASCAL, C, C+, C++ - języki strukturalne z elementami tzw. programowania obiektowego OOP (Object Oriented Programming) – języki zorientowane obiektowo (PROLOG, Visual Basic, Delphi, Java, C#) – o tym później

CO TO JEST JĘZYK PROGRAMOWANIA ? DANE – reprezentują świat rzeczywisty lub abstrakcyjny i opis jego obiektów OBIEKTY mają przypisany zbiór operacji – działań na tych obiektach Alfabet języka - skończony zbiór znaków. Słowo - skończony ciąg znaków alfabetu Język formalny- zbiór słów nad określonym alfabetem Język programowania – zbiór konwencji i umów umożliwiających komunikatywność (zrozumiałość) umów (dla kompilatora).

Błędy składniowe np. zapomnieć słowa kluczowego w instrukcji lub je przekręcić Błędy semantyczne np. zły typ danych, licznik pętli nie jest typu całkowitego j=0; k=1/j (dzielenie przez zero)

Program - algorytm zapisany w języku programowania OBIEKTY obiekt (nazwa, wartość) deklaracje, definicje - opisy obiektów instrukcje - czynności na obiektach Program - algorytm zapisany w języku programowania

Podprogram - wyodrębniona część programu (ze względu na czytelność lub wielokrotne użycie) posiadająca wyodrębnioną nazwę i sposób wymiany informacji z pozostałymi jego częściami

Deklaracja podprogramu - opis podprogramu Instrukcja wywołania podprogramu – wykonanie, zastosowanie podprogramu wewnątrz programu głównego lub innego podprogramu Kod źródłowy - tekst programu w języku programowania (plik tekstowy pas) Kompilacja - tłumaczenie kodu źródłowego na wykonywaną postać binarną, ładowalną (plik exe) – odrębny proces (czyli w całości) Interpretacja – tłumaczenie kolejnych instrukcji w trakcie procesu wykonywania (czyli po kolei)

Przetwarzanie programu użytkowego Komunikaty o błędach Biblioteka podprogramów wyniki EDYCJA postać źródłowa programu Kompilacja (konsolidacja) postać ładowalna Wykonanie parametry PROGRAMISTA dane

Sposoby pisania programu: Program źródłowy utworzony dowolnym edytorem tekstu – kompilacja – konsolidacja (linkowanie – łączenie z podprogramami bibliotecznymi -modułami)- wykonanie lub Korzystanie ze zintegrowanych pakietów programistycznych (wewnętrzne narzędzia edycji, kompilacji i konsolidacji, weryfikacji błędów itp.)

nieznany identyfikator zmiennej (nazwa) zła składnia instrukcji Najczęstsze błędy kompilacji: nieznany identyfikator zmiennej (nazwa) zła składnia instrukcji niezgodność typów danych błąd w wyrażeniu obliczeniowym

Błędy wykonania polegają zazwyczaj na: niewłaściwym użyciu poprawnych instrukcji przekroczeniu zakresów zmiennych (wymagana kontrola) braku możliwości wykonania operacji systemowych (np. nie istnieje folder do zapisu pliku) niewłaściwej operacji matematycznej np. dzielenie przez 0, logarytm z liczby ujemnej itp. Błędy kompilacji : syntaktyczne (składniowe) Błędy wykonania : semantyczne