Podstawy programowania



Podobne dokumenty
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Krótka wycieczka do wnętrza komputera

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Historia modeli programowania

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

Języki i metodyka programowania

Programowanie w języku C++ Grażyna Koba

Programowanie komputerów

Technologie informacyjne - wykład 12 -

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

Podstawy programowania wykład

Translacja wprowadzenie

Podstawy Informatyki Języki programowania c.d.

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Programowanie w C. dr inż. Stanisław Wszelak

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Systemy ekspertowe Część siódma Realizacja dziedzinowego systemu ekspertowego Roman Simiński

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Metody Kompilacji Wykład 1 Wstęp

Systemy ekspertowe Część siódma Realizacja dziedzinowego systemu ekspertowego Roman Simiński

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Wprowadzenie do programowania

Język programowania PASCAL

Podstawy programowania w języku C++

Podstawy programowania. Wprowadzenie

Podstawy Informatyki Języki programowania

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów


Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Programowanie w języku C++

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Wstęp do programowania. Wykład 1

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Krótka wycieczka do wnętrza komputera

Opracował: Jan Front

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Języki programowania obiektowego Nieobiektowe elementy języka C++

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Architektura komputerów

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Algorytmy od problemu do wyniku

Technika mikroprocesorowa. Języki programowania mikrokontrolerów

Zarządzanie pamięcią operacyjną

Zapisywanie algorytmów w języku programowania

Wstęp do Informatyki dla bioinformatyków

Podstawy programowania w języku C i C++

Metodyka i Technika Programowania 1

Java EE produkcja oprogramowania

INŻYNIERIA OPROGRAMOWANIA

Ćwiczenie nr 6. Programowanie mieszane

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

O (o)programowaniu. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Programowanie Niskopoziomowe

Środowiska i platformy programistyczne

Król Łukasz Nr albumu:

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Efekt kształcenia. Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie algorytmów i ich złożoności obliczeniowej.

Wstęp do programowania

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

ALGORYTMY I PROGRAMY

Programowanie w języku Python. Grażyna Koba

Warsztaty szkoleniowe. Technologia SafetyLon w systemach związanych z bezpieczeństwem funkcjonalnym Narzędzia SafetyLon Moduł 4.5.

Wstęp do Informatyki. Klasyfikacja oprogramowania

TRANSLACJA I TRANSLATORY

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Programowanie obiektowe - 1.

Języki i paradygmaty programowania - 1

Język programowania: Lista instrukcji (IL Instruction List)

Języki programowania obiektowego

Algorytm. a programowanie -

Java jako język programowania

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Ryszard Myhan. Wykład 1: Języki programowania

Organizacja typowego mikroprocesora

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Algorytmika i programowanie usystematyzowanie wiadomości

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Programowanie Niskopoziomowe

Wprowadzenie do inżynierii przetwarzania informacji

Podstawy Programowania. Wykład 1

DSL w środowisku Eclipse. Grzegorz Białek Architekt techniczny, Sygnity S.A.

Informatyka. Michał Rad

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Logiczny model komputera i działanie procesora. Część 1.

Od programu źródłowego do procesu

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Podstawy programowania w języku C++

Wprowadzenie do programowanie obiektowego w języku C++

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

KONSTRUKCJA KOMPILATORÓW

Cel stosowania metod i środków informatyki

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Transkrypt:

Podstawy programowania Część pierwsza Od języka symbolicznego do języka wysokiego poziomu Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa. Opracowanie to jest chronione prawem autorskim. Wykorzystywanie jakiegokolwiek fragmentu w celach innych niż nauka własna jest nielegalne. Dystrybuowanie tego opracowania lub jakiejkolwiek jego części oraz wykorzystywanie zarobkowe bez zgody autora jest zabronione.

Plan wykładu Program wykonywalny, kod maszynowy. Kod maszynowy, język symboliczny. Język symboliczny, asembler. Języki wysokiego poziomu a kod maszynowy. Różne spojrzenia na podział i rozwój języków programowania. Rozwój metod i technik programowania. Strona : 2

