SlideShare une entreprise Scribd logo
1  sur  18
Paradigmas de Linguagens de Programação Paradigma Imperativo [Teoria de Tipos] Aula #5 (CopyLeft)2009 - Ismar Frango ismar@mackenzie.br
Sistema de tipos O que é um sistema de tipos? “ A type system is a  tractable syntactic method for proving the absence of  certain program behaviors  by classifying phrases according to the kinds of values they c ompute ” Detecção de erros Segurança Design Abstração Verificação Evolução Documentação “ Types are the leaven of programming, they make it digestible” Robin Milner
Em outras palavras... Um  sistema de tipos  é uma definição precisa das associações entre o tipo de uma variável, seus valores e as operações possíveis sobre esses valores Um  erro de tipo  é qualquer erro que surja porque uma operação é tentada sobre um tipo de dado para o qual ela não está definida. Quanto custa um erro de tipo? implementação teste manutenção $1 $10 $100 $472mi $
Como classificar um sistema de tipos? weak    strong dynamic static manifest implicit
Strong or weak? ,[object Object],[object Object],Sim Não Crash!   Detectados (em tempo de comp. ou exec.)
Strong or weak? struct A { char c; int i; }; struct B { float f; char c; }; int main(int argc, char* argv) { struct A a = {'c', 1024}; struct B* b = (struct B*)&a; printf("'%c' %d %f '%c'
", a.c, a.i, b->f, b->c); } C 'c' 1024 149611321247666274304.000000 ' '
Strong or weak? class Silly: def __init__(self, data): self.data = data def __add__(self, other): return str(self.data) + str(other.data) def double(a): return a + a print double(1) print double('x') print double([1]) print double(Silly({'a':1})) print double({'a':1}) Python 2 xx [1, 1] {'a': 1}{'a': 1} Traceback (most recent call last):   File "test.py", line 14, in ?     print double({'a':1})   File "test.py", line 8, in double      return a + a TypeError: unsupported operand types for +: 'dict' and 'dict'
Strong or weak? var s : array [1..10] of character;  s := 'hello';  Pascal ERRO
“ Why Pascal is Not My Favorite Programming Language ” Brian  W. Kernighan http://www.lysator.liu.se/c/bwk-on-pascal.html   Tipagem (muito) forte vale a pena? “ Comparing C and Pascal is rather like comparing a Learjet to a Piper Cub - one is meant for getting something done while the other is meant for learning.”
Static or dynamic? ,[object Object],[object Object],[object Object],A variável O elemento Compile time  Runtime Pouco   Muito
Static or dynamic? int i = 1;  C#3.0 List<string> list = new List<string>();  var i = 1;  var list = new List<string>();  var != object != Variant  Type inference!
Static or dynamic? Customer c = GetCustomer(); var d = new { Name = c.Name, City = c.City }; Tipo anônimo public void Linq1() { int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var lowNums = from n in numbers where n < 5 select n; Console.WriteLine(&quot;Numbers < 5:&quot;); foreach ( var x in lowNums ) { Console.WriteLine(x); } } C#3.0 C#3.0 (LINQ)
Manifest or implicit? Em sistemas de tipos  manifest (explicit) ,  toda  a informação deve ser providenciada pelo programador Em sistemas de tipos  implicit ,  o maior número possível  de informação deve ser inferida
Exercitando... n=5 print(type(n))  --number s=&quot;5&quot; print(type(s))  -- string soma=n+s print(soma)  -- 10 print(type(soma))  --number c = n ..s print(c)  -- string (55) print(type(c))  -- string Lua
Exercitando... function newCounter () { var i = 0 return function ()  {  // anonymous function i = i + 1 return i } } c1 = newCounter() alert(c1()) alert(c1()) alert(c1()) alert(c1()) alert(c1()) Javascript
Exercitando...   FUNCTION F(X) INTEGER F, X F = X+1 RETURN N = F(37) FORTRAN
Exercitando... #include <stdio.h> int main(void)  { unsigned char *c; float f = 10; for (c = (char *)&f; c < sizeof(float) + (char *)&f; c++) { printf(&quot;%u &quot;,  *c); } putchar('
'); return 0; } 0 0 32 65 C ERRO:  comparison between distinct pointer types `unsigned char*' and `char*' lacks a cast
Exercitando... #include <iostream> using namespace std; struct A { void f() { cout << &quot;Class A&quot; << endl; } }; struct B : A { void f() { cout << &quot;Class B&quot; << endl; } }; struct C : A { void f() { cout << &quot;Class C&quot; << endl; } }; void f(A* arg) { B* bp = (B*)(arg); C* cp = (C*)(arg); bp->f(); cp->f(); arg->f(); }; int main() { A aobj; C cobj; A* ap = &cobj; A* ap2 = &aobj; f(ap); f(ap2); } C B C A B C A virtual C C C A A A dynamic_cast<B*> 

Contenu connexe

Tendances

C Prog. - Decision & Loop Controls
C Prog. - Decision & Loop ControlsC Prog. - Decision & Loop Controls
C Prog. - Decision & Loop Controls
vinay arora
 

Tendances (20)

Solid C++ by Example
Solid C++ by ExampleSolid C++ by Example
Solid C++ by Example
 
46630497 fun-pointer-1
46630497 fun-pointer-146630497 fun-pointer-1
46630497 fun-pointer-1
 
Storage class in C Language
Storage class in C LanguageStorage class in C Language
Storage class in C Language
 
1 introducing c language
1  introducing c language1  introducing c language
1 introducing c language
 
C Programming Storage classes, Recursion
C Programming Storage classes, RecursionC Programming Storage classes, Recursion
C Programming Storage classes, Recursion
 
C Recursion, Pointers, Dynamic memory management
C Recursion, Pointers, Dynamic memory managementC Recursion, Pointers, Dynamic memory management
C Recursion, Pointers, Dynamic memory management
 
C
CC
C
 
C programming slide c04
C programming slide c04C programming slide c04
C programming slide c04
 
Introduction to Basic C programming 02
Introduction to Basic C programming 02Introduction to Basic C programming 02
Introduction to Basic C programming 02
 
C tutorial
C tutorialC tutorial
C tutorial
 
An imperative study of c
An imperative study of cAn imperative study of c
An imperative study of c
 
C++ programming
C++ programmingC++ programming
C++ programming
 
Storage classes in C
Storage classes in CStorage classes in C
Storage classes in C
 
Lecture 8- Data Input and Output
Lecture 8- Data Input and OutputLecture 8- Data Input and Output
Lecture 8- Data Input and Output
 
C programming(part 3)
C programming(part 3)C programming(part 3)
C programming(part 3)
 
Unit ii ppt
Unit ii pptUnit ii ppt
Unit ii ppt
 
Claguage 110226222227-phpapp02
Claguage 110226222227-phpapp02Claguage 110226222227-phpapp02
Claguage 110226222227-phpapp02
 
C Prog. - Decision & Loop Controls
C Prog. - Decision & Loop ControlsC Prog. - Decision & Loop Controls
C Prog. - Decision & Loop Controls
 
Programming For Problem Solving Lecture Notes
Programming For Problem Solving Lecture NotesProgramming For Problem Solving Lecture Notes
Programming For Problem Solving Lecture Notes
 
C fundamentals
C fundamentalsC fundamentals
C fundamentals
 

En vedette

A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogos
elliando dias
 

En vedette (20)

Lua para Jogos
Lua para JogosLua para Jogos
Lua para Jogos
 
Paradigmas de Linguagens de Programacao - Aula #7
Paradigmas de Linguagens de Programacao - Aula #7Paradigmas de Linguagens de Programacao - Aula #7
Paradigmas de Linguagens de Programacao - Aula #7
 
Paradigmas de Linguagens de Programacao - Aula #6
Paradigmas de Linguagens de Programacao - Aula #6Paradigmas de Linguagens de Programacao - Aula #6
Paradigmas de Linguagens de Programacao - Aula #6
 
Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3
 
Criação de Jogos 2D com Técnicas 3D Utilizando Python e C
Criação de Jogos 2D com Técnicas 3D Utilizando Python e CCriação de Jogos 2D com Técnicas 3D Utilizando Python e C
Criação de Jogos 2D com Técnicas 3D Utilizando Python e C
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação
 
Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9
 
E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9
 
Paradigmas de Linguagens de Programacao- Aula #8
Paradigmas de Linguagens de Programacao- Aula #8Paradigmas de Linguagens de Programacao- Aula #8
Paradigmas de Linguagens de Programacao- Aula #8
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10
 
Apostila sistema operacional cor capa ficha 2011 02 04
Apostila sistema operacional cor capa ficha 2011 02 04Apostila sistema operacional cor capa ficha 2011 02 04
Apostila sistema operacional cor capa ficha 2011 02 04
 
A Internet das Coisas
A Internet das CoisasA Internet das Coisas
A Internet das Coisas
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1
 
Introdução à Computação Aula 01 - Apresentação
Introdução à Computação  Aula 01 - ApresentaçãoIntrodução à Computação  Aula 01 - Apresentação
Introdução à Computação Aula 01 - Apresentação
 
Introducao ambiente windows
Introducao ambiente windowsIntroducao ambiente windows
Introducao ambiente windows
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogos
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
 
Engenharia de Software - Aula1
Engenharia de Software - Aula1Engenharia de Software - Aula1
Engenharia de Software - Aula1
 
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas Estáticas
 

Similaire à Paradigmas de Linguagens de Programacao - Aula #5

presentation_data_types_and_operators_1513499834_241350.pptx
presentation_data_types_and_operators_1513499834_241350.pptxpresentation_data_types_and_operators_1513499834_241350.pptx
presentation_data_types_and_operators_1513499834_241350.pptx
KrishanPalSingh39
 
presentation_c_basics_1589366177_381682.pptx
presentation_c_basics_1589366177_381682.pptxpresentation_c_basics_1589366177_381682.pptx
presentation_c_basics_1589366177_381682.pptx
KrishanPalSingh39
 

Similaire à Paradigmas de Linguagens de Programacao - Aula #5 (20)

C tutorial
C tutorialC tutorial
C tutorial
 
C programming
C programmingC programming
C programming
 
C tutorial
C tutorialC tutorial
C tutorial
 
presentation_data_types_and_operators_1513499834_241350.pptx
presentation_data_types_and_operators_1513499834_241350.pptxpresentation_data_types_and_operators_1513499834_241350.pptx
presentation_data_types_and_operators_1513499834_241350.pptx
 
C programing Tutorial
C programing TutorialC programing Tutorial
C programing Tutorial
 
Fundamentals of computer programming by Dr. A. Charan Kumari
Fundamentals of computer programming by Dr. A. Charan KumariFundamentals of computer programming by Dr. A. Charan Kumari
Fundamentals of computer programming by Dr. A. Charan Kumari
 
presentation_c_basics_1589366177_381682.pptx
presentation_c_basics_1589366177_381682.pptxpresentation_c_basics_1589366177_381682.pptx
presentation_c_basics_1589366177_381682.pptx
 
C C++ tutorial for beginners- tibacademy.in
C C++ tutorial for beginners- tibacademy.inC C++ tutorial for beginners- tibacademy.in
C C++ tutorial for beginners- tibacademy.in
 
Assignment c programming
Assignment c programmingAssignment c programming
Assignment c programming
 
the refernce of programming C notes ppt.pptx
the refernce of programming C notes ppt.pptxthe refernce of programming C notes ppt.pptx
the refernce of programming C notes ppt.pptx
 
report
reportreport
report
 
Unit 5 Foc
Unit 5 FocUnit 5 Foc
Unit 5 Foc
 
Input And Output
 Input And Output Input And Output
Input And Output
 
C faq pdf
C faq pdfC faq pdf
C faq pdf
 
Ppt of c vs c#
Ppt of c vs c#Ppt of c vs c#
Ppt of c vs c#
 
Unit2 C
Unit2 C Unit2 C
Unit2 C
 
Unit2 C
Unit2 CUnit2 C
Unit2 C
 
Data struture lab
Data struture labData struture lab
Data struture lab
 
C language
C languageC language
C language
 
Functions
FunctionsFunctions
Functions
 

Plus de Ismar Silveira

#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - Methodologies#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - Methodologies
Ismar Silveira
 

Plus de Ismar Silveira (20)

REA - Recursos Educacionais Abertos
REA - Recursos Educacionais AbertosREA - Recursos Educacionais Abertos
REA - Recursos Educacionais Abertos
 
Charla juegos udelar2015_vfinal
Charla juegos udelar2015_vfinalCharla juegos udelar2015_vfinal
Charla juegos udelar2015_vfinal
 
Interaccion2014 - Presentation about Open Books, MOOCs and Instructional Design
Interaccion2014 - Presentation about Open Books, MOOCs and Instructional DesignInteraccion2014 - Presentation about Open Books, MOOCs and Instructional Design
Interaccion2014 - Presentation about Open Books, MOOCs and Instructional Design
 
#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - Methodologies#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - Methodologies
 
MOOC e Educação Aberta - Painel @ #cbie2013
MOOC e Educação Aberta - Painel @ #cbie2013MOOC e Educação Aberta - Painel @ #cbie2013
MOOC e Educação Aberta - Painel @ #cbie2013
 
Fundcompsis 1.1
Fundcompsis 1.1Fundcompsis 1.1
Fundcompsis 1.1
 
Ismar webinar-udelar
Ismar webinar-udelarIsmar webinar-udelar
Ismar webinar-udelar
 
wei2010
wei2010wei2010
wei2010
 
E:\Plp 2009 2\Plp Aula11
E:\Plp 2009 2\Plp Aula11E:\Plp 2009 2\Plp Aula11
E:\Plp 2009 2\Plp Aula11
 
Fundamentos de Sistemas de informacao - Aula #16
Fundamentos de Sistemas de informacao - Aula #16Fundamentos de Sistemas de informacao - Aula #16
Fundamentos de Sistemas de informacao - Aula #16
 
Um Sistema De Recomendacao para Web 2
Um Sistema De Recomendacao para Web 2Um Sistema De Recomendacao para Web 2
Um Sistema De Recomendacao para Web 2
 
Apresentação WAvalia - SBIE 2009
Apresentação WAvalia - SBIE 2009Apresentação WAvalia - SBIE 2009
Apresentação WAvalia - SBIE 2009
 
Fundamentos de Sistemas de Informacao - Aula #14 2009_2
Fundamentos de Sistemas de Informacao - Aula #14 2009_2Fundamentos de Sistemas de Informacao - Aula #14 2009_2
Fundamentos de Sistemas de Informacao - Aula #14 2009_2
 
Fundamentos de Sistemas de Informacao - Aula 13
Fundamentos de Sistemas de Informacao - Aula 13Fundamentos de Sistemas de Informacao - Aula 13
Fundamentos de Sistemas de Informacao - Aula 13
 
Fundamentos de Sistemas de Informacao - Aula 11 2009_2
Fundamentos de Sistemas de Informacao - Aula 11 2009_2Fundamentos de Sistemas de Informacao - Aula 11 2009_2
Fundamentos de Sistemas de Informacao - Aula 11 2009_2
 
Fundamentos de Sistemas de Informacao - Aula 12 2009_2
Fundamentos de Sistemas de Informacao - Aula 12 2009_2Fundamentos de Sistemas de Informacao - Aula 12 2009_2
Fundamentos de Sistemas de Informacao - Aula 12 2009_2
 
Fundamentos de Sistemas de Informacao - Aula #10_2009_2
Fundamentos de Sistemas de Informacao - Aula #10_2009_2Fundamentos de Sistemas de Informacao - Aula #10_2009_2
Fundamentos de Sistemas de Informacao - Aula #10_2009_2
 
Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2
 
Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2
 
Fundamentos de Sistemas de Informacao - Aula #9_2009_2
Fundamentos de Sistemas de Informacao - Aula #9_2009_2Fundamentos de Sistemas de Informacao - Aula #9_2009_2
Fundamentos de Sistemas de Informacao - Aula #9_2009_2
 

Dernier

1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
QucHHunhnh
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
kauryashika82
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
negromaestrong
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
PECB
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
ciinovamais
 

Dernier (20)

TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Energy Resources. ( B. Pharmacy, 1st Year, Sem-II) Natural Resources
Energy Resources. ( B. Pharmacy, 1st Year, Sem-II) Natural ResourcesEnergy Resources. ( B. Pharmacy, 1st Year, Sem-II) Natural Resources
Energy Resources. ( B. Pharmacy, 1st Year, Sem-II) Natural Resources
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 

Paradigmas de Linguagens de Programacao - Aula #5

  • 1. Paradigmas de Linguagens de Programação Paradigma Imperativo [Teoria de Tipos] Aula #5 (CopyLeft)2009 - Ismar Frango ismar@mackenzie.br
  • 2. Sistema de tipos O que é um sistema de tipos? “ A type system is a tractable syntactic method for proving the absence of certain program behaviors by classifying phrases according to the kinds of values they c ompute ” Detecção de erros Segurança Design Abstração Verificação Evolução Documentação “ Types are the leaven of programming, they make it digestible” Robin Milner
  • 3. Em outras palavras... Um sistema de tipos é uma definição precisa das associações entre o tipo de uma variável, seus valores e as operações possíveis sobre esses valores Um erro de tipo é qualquer erro que surja porque uma operação é tentada sobre um tipo de dado para o qual ela não está definida. Quanto custa um erro de tipo? implementação teste manutenção $1 $10 $100 $472mi $
  • 4. Como classificar um sistema de tipos? weak strong dynamic static manifest implicit
  • 5.
  • 6. Strong or weak? struct A { char c; int i; }; struct B { float f; char c; }; int main(int argc, char* argv) { struct A a = {'c', 1024}; struct B* b = (struct B*)&a; printf(&quot;'%c' %d %f '%c' &quot;, a.c, a.i, b->f, b->c); } C 'c' 1024 149611321247666274304.000000 ' '
  • 7. Strong or weak? class Silly: def __init__(self, data): self.data = data def __add__(self, other): return str(self.data) + str(other.data) def double(a): return a + a print double(1) print double('x') print double([1]) print double(Silly({'a':1})) print double({'a':1}) Python 2 xx [1, 1] {'a': 1}{'a': 1} Traceback (most recent call last):   File &quot;test.py&quot;, line 14, in ?     print double({'a':1})   File &quot;test.py&quot;, line 8, in double     return a + a TypeError: unsupported operand types for +: 'dict' and 'dict'
  • 8. Strong or weak? var s : array [1..10] of character; s := 'hello'; Pascal ERRO
  • 9. “ Why Pascal is Not My Favorite Programming Language ” Brian W. Kernighan http://www.lysator.liu.se/c/bwk-on-pascal.html Tipagem (muito) forte vale a pena? “ Comparing C and Pascal is rather like comparing a Learjet to a Piper Cub - one is meant for getting something done while the other is meant for learning.”
  • 10.
  • 11. Static or dynamic? int i = 1; C#3.0 List<string> list = new List<string>(); var i = 1; var list = new List<string>(); var != object != Variant Type inference!
  • 12. Static or dynamic? Customer c = GetCustomer(); var d = new { Name = c.Name, City = c.City }; Tipo anônimo public void Linq1() { int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var lowNums = from n in numbers where n < 5 select n; Console.WriteLine(&quot;Numbers < 5:&quot;); foreach ( var x in lowNums ) { Console.WriteLine(x); } } C#3.0 C#3.0 (LINQ)
  • 13. Manifest or implicit? Em sistemas de tipos manifest (explicit) , toda a informação deve ser providenciada pelo programador Em sistemas de tipos implicit , o maior número possível de informação deve ser inferida
  • 14. Exercitando... n=5 print(type(n)) --number s=&quot;5&quot; print(type(s)) -- string soma=n+s print(soma) -- 10 print(type(soma)) --number c = n ..s print(c) -- string (55) print(type(c)) -- string Lua
  • 15. Exercitando... function newCounter () { var i = 0 return function () { // anonymous function i = i + 1 return i } } c1 = newCounter() alert(c1()) alert(c1()) alert(c1()) alert(c1()) alert(c1()) Javascript
  • 16. Exercitando... FUNCTION F(X) INTEGER F, X F = X+1 RETURN N = F(37) FORTRAN
  • 17. Exercitando... #include <stdio.h> int main(void) { unsigned char *c; float f = 10; for (c = (char *)&f; c < sizeof(float) + (char *)&f; c++) { printf(&quot;%u &quot;, *c); } putchar(' '); return 0; } 0 0 32 65 C ERRO: comparison between distinct pointer types `unsigned char*' and `char*' lacks a cast
  • 18. Exercitando... #include <iostream> using namespace std; struct A { void f() { cout << &quot;Class A&quot; << endl; } }; struct B : A { void f() { cout << &quot;Class B&quot; << endl; } }; struct C : A { void f() { cout << &quot;Class C&quot; << endl; } }; void f(A* arg) { B* bp = (B*)(arg); C* cp = (C*)(arg); bp->f(); cp->f(); arg->f(); }; int main() { A aobj; C cobj; A* ap = &cobj; A* ap2 = &aobj; f(ap); f(ap2); } C B C A B C A virtual C C C A A A dynamic_cast<B*> 