0
Grupo de estudos @asdevs Fellyph Cintra   @fellyph   http://www.fellyph.com.br/blog/tutoriais
Funções  <ul><ul><li>São uma sequência de ações que podem ser reutilizada em seu código. </li></ul></ul><ul><li>  </li></u...
Trabalhando com funções <ul><li>Uma chamada de uma função é identificada por seu nome e um parênteses &quot;( )&quot;  sem...
Trabalhando com funções  <ul><ul><li>  Outro exemplo de uso de funções é a função método random() da classe Math. </li></u...
Instrução de função (Function statement ) <ul><li>Modo mais convencional de construir funções: </li></ul><ul><ul><li>Palav...
Expressões de função (Function expression) <ul><li>A segunda forma de construir uma função(como variável) é dessa maneira:...
Exemplo <ul><li>var alertaTraceEx:Function = new function(meuParam:String) </li></ul><ul><li>{ </li></ul><ul><li>     trac...
Instrução de Função x Expressão de Função <ul><li>Filosofia : </li></ul><ul><li>  </li></ul><ul><li>&quot;Uma expressão de...
O uso <ul><li>Prefira instrução de função seu uso é mais legível e deixa o código menos confuso.   </li></ul><ul><li>Expre...
Exemplo <ul><li>dynamic class Test {} var myTest:Test = new Test(); </li></ul><ul><li>// function expression  </li></ul><u...
Exemplo 2 <ul><li>dynamic class Test {}  </li></ul><ul><li>  </li></ul><ul><li>var myTest:Test = new Test(); </li></ul><ul...
Exemplo 3 <ul><li>statementTest(); // statementTest   </li></ul><ul><li>function statementTest():void {     trace(&quot;st...
Retornando valores  <ul><li>Para retornar valores definimos o tipo que a função irá retornar na assinatura da função: </li...
Observação <ul><li>A instrução return encerra a função, de forma que as instruções abaixo de uma instrução return ...
Funções aninhadas <ul><li>function getNameAndVersion():String {        </li></ul><ul><li>   function getVersion():String...
Parâmetros de função <ul><li>Trabalhando com paramêtros de função temos a possibilidade de passar os parâmetros por val...
Parâmetros de função <ul><ul><li>No ActionScript 3.0, todos os argumentos são transmitidos por referência. </li></ul>...
Exemplo 1 <ul><li>function testePrimitivos(xParam:int, yParam:int):void { </li></ul><ul><li>     xParam++; yParam++;  </li...
Exemplo 2 <ul><li>function passByRef(objParam:Object):void { </li></ul><ul><li>     objParam.x++;  </li></ul><ul><li>     ...
Valores de parâmetro padrão <ul><li>function defaultValues(x:int, y:int = 3, z:int = 5):void  </li></ul><ul><li>{ </li></u...
Objeto arguments <ul><li>Quando a função recebe parâmetros é possivel acessar o objeto  arguments  que contém informações ...
Exemplo arguments.length <ul><li>function traceArgArray(x:int,y:int, z:int ):void {     for (var i:uint = 0; i < arguments...
Exemplo arguments.callee <ul><li>var fatorial:Function = function (x:uint) {            if(x == 0) {             return 1;...
O parâmetro ... (rest) <ul><li>Permite passar uma grande quantidade de parâmetros separados por virgula. </li></ul><ul><l...
  <ul><li>  </li></ul>
Upcoming SlideShare
Loading in...5
×

4º Aula do Grupo de estudos sobre funções

706

Published on

Quarta aula do grupo de estudos do ASDEVS, sobre funções com @fellyph

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
706
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "4º Aula do Grupo de estudos sobre funções"

  1. 1. Grupo de estudos @asdevs Fellyph Cintra   @fellyph   http://www.fellyph.com.br/blog/tutoriais
  2. 2. Funções <ul><ul><li>São uma sequência de ações que podem ser reutilizada em seu código. </li></ul></ul><ul><li>  </li></ul><ul><ul><li>As funções também são conhecidas como métodos ou comportamentos quando fazem parte de uma classe. </li></ul></ul>
  3. 3. Trabalhando com funções <ul><li>Uma chamada de uma função é identificada por seu nome e um parênteses &quot;( )&quot; sem aspas .  </li></ul><ul><li>  </li></ul><ul><li>Dentro dos parênteses informamos os parâmetros que a função vai receber. </li></ul><ul><li>  </li></ul><ul><li>Por exemplo a função trace() nativa do Flash ela recebe uma String como parâmetro. como no exemplo abaixo : </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>trace(&quot;aqui vai o texto que será exibido no output do Flash&quot;) </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul>
  4. 4. Trabalhando com funções <ul><ul><li>  Outro exemplo de uso de funções é a função método random() da classe Math. </li></ul></ul><ul><li>  </li></ul><ul><li>var numeroRandomico:Number = Math.random()  </li></ul><ul><ul><li>Neste caso o método não recebe nenhum paramêtro </li></ul></ul><ul><li>  </li></ul><ul><ul><li>As funções podem receber nenhum , um ou N parâmetros isso é definido na assinatura da função </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Existem duas formas de construir uma função </li></ul></ul>
  5. 5. Instrução de função (Function statement ) <ul><li>Modo mais convencional de construir funções: </li></ul><ul><ul><li>Palavra chave function </li></ul></ul><ul><ul><li>Nome da função </li></ul></ul><ul><ul><li>Parâmetros  </li></ul></ul><ul><ul><li>Corpo da função </li></ul></ul><ul><li>  </li></ul><ul><li>function alertaTrace(meuParam:String) </li></ul><ul><li>{ </li></ul><ul><li>    trace(&quot;alerta Trace :&quot; , meuParam) </li></ul><ul><li>} </li></ul><ul><li>alertaTrace(&quot;Olá mundo&quot;) </li></ul>
  6. 6. Expressões de função (Function expression) <ul><li>A segunda forma de construir uma função(como variável) é dessa maneira: </li></ul><ul><ul><li>palavra-chave var  </li></ul></ul><ul><ul><li>nome da função  </li></ul></ul><ul><ul><li>operador (:) </li></ul></ul><ul><ul><li>A classe Function inidicando o tipo da variável </li></ul></ul><ul><ul><li>atribuição (=) </li></ul></ul><ul><ul><li>palavra-chave function e parâmetros </li></ul></ul>
  7. 7. Exemplo <ul><li>var alertaTraceEx:Function = new function(meuParam:String) </li></ul><ul><li>{ </li></ul><ul><li>    trace(&quot;alerta trace :&quot;, meuParam) </li></ul><ul><li>} </li></ul><ul><li>alertaTraceEx(&quot;Olá mundo[2] !!&quot;) </li></ul>
  8. 8. Instrução de Função x Expressão de Função <ul><li>Filosofia : </li></ul><ul><li>  </li></ul><ul><li>&quot;Uma expressão de função não é suficiente como uma instrução de função. Ela só pode ser usada como parte de uma instrução, em geral, de atribuição.&quot; </li></ul>
  9. 9. O uso <ul><li>Prefira instrução de função seu uso é mais legível e deixa o código menos confuso.  </li></ul><ul><li>Expressão de funções são aconcelhaveis para a programação direcionada a comportamento dinâmico. </li></ul><ul><li>  </li></ul><ul><li>Em outras palavras, quando você atribui uma uma expressão de função a um objeto ele cria uma referência única. Se a função anexada sair do escopo ou não estiver disponível, não será mais possível acessar a expressão de função </li></ul><ul><li>Vamos ao exemplo...   </li></ul>
  10. 10. Exemplo <ul><li>dynamic class Test {} var myTest:Test = new Test(); </li></ul><ul><li>// function expression  </li></ul><ul><li>myTest.functionExp = function () { trace(&quot;Function expression&quot;) };  </li></ul><ul><li>  </li></ul><ul><li>myTest.functionExp();  // expressão de função </li></ul><ul><li>delete myTest.functionExp;  </li></ul><ul><li>  </li></ul><ul><li>myTest.functionExp(); // error </li></ul><ul><li>//O operador delete funciona apenas em propriedades de objetos </li></ul>
  11. 11. Exemplo 2 <ul><li>dynamic class Test {}  </li></ul><ul><li>  </li></ul><ul><li>var myTest:Test = new Test(); </li></ul><ul><li>// function statement  </li></ul><ul><li>function stateFunc() { trace(&quot;Function statement&quot;) } myTest.statement = stateFunc;  </li></ul><ul><li>myTest.statement(); // Function statement d </li></ul><ul><li>delete myTest.statement;  </li></ul><ul><li>delete stateFunc; // no effect  </li></ul><ul><li>stateFunc(); // instução de função </li></ul><ul><li>myTest.statement(); // error </li></ul>
  12. 12. Exemplo 3 <ul><li>statementTest(); // statementTest   </li></ul><ul><li>function statementTest():void {     trace(&quot;statementTest&quot;); } </li></ul><ul><li>expressionTest(); // run-time error   </li></ul><ul><li>var expressionTest:Function = function () {        trace(&quot;expressionTest&quot;); } </li></ul><ul><li>//As expressões de função não estão disponíveis antes de serem definidas </li></ul>
  13. 13. Retornando valores <ul><li>Para retornar valores definimos o tipo que a função irá retornar na assinatura da função: </li></ul><ul><li>function minhaFuncao():int{ ... </li></ul><ul><li>Em seguida usamos a instrução return com a variável que iremos passar ou o valor literal. </li></ul><ul><li>function doubleNum(baseNum:int):int {     return (baseNum * 2); </li></ul><ul><li>} </li></ul>
  14. 14. Observação <ul><li>A instrução return encerra a função, de forma que as instruções abaixo de uma instrução return não são executadas, como a seguir: </li></ul><ul><li>function doubleNum(baseNum:int):int {  </li></ul><ul><li>     return (baseNum * 2);  </li></ul><ul><li>     trace(&quot;after return&quot;); // essa linha não é executada     } </li></ul>
  15. 15. Funções aninhadas <ul><li>function getNameAndVersion():String {        </li></ul><ul><li>   function getVersion():String {         return &quot;10&quot;;     }  </li></ul><ul><li>     function getProductName():String {         return &quot;Flash Player&quot;; return (getProductName() + &quot; &quot; +            getVersion());     } }  </li></ul><ul><li>  </li></ul><ul><li>trace(getNameAndVersion()); // Flash Player 10 </li></ul>
  16. 16. Parâmetros de função <ul><li>Trabalhando com paramêtros de função temos a possibilidade de passar os parâmetros por valor ou referência. </li></ul><ul><ul><li>Paramêtros passados por valor significa que o argumento é em uma variável local para o uso interno da função. </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Ser passado como referência significa é passado uma referência à variável transmitida. </li></ul></ul>
  17. 17. Parâmetros de função <ul><ul><li>No ActionScript 3.0, todos os argumentos são transmitidos por referência. </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Porque todos os valores são armazenados como objetos. </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Entretanto, os tipos de dados primitivos, que incluem Boolean, Number, int, uint e String, têm operadores especiais que fazem com que se comportem como se fossem transmitidos por valor. </li></ul></ul>
  18. 18. Exemplo 1 <ul><li>function testePrimitivos(xParam:int, yParam:int):void { </li></ul><ul><li>    xParam++; yParam++;  </li></ul><ul><li>     trace(xParam, yParam);   </li></ul><ul><li>} </li></ul><ul><li>var xValue:int = 10;  </li></ul><ul><li>var yValue:int = 15;  </li></ul><ul><li>trace(xValue, yValue); // 10 15  </li></ul><ul><li>testePrimitivos(xValue, yValue); // 11 16  </li></ul><ul><li>trace(xValue, yValue);// 10 15 </li></ul>
  19. 19. Exemplo 2 <ul><li>function passByRef(objParam:Object):void { </li></ul><ul><li>     objParam.x++;  </li></ul><ul><li>     objParam.y++;  </li></ul><ul><li>     trace(objParam.x, objParam.y); }  </li></ul><ul><li>  </li></ul><ul><li>var objVar:Object = {x:10, y:15};  </li></ul><ul><li>  </li></ul><ul><li>trace(objVar.x, objVar.y); // 10 15  </li></ul><ul><li>passByRef(objVar); // 11 16  </li></ul><ul><li>trace(objVar.x, objVar.y); // 11 16 </li></ul>
  20. 20. Valores de parâmetro padrão <ul><li>function defaultValues(x:int, y:int = 3, z:int = 5):void  </li></ul><ul><li>{ </li></ul><ul><li>         trace(x, y, z);  </li></ul><ul><li>} </li></ul><ul><li>defaultValues(1); // 1 3 5 </li></ul>
  21. 21. Objeto arguments <ul><li>Quando a função recebe parâmetros é possivel acessar o objeto arguments que contém informações sobre os parâmetros. </li></ul><ul><ul><li>arguments.length contém o número de parâmetros transmitidos. </li></ul></ul><ul><li>  </li></ul><ul><ul><li>arguments.calle fornece referência a função, útil para fazer chamadas recursivas. </li></ul></ul>
  22. 22. Exemplo arguments.length <ul><li>function traceArgArray(x:int,y:int, z:int ):void {     for (var i:uint = 0; i < arguments.length; i++) {         trace(arguments[i]);     }     } traceArgArray(1, 2, 3); // output: // 1 // 2 // 3 </li></ul>
  23. 23. Exemplo arguments.callee <ul><li>var fatorial:Function = function (x:uint) {            if(x == 0) {             return 1;     } else {             trace(&quot;x :&quot; , x)             return (x * arguments.callee(x - 1));     } }   trace(&quot;fatorial :&quot;, fatorial(5)); // fatorial : 120 </li></ul>
  24. 24. O parâmetro ... (rest) <ul><li>Permite passar uma grande quantidade de parâmetros separados por virgula. </li></ul><ul><li>  </li></ul><ul><li>function traceArgArray(... args):void {     for (var i:uint = 0; i < args.length; i++) {         trace(args[i]);     } } traceArgArray(1, 2, 3); </li></ul><ul><li>//1 </li></ul><ul><li>//2 </li></ul><ul><li>//3 </li></ul>
  25. 25.   <ul><li>  </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×