Sprzęt a oprogramowanie powtórka z architektury komputerów Kod maszynowy to jedyna postać programu komputerowego, która jest zrozumiała dla komputera i może być przez niego wykonana. Kod maszynowy to ciąg rozkazów zrozumiałych dla procesora. Procesor pobiera, dekoduje i wykonuje te rozkazy. Rozkazy pobierane są z komórek pamięci operacyjnej, gdzie są zapisane w postaci binarnej. Strona : 3

Sprzęt a oprogramowanie powtórka z architektury komputerów Kod maszynowy to ciąg rozkazów procesora, inaczej instrukcji maszynowych oraz danych, na których te rozkazy operują. Instrukcje Rozkazy i dane zapisywane są w postaci liczb binarnych. Każdy procesor ma swoją własną listę rozkazów, rozkazy te zwykle różnią się od rozkazów innych procesorów. Kod maszynowy jest dedykowany dla procesora danego typu. Kod maszynowy konkretnego procesora zwykle jest niezrozumiały dla innego procesora. Procesor wykonuje tylko kod maszynowy załadowany do pamięci operacyjnej komputera (ROM lub RAM). Dane Strona : 4

Od kodu maszynowego do języka symbolicznego Strona : 5

Od kodu maszynowego do języka symbolicznego Strona : 6

Od kodu maszynowego do języka symbolicznego Strona : 7

Od kodu maszynowego do języka symbolicznego Strona : 8

Język symboliczny i asembler kilka podstawowych informacji Język symboliczny (język asemblera) umożliwia pisanie programów z wykorzystaniem symboli (mnemonik) przypisanych poszczególnym rozkazom procesora. Program w języku symbolicznym jest zrozumiały dla programisty, lecz nie jest zrozumiały dla procesora. Mnemoniki to symboliczne oznaczenia rozkazów i innych elementów, np. rejestrów Znaczenie rozkazu Kod binarny Mnemonika Przesłanie bajtu pamięc rejestr 10001100 MOV Wyprowadzenie bajtu do układu wyjściowego 11101110 OUT Mnożenie logiczne 10000001 AND......... Asembler to program dokonujący tłumaczenia kodu źródłowego programu w języku symbolicznym na kod wynikowy (kod maszynowy). Asembler Tablica symboli MOV OUT AND Strona : 9

Języki wysokiego poziomu a kod maszynowy Język wysokiego poziomu niezależny od platformy sprzętowej i systemowej język programowania, pozwalający programiście skoncentrować się na logice rozwiązywanego problem. Notacja typowych języków wysokiego poziomu to połączenie elementów języka angielskiego z notacją wywodzącą się z matematyki. Program w języku symbolicznym Program w języku wysokiego poziomu Strona : 10

Języki wysokiego poziomu a kod maszynowy Strona : 11

Języki wysokiego poziomu a kod maszynowy Strona : 12

Języki wysokiego poziomu a kod maszynowy Strona : 13

Języki wysokiego poziomu a kod maszynowy Strona : 14

Języki wysokiego poziomu a kod maszynowy Strona : 15

Języki wysokiego poziomu a kod maszynowy Kompilator to program dokonujący tłumaczenia programu napisanego w języku wysokiego poziomu na kod maszynowy konkretnego, rzeczywistego lub wirtualnego procesora. Zatem kompilator zamienia kod źródłowy na kod maszynowy. Kompilator Kod źródłowy Analiza leksykalna Analiza syntaktyczna Generacja kodu Kod wynikowy Strona : 16

Kilka ważnych pojęć Kod źródłowy zawiera program zapisany w danym języku programowania. Kod źródłowy jest najczęściej plikiem tekstowym. Kod wynikowy zawiera program w postaci kodu maszynowego. Kod wynikowy jest najczęściej plikiem o ustalonej strukturze wewnętrznej i rozszerzeniu nazwy. Maszyna wirtualna to program emulujący działanie osobnego komputera (procesora). Jest to samodzielne środowisko wykonawcze, które zachowuje się jak osobny komputer, pozwala na wykonanie kodu dedykowanego dla wirtualnego procesora na procesorze rzeczywistym. Konsolidator (ang. linker) to program łączący w jedną całość wszystkie, uprzednio skompilowane, elementy programu tworząc odpowiedni kod wynikowy. Debuger (odpluskwiacz) program umożliwiający kontrolowane uruchamianie programu, w trakcie którego można śledzić jego przebieg, kontrolować i zmieniać zawartość zmiennych itp. Podstawowe narzędzie w walce z błędami wykonania, zwanymi pluskwami (ang. bug). Strona : 17

