A Lógica da programação
5.1 Introdução
5- A Lógica da Programação Neste tópico começaremos a ver em detalhes, a lógica que está
por traz dos programas computacionais. Para tanto vamos, ao
Comandos If-else mesmo tempo, aprender a fazer algoritmos e a colocá-los em
linguagem C.
Unesp – Campus de Guaratinguetá Exemplo 1: Dados os comprimentos dos lados de um triângulo (nas
variáveis LADO1 e LADO2), fazer um algoritmo para determinar e
imprimir o comprimento do terceiro lado (HIPOTENUSA).
Curso de Programação Computadores Suponha que todas as variáveis sejam inteiras.
Profa. Cassilda Ribeiro
hipotenusa ?
lado1
1 lado2 H = (L12+L22)1/2 2
Programa do Exemplo 5 : Continuação Exemplo 6: Fazer um algoritmo que leia uma quantidade de
itens comprados ( HAM, CHE, FRITAS, REFRI, MILK ), bem
como seus custos ( C1, C2, C3, C4, C5 ) e calcule a conta
Ao se executar o programa do exemplo 5, aparece a final. As variáveis relativas a itens comprados são inteiras e as
seguinte tela: variáveis relativas a custo são reais.
Algoritmo Lanchonete
Variáveis: HAM , CHE , C1, FRITAS, REFRI, MILK: inteiro
CONTA, C1, C2, C3, C4, C5, CUSTO1 CUSTO2 CUSTO3 CUSTO4, CUSTO5 : real.
inicio
1.[Ler dados de entrada]
Leia ( HAM , C1 )
Leia ( CHE , C2 )
Leia (FRITAS , C3 )
Leia ( REFRI , C4 )
Leia ( MILK , C5 )
17 18
5.3. Trabalhando com a Linguagem C : Algoritmo do Exemplo 6 5.3. Trabalhando com a Linguagem C : Programa do Exemplo 6
21 22
/*Impressão de resultados*/
printf("===================================\n\n");
printf ("Hamburguer (%f R$) = %f\n",C1,CUSTO1);
printf ("Chesburguer (%f R$) = %f\n",C2,CUSTO2);
printf ("Batatas fritas(%f R$) = %f\n",C3,CUSTO3);
printf ("Refrigerantes (%f R$) = %f\n",C4,CUSTO4);
printf ("Milkshake (%f R$) = %f\n",C5,CUSTO5);
printf ("==================Total = %f\n\n",CONTA);
system("pause");
}
Suponha que temos duas variáveis numéricas, A e B, Em Linguagem Algorítmica a construção Se_Então_Senão
cujos valores são diferentes, e desejamos imprimir a tem o seguinte formato:
maior delas. Se “condição”
Neste caso utilizamos uma construção chamada então “alternativa verdadeira”
Se_Então_Senão senão “alternativa falsa”
Exemplo 7: Continuação.... Exemplo 8: Faça um algoritmo que leia dois valores, determine o maior
deles e o imprima com uma mensagem de identificação. Assumir que
todas as variáveis são inteiras.
3. [Imprimir resultados]
Escreva (´Nome estudante:´, Nome) Algoritmo Mostre
Escreva (´Nota Laboratório:`, Lab) Variáveis: Valor1, Valor2, Max : inteiras 3. [Imprimir o maior valor]
Escreva (´Exame Intermediário:`, Exame_inter) Início Escreva (´Maior Valor =`, Max)
Escreva (´Exame Final`, Exame_final) 1. [Ler os valores] 4. [Terminar]
Escreva ( ´Média Final:`, Média) Leia ( Valor1, Valor2 ) Fim
4. [Verificar se tem aluno reprovado] 2. [Determinar o maior]
Se Media < 5.0 Se Valor1 > Valor2
então Escreva (´Reprovado`) então Max Valor1
Escreva (´O Primeiro valor é maior`)
Fim
senão Max Valor2
29
Escreva (´O Segundo Valor é maior`) 30
5.4.2 Seleção de Ações Alternativas : Ses Encaixados 5.4.2 Seleção de Ações Alternativas : Ses Encaixados
Ex2: Exemplo 10: Uma empresa decidiu dar uma gratificação de Natal
a seus funcionários. Esta gratificação é calculada com base no
Se C1 Se C1 número de horas extras trabalhadas e o número de horas de
então Se C2 então Se C2 falta. A fórmula para se calcular o prêmio é a seguinte:
então S1 então S1 Extra – 2 /3 * Faltas.
O prêmio é distribuído segundo a tabela a seguir:
senão S2 senão S2
Em linguagem C a construção Se – Então - Senão OBS: Quando dentro do comando if, forem executados
é feita através do: mais de um comando (bloco de comando) é
necessário colocar chaves, {}, para marcar o
Comando if inicio e o fim dos comandos a serem executados.
Falso = 0 Aqui tem duas ações
# Sintaxe: Verdadeiro ≠ 0 sendo feitas dentro da
5.4.3 Seleção de Ações Alternativas: O Comando if 5.4.4 Seleção de Ações Alternativas: O Comando else
#include <stdio.h>
Exemplo 11 #include <stdlib.h> O Comando else pode ser considerado um complemento do
main () comando if, cujos comandos serão executados
Fazer um { /* Inicio do programa */ SOMENTE SE a expressão, especificada após o
programa em C int num; comando if, for 0 (falsa).
que leia um printf ("Digite um numero: ");
scanf ("%d",&num);
número e impri- # Sintaxe:
if (num > 10)
ma uma mensa- printf ("\n\n O numero digitado eh maior que 10");
Falso = 0
Verdadeiro ≠ 0
gem dizendo se if (num == 10) { /* Inicio do if */ if (expressão é verdadeira)
ele é maior que printf ("\n\n Voce acertou!\n"); execute comando1 ou bloco1 de comandos
10, menor ou printf ("O numero digitado e igual a 10.");
igual a 10. } /* fim do if*/ else
if (num < 10)
printf ("\n\n O numero digitado eh menor que 10");
execute comando2 ou bloco2 de comandos
Observe a
system("pause");
chave {
}
marcando o
43 44
inicio do if
5.4.4 Seleção de Ações Alternativas: O Comando else 5.4.5 Seleção de Ações Alternativas: if-else encaixados
5.4.6- Exercícios resolvidos - Comando If- else 5.4.6- Exercícios resolvidos - Comando If- else
}
printf( "\nO maior valor eh o C\n" ); continua na página 50
49 50
}
5.4.6- Exercícios resolvidos - Comando If- else 5.4.6- Exercícios resolvidos - Comando If- else
52
5.4.7- Exercícios para Casa - Comando If- else 5.4.7- Exercícios para Casa - Comando If- else
1) Colocar em Linguagem C os algoritmos dos exemplos 8, e 10. 5) Faça um programa que leia dois valores, o primeiro servindo de
2) Fazer um programa em C que leia 4 números (A, B, C, D) e encontre indicador de operação e o segundo correspondendo ao raio
o maior deles. Imprima uma mensagem dizendo qual deles é o maior de uma circunferência. Caso o primeiro valor lido seja igual a
e o valor do maior. 1, calcular e imprimir a área desta circunferência. Se o valor
3) Faça um programa em C que calcule o aumento de salário para o lido for 2, calcular e imprimir o perímetro da circunferência. E
corrente ano. Se salário >1000 o aumento é de 5%. Senão o
aumento é de 7%.
se o valor lido for diferente destes dois valores; imprimir uma
4) Preparar um algoritmo e um programa em C para ler os
mensagem dizendo que o indicador de operação foi mal
comprimentos dos três lados de um triângulo (S1, S2, e S3) e fornecido.
determinar que tipo de triângulo temos, com base nos seguintes
casos. Sejam A o maior dos lados de S1, S2, e S3 e B e C os outros
dois lados. Então: 6) Fazer um programa que: dada a altura e peso de uma pessoa,
Se A ≥ B + C nenhum triangulo é formado calcule seu índice de massa corporal. Fórmula: peso dividido
Se A2 = B2 + C2 um triangulo retangulo é formado, por altura ao quadrado. Faixas: <= 18,5 - abaixo do peso
Se A2 > B2 + C2 um triangulo obtusangulo é formado normal; > 18,5 e <= 25 - peso normal; > 25 e <=30 - peso
Se A2 < B2 + C2 um triangulo acutangulo é formado acima do normal; acima de 30 - peso excessivo.
53 54 54
53
5.4.7- Exercícios para Casa - Comando If- else Resolução Exercícios para Casa (1)
7) Faça um programa que leia dois valores, o primeiro servindo de #include <stdlib.h>
indicador de operação e o segundo correspondendo ao raio de #include <stdio.h> Ex casa 1: Colocar
uma circunferência. Caso o primeiro valor lido seja igual a 1, o exemplo 8 em C
calcular e imprimir a área desta circunferência. Se o valor lido for 2, // Programa: Mostre o maior de 2 numeros
calcular e imprimir o perímetro da circunferência. E se o valor lido main()
for diferente destes dois valores; imprimir uma mensagem dizendo
que o indicador de operação foi mal fornecido.
{
int Valor1, Valor2, Max;
8)Fazer um programa que resolva uma equação de segundo grau, //1. [Ler os valores]
realizando consistências dos valores do discriminante e do printf("Digite dois numeros \n");
coeficiente "a". Caso o discriminante seja negativo, deverá apenas
ser impressa a mensagem: " Esta equação não possui raízes reais" scanf("%d%d",&Valor1,&Valor2 );
. Caso o coeficiente "a" seja igual à zero, deverá ser impressa a //2. [Determinar o maior]
mensagem: " Esta não é uma equação de segundo grau" e deverá
ser fornecido o valor da única raiz. Se o discriminante for maior ou
igual a zero e o coeficiente "a" não for nulo, deverão ser impressas:
if (Valor1 > Valor2)
{ Max = Valor1;
continua
na próxima
"as raízes da equação: ax2 + bx + c = 0 são R1 = xxx e R2 = xxx". printf ("\nO Primeiro valor eh maior\n"); página
55 55 } 56
Resolução Exercício para Casa 1 Resolução Exercício para Casa (8)
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
else main()
{ int a, b, c;
{ Max = Valor2; float delta, raiz1, raiz2;
printf("digite os coeficientes a, b, c da equacao\n");
scanf("%d%d%d",&a,&b,&c);
printf ("\nO Segundo Valor eh maior\n"); if(a==0)
{ printf(" esta equacao eh de 1o. grau\n");
} raiz1= -c/b;
printf(" sua raiz eh: %f \n", raiz1);
//3. [Imprimir o maior valor] }
else
printf("Maior Valor =%d\n\n", Max); { delta=(pow(b,2)-4*a*c);
if(delta >= 0)
//4. [Terminar] { raiz1=(b+sqrt(delta))/(2*a);
raiz2=(b-sqrt(delta))/(2*a);
system("PAUSE"); }
printf("as raizes sao:R1= %f,R2=%f \n",raiz1,raiz2);
else printf("Esta equacao nao possui raizes reais\n");
} }
57
system("PAUSE"); 58
}
Os dados do censo (que ocorre a cada 10 anos) de 1880 Lei de Moore: O fundador da Intel, Gordon Moore, constatou
dos EUA levaram quase 8 anos para serem processados. que a capacidade de processamento dos computadores dobra
Temia-se que os dados do censo de 1890 não estivessem a cada 1 ano, enquanto os custos permanecem fixos.
processados em 1900.
Problema: Imagine que uma tarefa deve ser processada e
Herman Hollerith (estatístico): ? levará 8 anos e que não pode ser movida da máquina uma vez
iniciada. De acordo com a Lei de Moore deve-se esperar a
melhoria dos processadores ou deve-se começar hoje ?
Foi encarregado pela Agência Estatística
dos EUA de desenvolver uma técnica Solução: O senso comum diz que é melhor começar agora,
para acelerar o processamento dos dados ! mas antes de por a mão na massa é bom olhar a Tabela dada
do censo, levando apenas 3 anos. a seguir:
59 60
5.4.8 Aplicação: O paradoxo da inovação 5.4.8 Aplicação: O paradoxo da inovação
Tempo de Tempo de Tempo Forma Geral: O paradoxo da inovação pode ser formulado
Início Desenvolvimento Processamento Total Final de acordo com três parâmetros: tempo de desenvolvimento t,
(anos) (anos) (anos) taxa de aperfeiçoamento a e tempo de processamento p.
1 1 1 1
Quantos dias demora a Terra para dar uma 365,242199 ≅ 365 + − + −
volta completa no Sol ? 65
4 100 400 3300 66
5.4.9 Seleção de Ações Alternativas: Condições Compostas 5.4.9 Seleção de Ações Alternativas: Condições Compostas
1) Suponha que I e J sejam variáveis inteiras com valores 6 2) Assuma que A, B, C e D são variáveis e S1, S2 , S3 e S4 são
e 12, respectivamente. Quais das seguintes condições comandos ou alternativas.
são verdadeiras? a) Usando condições compostas reescreva as instruções
a) 2 * 1 ≤ J abaixo:
Verdadeiro
Se A > B
b) 2 * I – 1 < J Verdadeiro
Então Se B ≤ C
c) I > 0 e I ≤ 10 Verdadeiro então Se C ≠ D
d) I > 25 ou (I < 8 e J > 10) Verdadeiro então S1
senão S2
e) I < 4 ou J > 5 Verdadeiro senão S3
f) Não I > 6 Verdadeiro Senão S4
73 74
5.4.9 Seleção de Ações Alternativas: Condições Compostas 5.4.9 Seleção de Ações Alternativas: Condições Compostas
5.4.9 Seleção de Ações Alternativas: Condições Compostas 5.4.9 Seleção de Ações Alternativas: Condições Compostas
5.4.9 Seleção de Ações Alternativas: Condições Compostas 5.4.10 Seleção de Ações Alternativas: Comando Switch
A palavra expressão indica qualquer avaliação cujo resultado seja Exemplo 17: Estado Civil Programa: Estado Civil
um valor numérico dos tipos char, int ou long. Fazer um programa que leia um #include <stdio.h>
#include <stdlib.h>
caractere ch indicando o estado main ( )
O switch compara o resultado da expressão com o valor de cada civil e imprima uma mensagem de {
constante que segue a cada um dos case. Se o valor não for igual a
acordo com a correspondência: char ch;
nenhuma das constantes apresentadas pelos case, então, são printf (“Qual estado civil: ");
executadas as instruções que seguem o default. scanf ("%c", &ch);
Se (ch = C) Escreva(‘Casado’); switch (ch) {
A utilização do comando default é opcional. Se (ch = S) Escreva(‘Solteiro’); case ‘C’: printf (“Casado \n”); break;
case ‘S’: printf (“Solteiro \n”); break;
Se (ch = D) Escreva(‘Divorciado’);
case ‘D’: printf (“Divorcio \n”); break;
Cada case do switch só pode avaliar uma única constante do tipo Se (ch = V) Escreva(‘Viuvo’); case ‘V’: printf (“Viuvo \n”); break;
char, int ou long
Default Escreva(‘Estado Incorreto’); default: printf(“Est. Inc.”); break;
}//fim switch
Observação importante: Após um comando case ser selecionado, se
não existir o break, todos os cases subseqüentes e suas instruções Não esquecer o break ! system("pause");
85 86
serão executados. }
5.4.10 Seleção de Ações Alternativas: Comando Switch 5.4.10 Seleção de Ações Alternativas: Comando Switch
5.4.11 Exercícios sobre Seleção de Ações Alternativas 5.4.11 Exercícios sobre Seleção de Ações Alternativas
Solução Ex. 2
Ex. 2) Dadas as seguintes informações de um funcionário: #include <stdlib.h>
Nome, Numero funcional, idade, cargo e o seu salário bruto e #include <stdio.h>
considerando que: main()
a) O salário bruto teve um reajuste de 38%. { int num_func, idade;
b) O funcionário receberá uma gratificação de 20% do salário float Sal_Bruto, Reajuste,Sal_liq,GRAT,Desconto;
bruto. char nome[30], cargo[30];
c) O Salário liquido total é descontado em 15% printf("digite o nome do funcionario\n");
gets(nome);
Faça um programa para:
printf("digite o cargo do funcionario\n");
•Imprimir Nome, Numero funcional, idade e cargo. gets(cargo);
•Imprimir o salário bruto. printf("digite o numero funcional\n");
•Imprimir o salário líquido. scanf("%d",&num_func);
printf("digite o valor do salario bruto %s\n",nome);
91 scanf("%f",&Sal_Bruto); 92
5.4.11 Exercícios sobre Seleção de Ações Alternativas 5.4.11 Exercícios sobre Seleção de Ações Alternativas
Solução Ex. 2 - Continuação
Reajuste = Sal_Bruto*0.38;
GRAT = Sal_Bruto * 0.20;
Sal_Bruto = Sal_Bruto+GRAT+Reajuste;
Desconto = Sal_Bruto*0.15;
Sal_liq = Sal_Bruto - Desconto;
printf("\n\n");
printf("Nome:%s cargo:%s No. Funcional:%d\n", nome, cargo,num_func);
printf("===================================================\n");
printf("salario Bruto \t%.2f\n",Sal_Bruto);
printf("Reajuste \t%.2f\n",Reajuste);
printf("Gratificacao \t%.2f\n",GRAT);
printf("Desconto \t%.2f\n",Desconto);
printf("Salario Liquido \t%.2f\n",Sal_liq);
printf("====================================================\n");
system("PAUSE");
} 93 94
5.4.11 Exercícios sobre Seleção de Ações Alternativas 5.4.11 Exercícios sobre Seleção de Ações Alternativas
3) O salário liquido de um professor da rede pública é calculado da Os descontos efetuados são IAMSP, Previdência e Imposto de
seguinte maneira: renda.
Os vencimentos recebidos são: Salário Base inicial (SBI), O desconto relativo ao IAMSP é de 2% e o da previdência é de
Gratificação de representação(GRAT), Qüinqüênio (QUIN) e 11%. Isto é feito sobre o total de vencimentos (SBT),onde:
Sexta parte (SEXT_P). SBT=SBI+GRAT+SEXT_P+QUIN.
A gratificação de representação (GRAT) é paga na sua totalidade O desconto do IR é feito sobre o SBT-IAMSP-PREV-150.69*
para quem está exercendo um cargo de chefia. Se a pessoa não numero de dependentes., de acordo com a tabela abaixo:
está exercendo o cargo de chefia, mas já exerceu, ela recebe
20% do valor total da gratificação para cada dois ano exercido, Base de Cálculo em R$ Alíquota % Parcela a deduzir do imposto em R$
assim se ela exerceu o cargo por 4 anos, ela recebe 20% do valor Até 1499.15 - -
total da gratificação.
De 1499.15 à 2246.75 7.5 112.43
A cada 5 anos a pessoa recebe 5% de aumenta relativo ao
qüinqüênio (QUIN), assim quem está trabalhando a 17 anos De 2246.75 à 2995.70 15.0 280.94
recebe 15% de aumento relativo a 3 qüinqüênios. De 2995,70 à 37432.19 22.5 505.62
Depois de 20 anos de serviço a pessoa recebe mais a sexta parte do Acima de 37432.19 27.5 692.78
salário, calculado do seguinte modo:
84
95 96
SEXT_P= (SBI+QUIN+GR)/6.
5.4.11 Exercícios sobre Seleção de Ações Alternativas 5.4.11 Exercícios sobre Seleção de Ações Alternativas
Isto é, verificar em qual faixa o Para fazer esse programa é necessário começar a pensar em
VALOR=(SBT-IAMSP-PREV-150.69* N_dep) se encaixa. quais variáveis precisam ser criadas. São necessárias as
Por exemplo, se VALOR >= à 3743.19 reais, o imposto a ser seguintes variáveis:
pago será: SBI ⇒ para armazenar o valor do salário inicial
IR = (VALOR*0.275)-692.78. GRAT ⇒ para armazenar o valor da gratificação relativo a cargo de
chefia.
O salário liquido final será: SL=SBT-IAMSP-PREV
QUIN ⇒ para armazenar o valor do acréscimo salarial relativo ao
tempo de serviço
Fazer um programa em C que leia o nome do professor, seu SBT ⇒ para armazenar o valor do salário bruto total. Lembre-se que
cargo, seu salário base inicial, o número de seus SBL=(SBI+GRAT+QUIN+SEXT_P)
dependentes, o tempo de serviço em anos, se está ou não SL ⇒ para armazenar o valor do salário Liquido
exercendo cargo de chefia ou se já exerceu e por quanto
tempo e a seguir calcule e imprima o seu salário bruto, cada SEXT_P ⇒ para armazenar o valor do acréscimo salarial relativo a
sexta parte por 20 anos de serviço
um dos descontos efetuados, o total de descontos e por fim o
salário liquido. IAMSP ⇒ para armazenar o desconto relativo ao iamsp que é de
2% de (SBI+GRAT)
97
PREV ⇒ para armazenar o desconto relativo a previdencia que é de 98
11% de (SBI+GRAT)
5.4.11 Exercícios sobre Seleção de Ações Alternativas 5.4.11 Exercícios sobre Seleção de Ações Alternativas
IR ⇒ para armazenar o valor do imposto de renda a ser pago. Observe que nchefe é uma variável do tipo inteira que está sendo
dividida pelo numero inteiro 2. O resultado dessa divisão é um numero
SL ⇒ para armazenar o valor do salário liquido que é obtido pelo
inteiro. Assim, se a pessoa esteve como chefe por 3 anos, a divisão
SBT-IAMSP-PREV-IR. de nchefe/2 será 1, porque divisão de inteiro por inteiro resulta na
parte inteira da divisão. Neste caso a variável perc_grat será:
Todas essas variáveis devem ser do tipo float porque elas representam perc_grat= 20*(nchefe/2) = 20*(3/2) = 20
dinheiro. E a gratificação será de GRAT=(1046.1*20)/100.0;
Para se calcular o valor da gratificação GRAT será necessário criar
as seguintes variáveis: chefe, nchefe, perc_grat. A variável chefe Para se calcular o valor do aumento relativo aos qüinqüênios (QUIN) é
vai ser lida e seu valor será zero se o funcionário não está necessário calcular o numero de qüinqüênios, para tanto são
exercendo atualmente um cargo de chefia ou 1 caso contrário. Se a necessárias as variáveis nquin, e Temp_serv, ambas do tipo
pessoa estiver exercendo o cargo de chefia, GRAT = 1046.1. Se a inteiro.Temp_serv vai armazenar quantos anos de serviço tem o
pessoa não está exercendo, mas já exerceu cargo de chefia, ela
funcionário, e este valor deve ser lido, isto é o usuário vai fornecer
receberá 20% de 1046.1 R$, a cada 2 anos que esteve como chefe,
e esta porcentagem é armazenada em perc_grat. Então essa via teclado este valor. Deste modo o numero de qüinqüênios será
porcentagem é calculada da seguinte maneira: nquin = Temp_serv/5. Como Temp_serv é inteira e está sendo
perc_grat= 20*(nchefe/2), dividida por 5 inteiro, o valor armazenado em nquin será a parte
inteira divisão. Assim, se Temp_serv=9, nquin = 1. Deste modo o valor
onde nchefe é o numero de anos que a pessoa esteve como chefe. 99 100
5.4.11 Exercícios sobre Seleção de Ações Alternativas 5.4.11 Exercícios sobre Seleção de Ações Alternativas
Do aumento relativo aos qüinqüênios é dado por: Observe que para se calcular a variável valor é necessário ter
QUIN= (SBI+GRAT)*(Nquin*0.05); calculado antes as variáveis:
Observe que antes de se calcular o valor do qüinqüênio foi calculado o
valor da gratificação GRAT. SBT= salário bruto total, IAMSP e PREV
O calculo da Sexta Parte deve ser feito somente após o calculo do O valor do salário liquido será : SL = SBT-IAMSP-PREV-IR;
qüinqüênio, pois a sexta parte é calculada por:
Se o tempo de serviço for maior ou igual 20 anos
SEXT_P=(SBI+GRAT+QUIN)/6.0.. A seguir é apresentado o programa, solicitado, bem como a execução
Senão SEXT_P=0.0 de exemplo.
No calculo do imposto de Renda (IR), serão necessárias as variáveis
Valor, Alíquota, Parcela, todas do tipo float para armazenar
respectivamente, o Valor para se calcular em qual faixa o funcionário
se encontra e assim calcular a Alíquota a ser paga e a Parcela a se
deduzir do imposto. Será necessário também a variável N-dep, do tipo
int para armazenar o numero de dependentes do funcionário. Este
numero deve ser lido. A variável valor será calculada por:
Valor = SBT-IAMSP-PREV-150.69*N_dep; 101 102
5.4.11 Exercícios sobre Seleção de Ações Alternativas 5.4.11 Exercícios sobre Seleção de Ações Alternativas
#include <stdlib.h> Solução Exercício 3 - Continuação
#include <stdio.h>
Solução Exercício 3
main()
printf("O funcionario em questao esta exercendo algum cargo de chefia?\n");
{ int N_dep, Nquin, Temp_serv,chefe, nchefe, perc_grat;
printf("digite 1 para sim e zero para nao\n");
float SBI,SBT, Valor, QUIN, SEXT_P, IAMSP, PREV,IR,SL;
scanf(" %d",&chefe);
float GRAT, Aliquota, Parcela; //Calculo da gratificação
char nome[30], cargo[30];
if(chefe==1)
printf("digite o nome do funcionario\n");
GRAT=1046.1;
gets(nome);
else
printf("digite o cargo do funcionario\n");
{ nchefe=0;
gets(cargo);
printf("Se o funcionario exerceu no passado algum cargo de chefia,\n digite o
printf("digite o valor do salario base inicial do %s\n",nome);
numero de anos.\n");
scanf("%f",&SBI);
scanf("%d",&nchefe);
printf("digite o numero de dependentes do %s\n", nome);
perc_grat= 20*(nchefe/2);
scanf("%d",&N_dep);
GRAT=(1046.1*perc_grat)/100.0;
printf("digite o tempo de servico do %s\n", nome);
103
} 104
scanf("%d",&Temp_serv);
5.4.11 Exercícios sobre Seleção de Ações Alternativas 5.4.11 Exercícios sobre Seleção de Ações Alternativas
//Calculo do IR
Solução Exercício 3 - Continuação Valor = SBT-IAMSP-PREV-150.69*N_dep;
if( Valor< 1499.15)
// Calculo do quinquenio { Aliquota=0;
Nquin= Temp_serv/5; Parcela=0;}
else if( Valor< 2246.75) Solução Exercício 3 - Continuação
QUIN= (SBI+GRAT)*(Nquin*0.05);
{Aliquota=0.075;
// Calculo da Sexta Parte.
Parcela=112.43;}
if(Temp_serv >= 20) else if( Valor< 2995.7)
SEXT_P=(SBI+GRAT+QUIN)/6.0; {Aliquota=0.15;
else SEXT_P=0.0; Parcela=280.94;}
// Calculo do Salario bruto total else if( Valor< 3743.19)
SBT=(SBI+GRAT+QUIN+SEXT_P); {Aliquota=0.225;
//calculo dos descontos IAMSP, PREV Parcela=505.62;}
IAMSP=SBT*0.02; else
PREV=SBT*0.11; {Aliquota=0.275;
Parcela=692.78;}
IR=(Valor*Aliquota)-Parcela;
105 106
SL = SBT-IAMSP-PREV-IR;
Fim do if
Este material foi
desenvolvido por: Aníbal
Tavares de Azevedo e
Cassilda Maria Ribeiro
109