Oрганизација програма

Slides:



Advertisements
Similar presentations
Lecture Computer Science I - Martin Hardwick The Programming Process rUse an editor to create a program file (source file). l contains the text of.
Advertisements

C++ Basics Variables, Identifiers, Assignments, Input/Output.
Structure of a C program
C Programming Basics Lecture 5 Engineering H192 Winter 2005 Lecture 05
CS1061 C Programming Lecture 4: Indentifiers and Integers A.O’Riordan, 2004.
KEAN UNIVERSITY Visual C++ Dr. K. Shahrabi. Developer studio Is a self-contain environment for creating, compiling, linking and testing windows program.
CS 192 Lecture 3 Winter 2003 December 5, 2003 Dr. Shafay Shamail.
© Janice Regan, CMPT 128, Jan CMPT 128: Introduction to Computing Science for Engineering Students Data representation and Data Types Variables.
COMPUTER PROGRAMMING. Data Types “Hello world” program Does it do a useful work? Writing several lines of code. Compiling the program. Executing the program.
1 Identifiers  Identifiers are the words a programmer uses in a program  An identifier can be made up of letters, digits, the underscore character (
C Tokens Identifiers Keywords Constants Operators Special symbols.
C-Language Keywords(C99)
Dennis Ritchie 1972 AT & T Bell laboratories (American Telephone and Telegraph) USA 1www.gowreeswar.com.
COMPUTER PROGRAMMING. variable What is variable? a portion of memory to store a determined value. Each variable needs an identifier that distinguishes.
Engineering H192 - Computer Programming The Ohio State University Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics.
Instructor: Alexander Stoytchev CprE 185: Intro to Problem Solving (using C)
Variables and Data Types.  Variable: Portion of memory for storing a determined value.  Could be numerical, could be character or sequence of characters.
Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5.
Data Structure and c K.S.Prabhu Lecturer All Deaf Educational Technology.
Gator Engineering 1 Chapter 2 C Fundamentals (Continued) Copyright © 2008 W. W. Norton & Company. All rights reserved.
By Anand George SourceLens.org Copyright. All rights reserved. Content Owner - Meera R (meera at sourcelens.org)
C++ Basics Programming. COMP104 Lecture 5 / Slide 2 Introduction to C++ l C is a programming language developed in the 1970s with the UNIX operating system.
1 CSC 1111 Introduction to Computing using C++ C++ Basics (Part 1)
2. C FUNDAMENTALS. Example: Printing a Message /* Illustrates comments, strings, and the printf function */ #include int main(void) { printf("To C, or.
Basic Types, Variables, Literals, Constants. What is in a Word? A byte is the basic addressable unit of memory in RAM Typically it is 8 bits (octet)
Introduction to C Programming I Subject: T0016 – ALGORITHM AND PROGRAMMING Year: 2013.
C++ Lesson 1.
Asst.Prof.Dr. Tayfun ÖZGÜR
Variables, Identifiers, Assignments, Input/Output
Control Statements in C
Data types Data types Basic types
LESSON 3 IO, Variables and Operators
Compiler Construction
C Short Overview Lembit Jürimägi.
Introduction to C Programming Language
مبانی کامپیوتر و برنامه سازی
CMSC 104, Section 4 Richard Chang
بسم الله الرحمن الرحيم.
Reserved Words.
2008/10/01: Lecture 8 CMSC 104, Section 0101 John Y. Park
CMSC 104, Section 4 Richard Chang
null, true, and false are also reserved.
C++ Basics.
פרטים נוספים בסילבוס של הקורס
Introduction to Java Programming
درس برنامه‌سازي کامپيوتر
Variables in C Topics Naming Variables Declaring Variables
Basics of ‘C’.
An overview of Java, Data types and variables
פרטים נוספים בסילבוס של הקורס
Ključne reči,identifikatori, konstante i promenljive
Keywords.
Govt. Polytechnic,Dhangar
Variables, Identifiers, Assignments, Input/Output
Variables in C Topics Naming Variables Declaring Variables
JavaScript Reserved Words
Introduction C is a general-purpose, high-level language that was originally developed by Dennis M. Ritchie to develop the UNIX operating system at Bell.
Prof. Bhushan Trivedi Director GLS Institute of Computer Technology
Variables in C Declaring , Naming, and Using Variables.
Module 2 - Part 1 Variables, Assignment, and Data Types
Module 2 Variables, Assignment, and Data Types
2. Second Step for Learning C++ Programming • Data Type • Char • Float
Programming Language C Language.
C Programming - Lecture 5
Building Blocks of C Programming Language
2008/10/01: Lecture 8 CMSC 104, Section 0101 John Y. Park
C Language B. DHIVYA 17PCA140 II MCA.
Variables in C Topics Naming Variables Declaring Variables
Variables in C Topics Naming Variables Declaring Variables
Variables in C Topics Naming Variables Declaring Variables
Presentation transcript:

Oрганизација програма Претпроцесор Лексичка анализа Декларације и дефиниције Организација програма и повезивање

Претпроцесор Пре превођења, изворни програм се обрађује помоћу претпроцесора уграђеног у језик. Претпроцесор има могућности дефинисања макроа, условног превођења, укључивања датотека и др. Претпроцесором се управља директивама.

Претпроцесор Директива почиње знаком # и завршава се на крају реда. Ако је потребно да се настави у следећем реду, на крај претходног реда ставља се знак \. Директива важи од места навођења до краја програмске датотеке.

Претпроцесор #define makro ova direktiva se nastavlja \ i u sledecem redu.\ a kraj je u ovom redu. Чему ово служи?

#define identifikator niz_reci Претпроцесор #define identifikator niz_reci Свака појава имена identifikator замењује се стрингом niz_reci. #define pi 3.1415926 #define MAX 100 #define zbir(a,b) ((a)+(b))

Претпроцесор #undefine identifikator Овим се укуда претходно дефинисан макро

#include <imedatoteke> Претпроцесор Директивом #include <imedatoteke> налаже се претпроцесору да на место директиве укључи цео садржај наведеног фајла, који се налази на унапред договореном месту (подразумевани директоријум преводиоца).

#include “imedatoteke” Претпроцесор Директивом #include “imedatoteke” налаже се претпроцесору да на место директиве укључи цео садржај наведеног фајла, који се налази на унапред договореном месту (текући директоријум).

Претпроцесор Условно превођење #if konstantni_izraz if_deo #elif konstantni_izraz elif_deo #else else_deo #endif

Претпроцесор Често се користи уз оператор defined. #if defined identifikator #ifdef identifikator #ifndef identifikator

Лексичка анализа Преводилац најпре раставља изворни код на токене. Токени су елементарне лексичке јединице: идентификатори, кључне речи, литерали, оператори и сепаратори.

Лексичка анализа Токени се раздвајају белинама: бланко знак, нови ред, табулатор, ... И претпроцесор и преводилац не врше анализу на нивоу знакова већ на нивоу токена.

Лексичка анализа Лексичком анализом се издваја најдужи низ знакова који преставља токен.

Лексичка анализа if (a<b) if (c<d) for (i=0; i<100 ; i++) niz[i] =niz[i+1]; if (a<b) if (c<d) for (i=0; i<100; i++)

Лексичка анализа Коментари такође представљају белине. a=b+++c; a = b++ + c; Коментари такође представљају белине. Коментар почиње знаком /* и завршава се знаком */ или почиње знаком // и завршава се на крају реда.

Лексичка анализа Идентификатор је произвољан низ слова или цифара који почиње словом. Знак _ сматра се словом! Два стила писања: MojeIme moje_ime

Лексичка анализа Кључне речи су резервисане – не могу се употребљавати са другим значењем осим оним прописаним језиком. asm continue float new signed try auto default for operator sizeof typedef break delete friend private static union case do goto protected struct unsigned catch double if public switch virtual char else inline register template void class enum int return this volatile const extern long short throw while

Лексичка анализа Следећи знаци представљају операторе или знаке интерпункције и чине токене: ! % ^ & * ( ) - + = { } | ~ [ ] \ ; ‘ : “ < > ? , . /

Лексичка анализа Следеће комбинације знакова представљају операторе и такође чине токене: -> ++ -- .* ->* << >> <= >= == != && || *= /= %= += -= <<= >>= &= ^= |= ::

Лексичка анализа Литерали (костанте) могу бити: целобројне константе; знаковне константе; рационалне константе; стрингови.

Лексичка анализа Целобројне константе могу бити: децимални бројеви; октални бројеви (прва цифра 0); хексадецимални бројеви (почињу са 0x); Тип константе је неки од целобројних типова који може да прими ту вредност. Користе се суфикси U за unsigned и L за long.

Лексичка анализа Знаковна константа је знак уоквирен једноструким наводима (‘) и типа је char. Вредност јој је одговарајући код знака. Знаковне константе са више знакова типа су int. Њихова вредност зависи од имплементације преводиоца и у принципу их треба избегавати.

Лексичка анализа Неки посебни знаци који не могу да се преставе, једноструки и двоструки наводници, знак питања и обрнута коса црта представљају се на посебан начин.

Лексичка анализа Опис знака Знак Представа Пример Нови ред (new line) NL (LF) \n ‘\n’ Хоризонтални табулатор HT \t ‘\t’ Вертикални табулатор VT \v ‘\v’ Backspace BS \b ‘\b’ Carriage return CR \r ‘\r’ Нова страна FF \f ‘\f’ Звоно BEL \a ‘\a’ Обрнута коса црта (backslash) \ \\ ‘\\’ Знак питања ? \? ‘\?’ Једноструки навод ‘ \’ ‘\’’ Двоструки навод “ \” ‘\”’ Октални број \ooo ‘\142’ Хексадецимални број \xhhh ‘\x3F’

Лексичка анализа Рационалне константе су децимални бројеви са опционим експонентом (е или Е). Подразумевани тип им је double а суфикс за float је F а за long double је L.

Лексичка анализа Стринг је низ знакова уоквирен двоструким наводима. Тумачи се као низ елемената типа char. Преводилац додаје на крај низа знак ‘\0’ који улази у дужину низа.

Декларације и дефиниције Декларација је исказ којим се у програм уводи име. Дефиниција је она декларација која укључује креирање објекта у време извршавања, даје тело функције или у потпуности дефинише тип (класу).

Декларације и дефиниције У програму мора да постоји само једна дефиниција сваког објекта, функције, класе и константе типа набрајања. Декларације које нису дефиниције могу се произвољно много пута понављати.

Декларације и дефиниције class S; // deklaracija koja govori da je S ime klase class S; // moze se ponavljati int a; // definicija int a; // greska, definicija ne sme da se ponovi

Организација програма и повезивање Програм у језику C++ се обично састоји од више програмских модула. Ови модули се преводе одвојено а затим повезују. Да би се обезбедило правилно повезивање потребно је да декларације имена буде на свим потребним местима.

Организација програма и повезивање То се постиже коришћењем фајлова заглавља. Ови фајлови имају екстензију .h и укључују се помоћу директиве #include.

Организација програма и повезивање // Fajl: osoba.h // Sadrzi deklaraciju klase osoba class osoba { protected: char ime[30]; int god; public: virtual void ko_si(); osoba (char ime_i_prezime[30], int godine_starosti); };

Организација програма и повезивање // Fajl: osoba.cpp // Sadrzi definicije funkcija clanica klase osoba # include “osoba.h” void osoba::ko_si() { ispisi ime i godine u recenici “Ja sam … i imam … godina” } osoba::osoba (char i[30], int g) { inicijalizuj ime i godine

Организација програма и повезивање // Fajl: osoba.h // Sadrzi deklaraciju klase osoba #ifndef _osoba #define _osoba class osoba { protected: char ime[30]; int god; public: virtual void ko_si(); osoba (char ime_i_prezime[30], int godine_starosti); }; #endif

Организација програма и повезивање Уз преводиоце се испоручују и библиотеке фунција и класа. Потребне декларације се уводе помоћу директиве #include <ime_fajla>

Организација програма и повезивање Стандардно заглавље Опис <float.h> Садржи параметре за функције за рад са рационалним бројевима у покретном зарезу <limits.h> Садржи параметре окружења, информације о ограничењима преводиоца, као и опсеге целобројних величина <stddef.h> Садржи неколико често коришћених типова података и макроа <stdarg.h> Садржи макрое за читање аргумената функција које могу да приме променљив скуп аргумената <stdlib.h> Садржи декларације разних често коришћених функција за конверзије, сортирање и слично <stdio.h> Садржи типое и макрое за стандардни пакет УИ функција. <iostream.h> Садржи декларације стандардних УИ функција и класа <string.h> Садржи декларације функција за рад са стринговима <math.h> Садржи декларације математичких функција

Организација програма и повезивање Главни програм се налази у функцији main: void main (); void main (int argc, char *argv[]); int main (); int main (int argc, char *argv[]); argc – број речи у позиву, укључујући име програма argv – низ показивача на речи из позива

Организација програма и повезивање Програм се може завршити повратком из функције main; позивом функције exit; позивом функције abort;