Baixe o app para aproveitar ainda mais
Prévia do material em texto
APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 1/1 II. CONSTRUÇÕES DA LÓGICA DE PROGRAMAÇÃO ESTRUTURADA Memória e reconhecimento humanos ��Capacidade de reconhecer padrões como um todo. Ex. reconhecimento de um rosto ��Capacidade de perceber o próximo elemento em uma seqüência Estas características psicológicas do ser humano afetam as características de Linguagens de Programação: ��Localidade : blocos – seqüência de instruções organizadas num conjunto (um todo) com significado próprio; ��Linearidade : A percepção humana é facilitada quando uma seqüência linear de operações lógicas é encontrada. Estruturas de laços e “braços” muito extensos, causados por desvios condicionais, violam a linearidade de um processo. Os processos de análise, projeto e programação estruturados visam gerar um procedimento de desenvolvimento de software que faz uso da capacidade natural humana de reconhecer padrões e utilizar estruturas lógica adequadas para facilitar a implementação com características de localidade e linearidade. É possível mostrar que 3 estruturas são suficientes para desenvolver programas estruturados. II.1. ESTRUTURA SEQÜENCIAL Conjunto de ações primitivas que serão executadas numa seqüência linear, ou seja, na mesma ordem em que foram escritas. A representação básica num diagrama de blocos é: APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 2/2 No caso de uma linguagem natural estruturada, a representação é exatamente a indicada na definição, ou seja, uma seqüência de instruções primitivas, executadas de cima para baixo. As instruções, em nosso caso, serão terminadas com o símbolo “;”. Na linguagem Pascal as instruções também são terminadas com o símbolo “;”. II.2. ESTRUTURA CONDICIONAL (OU DE DECISÃO) Utilizada para definir se um bloco deve ou não ser executada, dependendo do resultado de uma condição. Para efeito didático, vamos dividir as estruturas condicionais em três, na ordem de aumento de complexidade. II.2.1. Estrutura condicional simples Utilizada para definir se um bloco de instruções deve ou não ser executado. Representação em diagrama de blocos: Representação em linguagem natural estruturada: Bloco de instruções executados se a condição for verdadeira condição Bloco de instruções executados quer a condição seja verdadeira ou falsa S N se (condição) então: Bloco de instruções para condição verdadeira fim_se Sintaxe na linguagem de programação Pascal if condição then begin Bloco de instruções para condição verdadeira; end APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 3/3 Sintaxe na linguagem de programação C if (condição ) { bloco de instruções, cada uma terminada por um símbolo “;” } II.2.2. Estrutura condicional composta Utilizada para definir qual bloco de instruções deve ser executado. Representação em diagrama de blocos: Representação em linguagem natural estruturada: Bloco de instruções executadas se a condição for verdadeira condição Bloco de instruções executados quer a condição seja verdadeira ou falsa Bloco de instruções executadas se a condição for falsa S N se (condição) então: Bloco de instruções para condição verdadeira senão Bloco de instruções para condição falsa fim_se Sintaxe na linguagem de programação Pascal if condição then begin bloco de instruções para condição verdadeira end else begin bloco de instruções para condição falsa end; (* Note o uso do símbolo “;” para indicar o fim do comando *) APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 4/4 Sintaxe na linguagem de programação C If (condição) { /* inicio do bloco executado se condição verdadeira*/ bloco de instruções para condição verdadeira } /* fim do bloco executado se condição verdadeira*/ else { /* inicio do bloco executado se condição falsa*/ bloco de instruções para condição falsa } /* fim do bloco executado se condição falsa*/ II.2.3. Estrutura condicional encadeada ou aninhada Permite agrupar várias alternativas de forma a inspecionar uma ou mais condições. Utilizada para definir qual bloco de instruções, de um conjunto finito, deve ser executado, dependendo da alternativa satisfeita. Representação em diagrama de blocos: Representação em linguagem natural estruturada: Bloco de instruções executadas se a condição for verdadeira condição 1 Bloco de instruções executados quer a condição seja verdadeira ou falsa S N Bloco de instruções executadas se a condição 2 for verdadeira e a condição 1 falsa condição 2 Bloco de instruções executadas se a condição 2 for falsa e a condição 1 falsa S N se (condição 1) então: Bloco de instruções para condição 1 verdadeira senão se (condição 2) então: Bloco de instruções para condição 2 verdadeira mas com condição 1 falsa senão Bloco de instruções para condição 2 falsa e condição 1 falsa fim_se fim_se APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 5/5 Sintaxe na linguagem de programação Pascal if condição1 then begin (* inicio do bloco executado se condição 1 verdadeira*) bloco de instruções executadas se condição 1 é verdadeira end (* fim do bloco executado se condição verdadeira*) else begin (* inicio do bloco executado se condição 1 é falsa*) if condição2 then begin (* inicio do bloco executado se condição 2 verdadeira *) bloco de instruções executadas se condição 2 é verdadeira e a condição 1 é falsa end (* fim do bloco executado se condição 2 verdadeira*) else begin (* inicio do bloco executado se condição 2 é falsa*) bloco de instruções executadas se ambas as condições 2 e 1 são falsas end; /* fim do bloco executado se condição 2 é falsa*/ end; /* fim do bloco executado se condição 1 é falsa*/ Sintaxe na linguagem de programação C if (condição 1) { /* inicio do bloco executado se condição 1 verdadeira*/ bloco de instruções executadas se condição 1 é verdadeira } /* fim do bloco executado se condição verdadeira*/ else { /* inicio do bloco executado se condição 1 é falsa*/ if (condição 2) { /* inicio do bloco executado se condição 2 verdadeira*/ bloco de instruções executadas se condição 2 é verdadeira e a condição 1 é falsa } /* fim do bloco executado se condição 2 verdadeira*/ else { /* inicio do bloco executado se condição 2 é falsa*/ bloco de instruções executadas se ambas as condições 2 e 1 são falsas } /* fim do bloco executado se condição 2 é falsa*/ } /* fim do bloco executado se condição 1 é falsa*/ APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 6/6 A estrutura condicional encadeada apresentada acima pode ser substituída por uma forma mais compacta, denominada alternativa de múltiplaescolha. Sua representação é apresentada a seguir: Representação em diagrama de blocos: expressão Bloco de instruções executadas se a expressão é igual à constante C1 Bloco de instruções executadas se a expressão é igual à constante C2 C1 C2 Bloco de instruções executadas se a expressão é igual à constante Cn Bloco de instruções executadas se a expressão é igual à constante Cn-1 Cn Cn-1 . . . Representação em linguagem natural estruturada: caso (expressão) igual a: C1: Bloco de instruções para expressão igual a C1 C2: Bloco de instruções para expressão igual a C2 Cn-1: Bloco de instruções para expressão igual a Cn-1 Cn: Bloco de instruções para expressão igual a Cn fim_caso; APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 7/7 Sintaxe na linguagem de programação Pascal case expressão of C1: (* inicio do bloco executado se a expressão resulta valor igual ao da constante C1 *) begin bloco de instruções executadas se a expressão resulta valor igual ao da constante C1 end ; (* fim do bloco *) C2: (* inicio do bloco executado se a expressão resulta valor igual ao da constante C2 *) begin bloco de instruções executadas se a expressão resulta valor igual ao da constante C2 end ; (* fim do bloco *) Cn-1: (* inicio do bloco executado se o valor da expressão é igual ao da constante Cn-1 *) begin bloco de instruções executadas se o valor da expressão é igual ao da constante Cn end ; (* fim do bloco *) end; (* fim do bloco case*) Sintaxe na linguagem de programação C switch (expressão) { /* início do bloco switch */ case C1: bloco de instruções executadas se a expressão resulta valor igual ao da constante C1 break; /* interrompe a execução do bloco switch */ /* se a instrução break não é utilizada, a execução continua na */ /* primeira instrução executável do bloco do case C2! */ case C2: bloco de instruções executadas se a expressão resulta valor igual ao da constante C2 break; case Cn-1: bloco de instruções executadas se o valor da expressão é igual ao da constante Cn-1 break; case Cn: bloco de instruções executadas se o valor da expressão é igual ao da constante Cn break; default : bloco de instruções executadas se o valor da expressão não coincide com nenhuma das constantes anteriores. Este rótulo é opcional! } /* fim do bloco switch-case */ APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 8/8 II.2.4. Operadores condicionais (relacionais e lógicos) Em Pascal: RELACIONAIS LÓGICOS = (igual) <> (diferente) <= (menor ou igual) AND / and (e) < menor > maior >= maior ou igual OR / or (ou) IN (contido em – conjunto) NOT / not (negação) Em C ( e C++): RELACIONAIS (binários) LÓGICOS = =(igual) != (diferente) <= (menor ou igual) && (e – binário) < menor > maior >= maior ou igual || (ou – binário) ! (negação - unário) APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 9/9 II.3. ESTRUTURAS DE REPETIÇÃO (OU LAÇO) II.3.1. Estrutura com teste lógico no início do laço (Enquanto) Permite executar um bloco repetidas vezes, desde que uma condição seja previamente satisfeita. Representação em diagrama de blocos: Representação em linguagem natural estruturada: Bloco de instruções executadas enquanto a condição for verdadeira condição Bloco de instruções executadas após a condição não ser satisfeita S N enquanto (condição) faça: Bloco de instruções para condição verdadeira fim_enquanto Sintaxe na linguagem de programação Pascal while expressão lógica do begin bloco de instruções executadas enquanto a expressão lógica for avaliada como verdadeira end; Sintaxe na linguagem de programação C while (expressão lógica) { /* inicio do bloco executado se condição verdadeira*/ bloco de instruções executadas enquanto a expressão lógica for avaliada como verdadeira } /* fim do bloco */ APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 10/10 II.3.2. Estrutura com teste lógico no fim do laço (Repita) Também permite executar um bloco repetidas vezes, mas, diferente do caso com teste lógico no início do laço, o bloco é executado pelo menos uma vez. Outra questão importante é a diferença de comportamento deste tipo de estrutura nas linguagens de programação Pascal e C. O leitor deve estar muito atento a estas diferenças. Representação em diagrama de blocos (conforme a linguagem Pascal) Representação em linguagem natural estruturada (conforme a linguagem Pascal): Bloco de instruções executadas enquanto a condição for falsa condição S N Bloco de instruções executadas a partir do momento em que a condição é verdadeira repita Bloco de instruções ate que expressão lógica Sintaxe na linguagem de programação Pascal repeat bloco de instruções executadas enquanto a expressão lógica for avaliada como falsa until expressão lógica; APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 11/11 Representação em diagrama de blocos (conforme a linguagem C) Representação em linguagem natural estruturada (conforme a linguagem C): Bloco de instruções executadas enquanto a condição for verdadeira condição S N Bloco de instruções executadas a partir do momento em que a condição é falsa repita Bloco de instruções enquanto expressão lógica Sintaxe na linguagem de programação C do { /* inicio do bloco */ bloco de instruções executadas enquanto a expressão lógica for avaliada como verdadeira } while (expressão lógica); /* fim do bloco */ II.3.3. Estrutura com variável de controle (Para) Nas estruturas de repetição apresentadas anteriormente, a execução de um bloco é repetida enquanto uma expressão lógica é verdadeira ( ou falsa no caso da estrutura repeat – until do Pascal). Portanto, o número de vezes que o bloco é executado não está definido a priori. As estruturas de repetição com variável de controle permite executar um certo bloco um número definido de vezes. O controle do número de repetições é feito automaticamente por meio de uma variável de controle, a qual é atualizada (incrementada ou decrementada) após cada execução do bloco. Representação em diagrama de blocos: Representação em linguagem natural estruturada: para <var_controle> de <início> até <n_rep> passo <incremento> faça Bloco de instruções repetido até que var_controle seja igual a n_rep APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 12/12 fim_para Sintaxe na linguagem de programação Pascal for var_controle := inicio to final do beginbloco de instruções executadas enquanto a expressão lógica for avaliada como verdadeira end; Sintaxe na linguagem de programação C/C++ for (instruções de inicialização; expressão lógica; instruções iterativas) { /* inicio do bloco executado se condição verdadeira*/ bloco de instruções executadas enquanto a expressão lógica for avaliada como verdadeira } /* fim do bloco */ Instruções de inicialização : são instruções executadas uma única vez, antes da primeira estimativa da expressão lógica. Expressão lógica : Se a expressão é avaliada verdadeira, o bloco de instruções é executado. Instruções de iterativas : são executadas após o conjunto de instruções contidas no bloco for. A instrução de repetição com variável de controle em linguagem C/C++ é muito poderosa, podendo ser utilizada de forma mais ampla do que o possível com a estrutura simlar da linguagem Pascal. Informação adicional sobre esta instrução e sua sintaxe em linguagem C/C++ será fornecida em capítulo posterior. APOSTILA : LINGUAGENS DE PROGRAMAÇÃO C E C++ Prof. Angelo Passaro página 13/13 BIBLIOGRAFIA BÁSICA HARRY, Farrer et al.; Programação estruturada de computadores: algorítmos estruturados; Guanabara, 1986. HARRY, Farrer et al.; Programação estruturada de computadores: Pascal estruturado; Guanabara, 1985 BIBLIOGRAFIA COMPLEMENTAR Tremblay, JEAN Paul & BUNT, Richard B.; Ciência dos computadores - Uma abordagem algorítmica; McGraw-Hill, 1988. CHEZZI, Carlo & JAZAYERI, Nedhi; Conceitos de linguagens de programação; Campus, 1985.
Compartilhar