Przebieg prac programistycznych i wykorzystywane narzędzia Edytor Środowisko do tworzenia programu źródłowego Program źródłowy Plik (pliki) tekstowe, np.: - Pascal :.pas - C :.c - C++ :.cpp, cxx Błędy syntaktyczne (składniowe) Analizator syntaktyczny Generator kodu maszynowego Kod maszynowy przed konsolidacją Plik (pliki)object.: - Dos, Windows :.obj,.tpu - Unix :.o Błędy konsolidacji programu K o m p i l a t o r Konsolidator (ang. linker) Biblioteki standardowe, systemowe, specjalizowane Kod wykonywalny Plik wykonywalny : - Dos, Windows :.com,.exe - Unix :.out Błędy wykonania programu Środowisko uruchomieniowe (ang. debuger, profiler) Testowanie i uruchamianie Poprawki Modyfikacje Rozwój Wdrożenie programu Strona : 18

Podział języków programowania Strona : 19

Języki programowania wysokiego poziomu Zalety: Wady: duża niezależność od platformy sprzętowo-sytemowej, elastyczność i łatwość programowania, wielość technik, metod i paradygmatów programowania, wsparcie dla budowania dużych i złożonych programów. czasami wolny i duży kod wynikowy, kłopotliwe programowanie fragmentów bliskich sprzętu, zależność od kompilatora, bibliotek i narzędzi wspomagających. Język wysokiego poziomu pozwala programiście skupić się na rozwiązywaniu potencjalnie złożonego problemu, a nie na kodowaniu. Strona : 20

Języki programowania niskiego poziomu Zalety: Wady: szybki i relatywnie nieduży kod wynikowy, dobre i efektywne wykorzystanie sprzętu, implementacja programów dedykowanych i specyficznych ograniczenie do listy rozkazów danego procesora, wymagana znajomość struktury i specyfiki działania procesora i jego otoczenia, ręczne zarządzanie danymi, stosem, uciążliwe kodowanie, trudne kodowanie rozwiązań problemów złożonych. Programista myśli kategoriami sprzętu a nie dziedziny problemu, dużo uwagi poświęca na kodowanie, często kosztem myślenia o rozwiązaniu problemu. Strona : 21

Podział języków wg. metod programowania Strona : 22

Dwa spojrzenia na historyczny podział języków programowania Rośnie poziom abstrakcji 1-sza generacja kodowanie maszynowe 2-ga generacja języki symboliczne 3-cia generacja języki wysokiego poziomu ( strukturalne lub nie) 4-ta generacja jak 3-cia + ukierunkowanie na dziedzinę problemu 5-ta generacja języki deklaratywne języki sztucznej inteligencji Rozwój tec hnik programowania 1-sza generacja podprogramy, dane globalne 2-ga generacja jak 1-sza generacja plus: - wielopoziomowe podprogramy - dane lokalne, parametry 3-cia generacja jak 2-ga generacja plus: - modularyzacja - rozbudowana typizacja, obiekty 4-ta generacja jak 3-cia + ukierunkowanie na dziedzinę problemu 2007 Strona : 23

Rozwój metod i języków programowania Metody i języki programowania ciągle się rozwijają. Rozwój dotyczy różnych aspektów: technicznych, praktycznych, metodycznych, a nawet... filozoficznych. Programista i projektant systemów informatycznych skazany jest na ciągły rozwój i samokształcenie. Strona : 24

Rozwój metod i języków programowania Programowanie niestrukturalne Programowanie strukturalne Programowanie obiektowe Programowanie sterowane przepływem Programowanie sterowane zdarzeniami Programowanie na poziomie kodu Programowanie wizualne RAD Generowanie kodu, systemy CASE Programowanie genetyc zne Programowanie komponentowe Programowanie w logice Strona : 25